Bei meinem Kreis, Dreieck, Viereck Objekt Problem bin ich über customvision.ai gestolpert. Grundsätzlich ist das ein Azure Cognitive Serivce mit einem freundlichen UI.
Die Idee ist, das Modell auf Bild Erkennung zu trainieren und dann als ONNX zu exportieren.
Da gibt es eine Reihe von Optionen. Die Training Domain hat erhebliche Auswirkungen auf die Erkennungsquoten. A1 erzeugte sehr gute Ergebnisse aber nur mit General compact kann man auch exportieren. Sonst müsste man den AI Vision Dienst per API nutzen. Ich will das aber offline betreiben.
Die handgezeichneten PNG Bilder von rund je 50 Kreisen, Dreiecken und Kreisen aus meinen bisherigen Dataset können einfach hochgeladen werden. Allerdings habe ich vergeblich versucht das Vott Tagging zu importieren. Die Website bietet eine recht einfache Möglichkeit das Tagging per Hand zu erledigen. Dazu habe ich mich entschieden und rund 20 Minuten später die Aufgabe erledigt.
Die Objekte werden schon vormarkiert und rechts wählt man aus den Labels aus.
Nach dem Training lässt sich die Performance (also Erkennungsqualität) wie oben in den Diagrammen ersichtlich bewerten. Über Quick Test (ober Menüleiste) kann man auch andere Bilder hochladen. Hier ein komplexeres mit beeindruckender Erkennungsrate.
Im Tab Performance findet sich die Funktion Export, die uns eine Reihe von Zielplattformen wählen lässt. Ich möchte eigentlich ML.NET Adressieren und muss deshalb ONNX nutzen.
In der knapp 40 MB ZIP Datei befinden sich ein paar spannende Dinge. Erwartungsgemäß das Model dem ich mich gleich widmen werde. Auch die Labels finden sich dort. Aber besonders nützlich, auch der Code um das ONNX Modell zu nutzen. Für Python, da braucht man dann eine Runtime oder ein Jypter Notebook.
Aber auch der C# Code und der ist nicht für ML.NET sondern Win.ML (oder auch Windows.ML). Dazu aber später mehr.
In das ONNX Model kann man reinschauen mit Tools wie Windows ML Dashboard oder Netron. Der Screenshot stammt von letzteren.