Wie man einen wahnsinnig guten Bildklassifikator in weniger als 10 Minuten erstellt

In den letzten Jahren bestand eine der größten Anwendungen des maschinellen Lernens in der Bildklassifizierung - der Fähigkeit eines Computers, ein Objekt intelligent zu erkennen. Solche Arbeiten werden bei den größten Technologieunternehmen durchgeführt und haben seitdem diesen ungerechtfertigten Begriff der Exklusivität hervorgebracht. Wir haben eine Erzählung verfasst, die besagt, dass man, um sich mit maschinellem Lernen und künstlicher Intelligenz die Hände schmutzig zu machen, eine Art zertifizierbares Genie oder zumindest ein Ingenieur sein muss, um einzubrechen. Ich werde Ihnen zeigen, wie Sie in weniger als 10 Minuten einen voll funktionsfähigen Bildklassifikator erstellen können, der jedes (ja, jedes) Objekt mit unglaublich hohen Wahrscheinlichkeiten erkennen kann. Und ich werde kein einziges Schlagwort verwenden.

Wenn Sie sich für einen umfassenden Einblick in die Bildklassifizierung interessieren, sehen Sie sich bitte mein Video oben an. Ich befasse mich mit den Grundlagen der Funktionsauswahl, Trainingssets, Umgebungseinstellungen und der allgemeinen Übersicht. Dieses Tutorial wird ein bisschen mechanischer sein - ich möchte Sie so schnell wie möglich zum Laufen bringen.

Als erstes benötigen Sie Python. Es ist eine einfache, effiziente und ausgesprochen schöne Programmiersprache, die in nahezu jeder Branche verwendet wird. Ich denke auch, dass Lernen genauso wichtig ist wie Microsoft Word-Kenntnisse.

Die Installationsseite ist hier. Schnappen Sie sich Python 2.7 und klicken Sie sich durch die Einrichtung. Als nächstes kommt TensorFlow, eine Open-Source-Bibliothek für die Datenflussprogrammierung. Wenn Sie einen Mac verwenden, können Sie das Terminal öffnen und einfach Folgendes ausführen:

pip install tensorflow

Wenn dies nicht funktioniert hat, lesen Sie die Installationsseite hier. Wählen Sie Ihr Betriebssystem und installieren Sie es gemäß den nativen Pip-Richtlinien. Sie sind am einfachsten zu verfolgen und umzusetzen.

Toll! Jetzt haben wir alle notwendigen Abhängigkeiten. Beginnen wir mit dem Klonen des TensorFlow-Repositorys. Wir verwenden eine spezielle Variante von Google, die einige ziemlich tolle Skripte enthält. Öffne dein Terminal und starte:

Git-Klon https://github.com/googlecodelabs/tensorflow-for-poets-2
cd tensorflow-for-poets-2

Jetzt können Sie Ihre Bilder auswählen! Die Wahl liegt ganz bei Ihnen - vergewissern Sie sich nur, dass die Kategorien, die Sie klassifizieren möchten, nach Ordnern getrennt sind (Bilder unten). Wenn wir zum Beispiel die im Beispiel bereitgestellten Blumenbilder verwenden möchten, können wir Folgendes ausführen (stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden, indem Sie die obigen Zeilen verwenden):

curl http://download.tensorflow.org/example_images/flower_photos.tgz
    | tar xz -C tf_files

Dadurch werden Bilder von fünf verschiedenen Blumensorten in unser Repository heruntergeladen.

ls tf_files / flower_photos

Es sollten alle zusätzlichen Ordner im Verzeichnis flower_photos ausgedruckt werden.

Gänseblümchen/
Löwenzahn/
Rosen /
Sonnenblumen /
Tulpe/
LICENSE.txt

Sie können beliebige Bilder verwenden. Je mehr, desto besser. Trennen Sie sie wie oben beschrieben durch Kategorien und vergewissern Sie sich, dass sie sich in einem Ordner mit dem Namen tf_files befinden. Ich habe ein großartiges Plug-in gefunden, das das Herunterladen von Batch-Bildern in Google Chrome ermöglicht. So wird das Auffinden von Trainingsdaten zum Kinderspiel. Hier verlinkt.

Ich folgte der gleichen Ordnerstruktur wie oben und erstellte einen Garbage Classifier (dazu später mehr). So sah mein Setup für die visuelle Referenz aus:

Achten Sie nur auf garbage_photos. Die anderen Ordner sind für die Schritte nach dem Training vorgesehen.In garbage_photos. Alle Ihre Bilder sollten nach Kategorien getrennt sein.Das Glasverzeichnis als Beispiel.

Jetzt können wir unser Modell trainieren! Die einzige Möglichkeit, mit der ein Computer Objekte erkennen kann, besteht darin, dass er aus allen Bildern lernt, die wir gerade heruntergeladen haben. Zum Glück sind dazu nur ein paar Zeilen Python erforderlich. Wenn Sie eine detailliertere Erklärung der Wissenschaft und Theorie wünschen, schauen Sie sich mein Video oben an .

IMAGE_SIZE = 224
ARCHITECTURE = "mobilet_0.50 _ $ {IMAGE_SIZE}"
python -m scripts.retrain \
  --bottleneck_dir = tf_files / bottlenecks \
  --model_dir = tf_files / models / "$ {ARCHITECTURE}" \
  --summaries_dir = tf_files / training_summaries / "$ {ARCHITECTURE}" \
  --output_graph = tf_files / retrained_graph.pb \
  --output_labels = tf_files / retrained_labels.txt \
  --architecture = "$ {ARCHITECTURE}" \
  --image_dir = tf_files / YOUR_IMAGE_DIRECTORY_HERE

Füllen Sie YOUR_IMAGE_DIRECTORY_HERE mit dem Ordner der heruntergeladenen Bilder aus. Der Trainingsschritt dauert zwischen 30 Minuten und einer Stunde. Machen Sie sich keine Sorgen, wenn es einige Zeit dauert - dies hängt stark von den technischen Daten Ihres Computers ab. Sobald Sie jedoch fertig sind, können Sie einen Bildklassifizierer testen!

Laden Sie ein Bild aus dem Internet herunter oder nehmen Sie eines selbst mit dem Telefon und führen Sie den folgenden Befehl aus:

python -m scripts.label_image \
    --graph = tf_files / retrained_graph.pb \
    --image = YOUR_PATH_TO_IMAGE_HERE

Ersetzen Sie erneut YOUR_PATH_TO_IMAGE_HERE durch den Dateipfad des gerade heruntergeladenen Bildes. Wenn Sie die Linie durchlaufen, sollten Sie probabilistische Ergebnisse darüber sehen, was das Bild enthält!

Ich habe einen Müllklassifizierer gebaut, der sechs verschiedene Arten von Müll erkennt: Pappe, Glas, Papier, Metall, Müll und Plastik. Hier sind einige meiner Beispiele:

python -m scripts.label_image \
    --graph = tf_files / retrained_graph.pb \
    --image = / Users / Nikhil / Desktop / beerbottle.jpg
Glas mit einer Wahrscheinlichkeit von 0,996. Alles sieht gut aus!
python -m scripts.label_image \
    --graph = tf_files / retrained_graph.pb \
    --image = / Users / Nikhil / Desktop / package.jpg
Müll mit Wahrscheinlichkeit 0.984.

Herzliche Glückwünsche! Sie haben erfolgreich einen Image-Klassifizierer erstellt. Dazu waren lediglich einige allgemeine Kenntnisse und die Installation einiger Pakete erforderlich. Sie werden feststellen, dass die Wunder der Informatik leicht zugänglich sind - Sie müssen sie nur suchen. Es gibt so viele Open-Source-Tools und -Bibliotheken, die für Bastler und Entwickler entwickelt wurden, um kreativ zu werden. Bauen Sie etwas für Ihren Chef oder schließen Sie es an einen Raspberry Pi an und bauen Sie Ihr eigenes Haussicherungssystem. Egal, wissen Sie einfach, dass jeder in der Lage ist, große Dinge beim maschinellen Lernen zu tun.