Распознавание чисел: Общие сведения
Перед тем как мы приступим к созданию нашего собственного робота-курьера с искусственным интеллектом, используя Кварки, давайте разберёмся с некоторыми понятиями, которые касаются распознавания объекта.
Всем роботам-курьерам нужно определить, где они находятся и достигли они места назначения или нет. Именно это мы и сделаем, используя распознавание чисел.
Как ты видишь, на поле у нас есть 3 контрольных точки, которые мы обозначили числом – 1, 2 и 3. Для обозначения этих контрольных точек, мы использовали карточки с числами. Мы используем этот метод для определения места нахождения робота.
Установка крепления для смартфона
Но как вы уже заметили, мы обнаружим эти числа при помощи нашего смартфона, установленного на робота.
Давайте посмотрим, как это можно сделать.
- Чтобы установить кронштейны для смартфона, для начала закрепим их на передней кромке Кварки. После того как мы закрепили кронштейн для смартфона спереди, нажимаем на него сзади.
- Устанавливаем замок кронштейна для смартфона горизонтально поперёк кронштейна.
- Поместите свой смартфон на кронштейны горизонтально или вертикально (используя резинку, чтобы закрепить его).
А теперь давайте посмотрим, как мы сможем распознать эти карточки, используя основную камеру смартфона.
Настройка камеры
Чтобы настроить камеру на распознание чисел, сделайте следующее:
- На своём смартфоне откройте PictoBlox. Нажмите на кнопку Settings (Настройки).
- Нажмите на вкладку Video (Видео). Разрешите приложению PictoBlox делать снимки и записывать видео.
- По умолчанию выбранной камерой будет фронтальная камера. Нужно нажать на ниспадающее меню, чтобы получить список всех камер, доступных на устройстве.
- Выберите основную камеру.
- Нажмите на стрелочку Back (Назад) и вернитесь в PictoBlox. Нажмите на Add Extension (Добавить расширение) и добавьте расширение Autonomous Driving (Автономное движение).
- Добавьте блок when flag clicked из панели Events (События) в раздел для программирования.
- Затем добавьте блок turn () video on stage with () % transparency (включить_видео с_% прозрачностью) из расширения Autonomous Driving (Автономное движение) и выберите on flipped (перевёрнутый) из ниспадающего меню. Это включит основную камеру на смартфоне.
Нажмите на зелёный флажок, и основная камера должна запуститься. Прежде чем приступить к дальнейшей работе, убедись, что эта часть работает.
Распознавание чисел – Понимание логики
Для распознавания чисел, мы будем использовать камеру смартфона. Логика здесь довольно простая. Мы поставим произвольное число напротив камеры, и затем PictoBlox распознает, какое же это число. Точность, с которой это приложение распознает число, зависит от так называемой confidence (достоверности).
Confidence (достоверность) говорит нам, насколько уверена машина в том объекте, который она распознала. Например, PictoBlox распознал число 1 и его достоверность 0,6. Это значит, что приложение на 60% уверено, что распознанный им объект – это число 1. Точность распознавания объекта зависит от значения достоверности. Чем выше это значение, тем больше достоверность.
Однако при установленном высоком значении достоверности распознавание объектов затрудняется, особенно если они расположены далеко от камеры. И в этом его недостаток.
Мы также не можем сохранять значение достоверности слишком низким. В этом случае, машина может распознать другой объект или несколько объектов за раз!
Поэтому нам нужно выбрать значение, которое будет не слишком низким и не слишком высоким. Для этого проекта мы используем достоверность равной 0,6.
А теперь давай напишем программу для распознавания чисел.
Напишем код!
Для написания этой программы будем использовать приложение PictoBlox.
- Продолжим последний скрипт.
- Добавим блок () bounding box (_ограничительная рамка) Таким образом будет появляться квадратная рамка каждый раз, когда распознаётся карточка с числом.
- Далее добавим блок set detection threshold to () (установить порог распознавания). Значение по умолчанию – 0,8. Мы установим – 0,6.
- Оставшаяся часть программы будет посвящена распознаванию чисел. Поэтому, мы зациклим её. Для этих целей мы используем блок forever (всегда). Из Панели управления выбираем блок forever (всегда).
- Внутри блока forever (всегда) выбираем блок analyse image from () (анализ изображения из_). Этот блок будет распознавать и анализировать объекты, которые видит камера.
- Теперь добавляем блок say () (произнеси_) из панели Looks (Вид), и внутри неё добавляем блок () of object () (_объекта_) из расширения Autonomous Driving (Автономное передвижение). Этот блок скажет нам, какое число было распознано.
- Теперь давайте добавим систему обратной связи, чтобы проверить распознано ли число 1. Добавим блок if-else из панели Control (Управление), и внутри белого поля блока введи is number () detected ? (Число_распознано?) из расширения Autonomous Driving (Автономное передвижение). Выберим число 1 из ниспадающего меню.
- Если PictoBlox распознаёт правильное число, тогда пусть светодиоды Кварки загорятся зелёным. Добавим блок display matrix as () (отображать матрицу как_) в ветку if из панели Display (Отображение) и зададим зелёный цвет.
- Если PictoBlox распознаёт неправильное число, тогда пусть светодиоды Кварки загорятся красным. Добавим ещё один блок display matrix as () (отображать матрицу как_) в ветку else и зададим красный цвет.
А теперь можно запустить программу, нажав на зелёный флажок.
Также можно проверить другие условия, как, например, когда робот распознаёт число 1 из множества карточек:
Прежде чем перейти к следующей теме, убедись, что всё работает.