Приложение 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С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

08.06.2023    9625    0    Infostart    0    

67

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

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

2880 руб.

03.12.2018    58689    192    103    

172

SALE! 25%

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

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

13200 9900 руб.

27.12.2021    37303    100    161    

193

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    106029    307    173    

322

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

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

12000 руб.

26.01.2016    69815    79    1    

103

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 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    96102    564    187    

316

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4318    1    0    

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

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

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

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

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

Тем более в OpenCV они достаточно давно есть.
8. informa1555 2712 28.06.18 15:12 Сейчас в теме
(7) Она может найти обученный объект на любом фоне если знает что искать. У приведенных алгоритмов те же проблемы с фоном
9. bayce 47 13.09.18 11:01 Сейчас в теме
Добрый день,
Можно ли использовать программу для промышленного применения?
10. informa1555 2712 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 2712 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 Сейчас в теме
К чему это если нет исходного кода ? Смотреть красивые картинки ? Что несет ваша публикация , информацию о том что такое существует или рекламму ?
Оставьте свое сообщение