Приложение Android для идентификации/распознавания образов (с обучением с одного раза, One-Shot Learning) с возможностью работы с 1С через веб-сервис

19.06.18

Разработка - Мобильная разработка

В данной статье описано приложение, алгоритм и методика распознавания изображений, предоставляющее посредством http-запросов информацию о распознанных объектах в 1С. В качестве примера интеграции прилагается конфигурация, реализующая веб-сервис для приема запросов от приложения.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
база с веб-сервисом и обработкой приема сообщений от приложения
.dt 33,42Kb
5
5 Скачать (1 SM) Купить за 1 850 руб.

Введение

Я хочу представить вам результат своих экспериментов с алгоритмами распознавания образов с обучением с первого раза (так называемый One Shot Learning). В результате экспериментов выработались определённые подходы к структуризации изображения и в итоге они воплотились в несколько взаимосвязанных алгоритмов и рабочее приложение на Android которое уже можно использовать для работы совместно с решениями на 1С посредством приема HTTP-запросов от приложения.

Ссылка на приложение: https://play.google.com/store/apps/details?id=ru.travelfood.bitmaps

Моя цель была создать алгоритм с понятным принципом работы который может найти абстрактные зависимости в картинке с первого раза (обучиться) и показать приемлемое качество распознавания (поиска подобных абстрактных зависимостей) на последующих циклах распознавания. По сути цель алгоритма структурировать изображение чтобы его можно было распознавать как к примеру штрих-код, т.е. идентифицировать предметы без использования штрих-код или иных меток

Как это устроено

Основная идея такая: изображение- образец должно быть структурировано, т.е. информация в нем должна быть уменьшена до необходимого минимума, но так чтобы не терялся смысл. Например художники рисуют скетчи – всего в несколько точных линий художник может изобразить лицо человека или какой то предмет и зрителю будет понятно что изображено. Фотография содержит матрицу N*M пикселей каждый пиксель содержит сколько то бит информации о цвете, а если представить это все в виде параметров линий то объем информации резко уменьшается и обработка такой информации гораздо проще. Примерно тоже самое должен делать алгоритм. Он должен выделить главные детали в кадре – то что несет в себе основную информацию и отбросить все лишнее.

Алгоритм находит структуру векторов по границам объектов в образце и такую же структуру в распознаваемом изображении. Для того чтобы получить вектора изображение проходит несколько стадий обработки

  • Переводится в монохром по простой формуле (Red+Green+Blue)/3
  • Вычисляется градиент для каждой точки матрицы
  • Находятся наиболее значимые в весовом отношении области градиента
  • Ищутся цепочки векторов, покрывающих эти области
  • Далее происходит зацикливание шагов для получения в итоге минимального количества векторов несущих в себе максимум информации.

 

В анализируемом алгоритме происходит тоже самое. Далее полученные массивы векторов сравниваются:

Сначала алгоритм пытается зацепиться за какие то похожие части (локальные кластеры). Например он может найти бровь похожую на бровь в образце, а потом найти нос, похожий на нос.

А потом ищется уже похожее взаимосвязь между локальными кластерами. Например бровь + нос + еще бровь. Уже получается более сложный кластер.

И т.д. пока не получится картина из отношений между кластерами которая соберет в себе все или почти все векторы изображения. Т.е. например из бровей, глаз, носа и т.д. не получится лицо.

Таким образом маленькие детальки входят в общую картину и происходит лавинообразное распознавание распознавание (узнавание) образа. 

Сама классификация построена по принципу поиска наиболее похожего изображения из хранимых. Наиболее похожее – это имеющее наибольшее количество совпадающих векторов с наименьшими отклонениями по отношению к общему объему векторов в образце.

Обучение в несколько этапов

Не смотря на то что алгоритм может эффективно работать с одного образца, имеется возможность повышать точность распознавания, анализируя несколько образцов. Это не реализовано в данной версии, поэтому я просто расскажу про такую возможность, это очень просто. Принцип обучения на нескольких образцах заключается в отбрасывании лишних векторов. Лишние – это те которые не вошли во взаимно найденный кластер векторов. Например на образце может быть тень, которая распознается как граница, а на следующем образце ее может не быть.

Таким образом если вектор входим в состав кластера который найден в сохраненном образце и в анализируемом то он получает +1 балл, а если нет то ничего не получит. Спустя нескольrо обучений вектора которые набрали мало баллов удаляются из сохраненного образца и более не используются для анализа.

Почему не нейросети?

Приведу несколько причин против нейросетей:

  1. Требуются большие датасеты для обучения, которых может просто не быть в распоряжении. Т.е. например имеется один образец или его изображение и сразу же система должна начать его распознавать
  2. Большие мощности для обучения. Если помножить на большой размер классификатора то требуются серьёзные вычислительные мощности
  3. Непрозрачность алгоритма, невозможность отладки и прямого влияния на результат. Очень сложно если не сказать невозможно понять логику распределения весов. Это и сила и слабость.

Работа приложения и связь с 1С

Приложение работает с матрицей 100*100 пикселей, преобразует картинку к монохромной матрице такого размера. Алгоритму не важно под каким углом находится образец и его размеры в некоторых пределах тоже.

Принцип работы с приложением такой: показывается один образец, после чего его нужно как то обозвать и сохранить, потом показывается следующий(в этот момент он уже пытается найти что то похожее и это может выглядеть как полная чушь – это нормально в процессе наполнения классификатора) и т.д. с каждым образцом Т.е. в памяти приложения храниться база классификатора. После того как все образцы по 1 разу показаны и сохранены можно проверять распознавание.

Слева показывается результат выделения значимых областей текущего изображения и совпадающие векторы в нем (зеленым цветом), а справа показываются структуры векторов найденная и наиболее подходящая из сохраненных и красным цветом выделены похожие вектора на сохраненной структуре. Таким образом красным и зеленым цветом подсвечены структуры векторов которые алгоритм считает похожими.

Можно сохранить несколько образцов. И показывая новое изображение алгоритм найдет наиболее подходящее из них и покажет похожие части.

Для связи с 1С или другими программами приложение отправляет GET-запрос на адрес указанный в настройках. По сути он добавляет наименование распознанного изображения к строке запроса.

В настройках должен быть адрес с ключом параметра в таком виде

[АдресВашегоСервиса]/hs/oneshot/result/?res=

Например http://192.168.1.4:2312/testws/hs/oneshot/result/?res=

Для демонстрации приложена тестовая база, в которой реализован веб-сервис и обработка для показа сообщений веб-сервиса. Ну и работа всего этого вместе такая – делается снимок в приложении, распознается и посредством веб сервиса выводится сообщение в 1С:

 

Для чего может применяться

Применение алгоритма обусловлено его возможностями и ограничениями. Этот алгоритм ближе к линейным алгоритмам чем нейросети, следовательно уровень абстракции его ниже. Но это компенсируется простотой обучения и предсказуемостью результата.

Я вижу его применение для идентификации промышленных объектов, товаров и сырья требующих идентификации. Например сканирование продукции на производственной линии. Также например это может быть сканирование объектов на которые нельзя или нерентабельно наносить штрих-коды или другие метки.

Также естественно этот алгорим может применяться для любых задач классификации и распознавания для которых применяются другие алгоритмы распознавания. Например для распознавания лиц

В данный момент работа над улучшением алгоритма и приложением продолжается. Не смотря на то что он сейчас показывает достаточно хорошее качество распознавания он пока не вполне готов к промышленной эксплуатации. В частности планируется добавить потоковую обработку изображения, повысить быстродействие.

компьютерное зрение one-shot learning распознавание образов

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38845    109    163    

203

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    107693    313    173    

326

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    59699    194    103    

173

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    97995    592    189    

323

Учет документов Распознавание документов и образов Бухгалтер Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Расширение для типовых конфигурация и для самостоятельной интеграции системы распознавания документо удостоверяющих личность и прочих документов непосредственно из информационных баз "1С:Предприятия 8.3" с помощью Content AI - Passport Reader SDK. Расширение позволит не изменяя типовой код конфигурации, расширить текущий функционал несколькими кликами мыши.

12000 руб.

26.01.2016    70070    79    2    

103

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Вашему вниманию предлагается специализированное программное обеспечение для терминалов сбора данных со встроенным сканером штрихкода. Предназначено для цифровизации всех товароучетных операций на любых складах, в том числе с адресным хранением различной сложности. Позволяет ускорить и упростить работу кладовщиков, а также снизить вероятность ошибок при работе, обусловленных человеческим фактором.

3450 руб.

28.04.2023    9720    15    1    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. efin 19.06.18 13:02 Сейчас в теме
Как раз интересуюсь распознаванием образов.

Есть задача классифицировать фотографии/сканы документов - есть куча фоток, нужно разложить их по полям документа: фото клиента, скан паспорта, фото накладной и т.п.

Подскажите, пожалуйста, тут подойдет описанная Вами методика?
6. informa1555 2719 19.06.18 17:57 Сейчас в теме
(1) ну не совсем. Просто инфраструктуры нет под это в приложении
2. efin 19.06.18 13:08 Сейчас в теме
И, собственно, первый вопрос после прочтения статьи - где сам алгоритм распознавания? в 1Сной базе? в мобильном приложении? В неком внешнем веб-сервисе?
5. informa1555 2719 19.06.18 17:55 Сейчас в теме
(2) все в самом приложении. Силами устройства
3. Сурикат 401 19.06.18 14:57 Сейчас в теме
А почему не использовали напрямую дескрипторы?
Бинаризация не всегда может выполняться корректно ...

На картинках у вас идеальное разделение фон/объект. В жизни это почти не встречается
4. informa1555 2719 19.06.18 17:54 Сейчас в теме
(3) так у меня приложение собственно само и готовит изображение. В смысле проводит нормализацию
7. Сурикат 401 19.06.18 21:08 Сейчас в теме
Ваше приложение сможет определить машину во дворе?
Маловероятно, т.к. отделить фон от интересующего объекта сложно.

Например, используя SIFT или SURF дескрипторы можно эту проблему порешать.
https://www.youtube.com/watch?v=Z3OVMm1knwo как пример.

Тем более в OpenCV они достаточно давно есть.
8. informa1555 2719 28.06.18 15:12 Сейчас в теме
(7) Она может найти обученный объект на любом фоне если знает что искать. У приведенных алгоритмов те же проблемы с фоном
9. bayce 48 13.09.18 11:01 Сейчас в теме
Добрый день,
Можно ли использовать программу для промышленного применения?
10. informa1555 2719 15.09.18 09:36 Сейчас в теме
(9) Здравствуйте! Да можно - там нет каких либо ограничений для использования, включая юридические. Если она вам подходит, используйте пожалуйста. Я использую отдельную сборку из которой выкинул лишние слои алгоритма для повышения скорости , "загрубления" и заточку под конкретный набор изображений.
11. user1089784 15.11.18 08:45 Сейчас в теме
Добрый день,
Существует производственная задача определения количества профилей в упаковке, часто упаковщики недокладывают или перекладывают лишнего. Скажите пожалуйста, ваше приложение может распознавать одинаковые образы (профили) и выдавать их количество?
12. borman 78 07.12.18 12:10 Сейчас в теме
Добрый день! Есть желание заказать индивидуальную разработку, будьте добры, напишите мне в личку, а то по новым правилам сайта я не могу первым начать переписку. Спасибо
13. izidakg 172 24.06.19 16:18 Сейчас в теме
можно еще раз для тех кто не понял?
приложенный dt файл содержит опубликованное приложение или это только связка с ним?
14. informa1555 2719 24.06.19 17:15 Сейчас в теме
(13) Не, приложуха сама есть в гугл-плее. А тут просто веб-сервис на 1С который принимает от нее идентификаторы распознанных образов
15. izidakg 172 25.06.19 00:02 Сейчас в теме
(14) а исходниками приложения делитесь?
16. boss_kuz 106 30.05.21 08:45 Сейчас в теме
К чему это если нет исходного кода ? Смотреть красивые картинки ? Что несет ваша публикация , информацию о том что такое существует или рекламму ?
Оставьте свое сообщение