Ich hatte eine interessante Diskussion über ein Projekt, an dem wir arbeiteten: Warum ein visuelles CNN-Inspektionssystem über einem Template-Matching-Algorithmus verwenden?
Hintergrund: Ich hatte eine Demo eines einfachen CNN-Bildverarbeitungssystems (Webcam + Laptop) gezeigt, das feststellte, ob ein bestimmter Objekttyp "defekt" / defekt war oder nicht - in diesem Fall eine Leiterplatte. Meinem CNN-Modell wurden Beispiele für die richtigen und defekten Leiterplatten (jeweils etwa 100 Bilder) auf einem statischen Hintergrund gezeigt. Unser Modell verwendete die ersten paar Conv / Maxpool-Schichten von vorab trainiertem VGG16 (auf Imagenet), und dann fügten wir einige weitere trainierbare Convs / Pools mit einigen Dichten hinzu, was zu einer Dim-3-One-Hot-Coded-Vektorausgabe zur Klassifizierung führte : (is_empty, has_good_product, has_defective_product).
Das Modell trainierte ziemlich einfach und erreichte ohne Probleme eine Validierung von 99%. Wir haben auch mit verschiedenen Datenerweiterungen trainiert, da wir wissen, dass unser Datensatz klein war. In der Praxis funktionierte es ungefähr 9 von 10 Mal, aber ein paar zufällige Übersetzungen / Rotationen derselben Leiterplatte brachten es gelegentlich in die entgegengesetzte Klasse. Vielleicht hätte eine aggressivere Datenerweiterung geholfen. Für ein Prototyp-Konzeptprojekt waren wir jedenfalls glücklich.
Jetzt präsentierten wir uns einem anderen Ingenieur und seinem Kollegen, und er brachte das Argument vor, dass NNs dafür übertrieben sind, sollte nur Template Matching verwenden, warum sollte man CNNs machen wollen?
Wir hatten keine gute Antwort darauf, warum unser Ansatz in bestimmten Anwendungen besser sein könnte (z. B. in anderen zu inspizierenden Teilen). Einige Punkte, die wir angesprochen haben:
1) Robuster gegenüber Invarianzen (z. B. durch Datenerweiterung)
2) Kann online lernen, um das System zu verbessern (z. B. kann der Mensch der Software mitteilen, welche Beispiele falsch sind)
3) Keine Notwendigkeit, Schwellenwerte wie bei klassischen Computer-Vision-Algorithmen festzulegen. Was gibt es Ihrer Meinung nach mehr Vorteile für ein CNN-System für diese Art von Inspektionsaufgabe? In welchen Fällen wäre es besser als Template Matching?
Noch ein paar zufällige Ideen, wann tiefe NNs die Technologie für den Job sein könnten: für Systeme, die eine 3D-Tiefenerfassung als Teil der Eingabe erfordern, oder für jede Art von Objekt, das deformiert / gedehnt / gequetscht werden kann, aber dennoch "gut" ist und nicht defekt (zB ein Stofftier, Drähte usw.). Neugierig auf deine Gedanken :)