Miałem interesującą dyskusję na podstawie projektu, nad którym pracowaliśmy: po co używać systemu kontroli wizualnej CNN zamiast algorytmu dopasowywania szablonów?
Tło: Pokazałem demo prostego systemu wizyjnego CNN (kamera internetowa + laptop), który wykrył, czy określony typ obiektu został „uszkodzony” / uszkodzony, czy nie - w tym przypadku płytka drukowana PCB. Mój model CNN pokazał przykłady prawidłowych i uszkodzonych płytek drukowanych (około 100 zdjęć każdej) na statycznym tle. Nasz model wykorzystał kilka pierwszych warstw konwekcyjnych / maksymalnych prędkości wstępnie przeszkolonego VGG16 (na imagenet), a następnie dodaliśmy kilka bardziej trenowalnych konwek / puli, z kilkoma denami, prowadząc do zakodowanego na gorąco wyjściowego wektora zakodowanego dim-3 do klasyfikacji : (is_empty, has_good_product, has_defective_product).
Model dość łatwo trenował i osiągnął 99% walidację bez problemów; przeszkoliliśmy także w zakresie rozszerzania danych, ponieważ wiemy, że nasz zestaw danych był niewielki. W praktyce działało około 9 razy na 10, ale kilka przypadkowych tłumaczeń / rotacji tej samej płytki drukowanej od czasu do czasu umieszczało ją w przeciwnej klasie. Być może pomogłoby bardziej agresywne powiększanie danych. Tak czy inaczej, z prototypowego projektu koncepcyjnego byliśmy zadowoleni.
Teraz przedstawialiśmy się innemu inżynierowi i jego współpracownikowi, a on podniósł argument, że NN są nadmiernie zdolni do tego, powinien po prostu użyć dopasowania szablonu, dlaczego miałby chcieć robić CNN?
Nie mieliśmy doskonałej odpowiedzi na pytanie, dlaczego nasze podejście może być lepsze w niektórych zastosowaniach (np. W innych częściach do sprawdzenia). Niektóre poruszone przez nas punkty:
1) Bardziej odporny na niezmienniki (np. Poprzez augmentację danych)
2) Potrafi przeprowadzić naukę online w celu ulepszenia systemu (np. Człowiek może powiedzieć oprogramowaniu, które przykłady popełnił błąd)
3) Nie trzeba ustawiać progów, jak w klasycznych komputerowych algorytmach widzenia. Jak myślicie, czy są jakieś dodatkowe korzyści dla systemu CNN dla tego rodzaju zadań kontrolnych? W jakich przypadkach byłoby lepiej niż dopasowanie szablonu?
Jeszcze kilka przypadkowych pomysłów na to, kiedy głębokie NN mogą być technologią do tego zadania: dla systemów, które wymagają detekcji głębokości 3D jako części danych wejściowych, lub dowolnego rodzaju obiektu, który może być zdeformowany / rozciągnięty / zgnieciony, ale nadal „dobry” i nie uszkodzony (np. wypchane zwierzę, druty itp.). Ciekawy usłyszeć twoje myśli :)