У меня возникла интересная дискуссия, основанная на проекте, над которым мы работали: зачем использовать систему визуального осмотра CNN поверх алгоритма сопоставления шаблонов?
Справочная информация: я продемонстрировал демонстрацию простой системы видеонаблюдения CNN (веб-камера + ноутбук), которая обнаружила, был ли объект определенного типа «сломан» / неисправен или нет - в данном случае это печатная плата на печатной плате. На моей модели CNN были показаны примеры правильных и разорванных плат (около 100 изображений на каждой) на статическом фоне. В нашей модели использовались первые несколько слоев conv / maxpool предварительно обученного VGG16 (на imagenet), а затем мы добавили еще несколько обучаемых конвусов / пулов с несколькими денсами, что привело к получению горячего кодированного вектора dim-3 с одним горячим кодированием для классификации. : (is_empty, has_good_product, has_defective_product).
Модель обучалась довольно легко и достигла 99% проверки без проблем; мы также тренировались с различными дополнениями данных, так как мы знаем, что наш набор данных был маленьким. На практике это сработало примерно в 9 раз из 10, но несколько случайных перемещений / поворотов одной и той же печатной платы иногда приводили к тому, что она находилась в противоположном классе. Возможно, более агрессивное увеличение данных помогло бы. В любом случае, для концепции проекта прототипа мы были счастливы.
Теперь мы представляли другому инженеру и его коллеге, и он привел аргумент, что для этого NN излишни, следует просто использовать сопоставление с шаблоном, зачем кому-то делать CNN?
У нас не было хорошего ответа на вопрос, почему наш подход может быть лучше в определенных приложениях (например, в других частях для проверки). Некоторые моменты, которые мы подняли:
1) Более устойчивы к инвариантности (например, через увеличение данных)
2) Может проводить онлайн-обучение для улучшения системы (например, человек может сказать программному обеспечению, какие примеры он ошибся)
3) Нет необходимости устанавливать пороговые значения, как в классических алгоритмах компьютерного зрения. Как вы думаете, есть ли у системы CNN больше преимуществ для такого рода задач проверки? В каких случаях это будет лучше, чем сопоставление с шаблоном?
Еще несколько случайных идей о том, когда глубокие NN могут быть технологией для работы: для систем, которые требуют трехмерного измерения глубины как части ввода, или любого типа объекта, который может быть деформирован / растянут / сжат, но все еще будет «хорошим» и не дефектный (например, чучело, провода и т. д.). Любопытно услышать ваши мысли :)