OK, also setzt man dies zusammen, hat man 42 Klassen und erwartet etwa 10 Bilder.
Damit stehen Sie ziemlich genau in der Notwendigkeit von zwei Dingen:
Sie haben bereits den wahrscheinlichen Bedarf an Daten Augmentation in den Kommentaren angesprochen, und Sie Genau richtig: Um Ihre 10 Bilder pro Klasse optimal zu nutzen, sollten Sie eine ganze Reihe von Transformationen darauf anwenden. Wahrscheinlich viel mehr als 10/20 Anzahl Bilder:
- Beschneiden
- Scaling
- Rausch
- Kontrast/Farbe/Helligkeit
- Rotation
Ein gutes Beispiel für Daten Augmentation Zur Bildklassifizierung gehört die official resnet example model
Die zweite ist Transferlernen. Wenn Sie versuchen, ein Modell von 42 Klassen aus relativ kleinen Daten zu lernen, werden Sie wahrscheinlich bessere Ergebnisse erzielen können, wenn Sie mit einem Modell beginnen, das mit anderen Daten trainiert wurde, und dann die letzten (wenigen) Schichten mit Ihrem neuen Datensatz neu trainieren. Der Grund dafür ist, dass der viel größere Beispielraum des anfänglichen Trainings Ihrem Klassifizierer hilft, eine Vielzahl von gebräuchlichen Bildmerkmalen zu lernen, die Ihr Transfer-gelernter Klassifikator verwenden kann, um eine höhere Erkennung schneller zu erreichen.
Eine Alternative, natürlich, könnten Sie eine Form des aktiven Lernens tun - trainieren Sie einen Klassifikator und zeigen Sie ihm dann Bilder Ihrer Tokens (vielleicht per Webcam, Klassifizieren jedes Frame), und wenn es falsch ist, Speichern Sie das als Beispiel für die nächste Trainingsrunde. Das erfordert mehr Arbeit, und Sie müssten dafür eine Infrastruktur aufbauen, also würde ich mit dem Transferlernen beginnen.
Sie haben dann die Frage, mit welcher Architektur Sie beim Transferlernen beginnen sollen. Inception ist wahrscheinlich zu viel für das, was Sie tun, aber das Lager MNIST-Modell ist wahrscheinlich einfacher als Sie wollen. Sie müssen etwas experimentieren - ein modifizierter Klassifizierer im LeNet-Stil, wie die üblichen MNIST-Beispiele, kann ziemlich gut funktionieren (fügen Sie eine weitere Faltungsschicht hinzu, fügen Sie batchnorm und vielleicht ein bisschen Dropout hinzu). Alternativ könnten Sie mit einem vortrainierten Mobilenet Netzwerk beginnen und von diesem lernen lernen.Ich wäre versucht, mit letzterem zu beginnen, es sei denn, Sie haben einige strenge Berechnungsgrenzen für die Inferenzgeschwindigkeit.
Für Ihre Bilder würde ich zunächst ein Verzeichnis von JPEG-Bildern erstellen. Die "offizielle" Art, mit ihnen umzugehen, wäre der Prozess in this answer.
Um zu helfen, dies zu beantworten - was sind Ihre Bilder? Wie viele? Sind sie beschriftet? Welche Größe? Welche Klassen/wie viele Klassen? Möchten Sie eine Klassifizierung vornehmen oder etwas anspruchsvoller? – dga
Ich habe 42 Token mit jeweils einem anderen Symbol. Die Symbole sind wirklich stilisiert, so dass die Bildgröße sehr niedrig sein kann. Mein Ziel ist es zu erkennen, von welchem Token ich ein Bild gemacht habe. Das bedeutet 42 Tokens mit jeweils einem anderen Label. –
Physische Token, mit denen Sie im Voraus ein Bild erstellen, um ein markiertes Dataset zu erstellen? Wie viele Bilder möchten Sie unter verschiedenen Bedingungen (Hintergrund, Beleuchtung, Orientierung usw.) aufnehmen? :) – dga