Freigeben über


Trainieren eines Objekterkennungsmodells mit TensorFlow

Nachdem wir TensorFlow konfiguriert haben, verwenden wir die YOLO-Architektur, um das Objekterkennungsmodell zu trainieren. YOLO ist ein neurales Netzwerk, das Begrenzungsfelder und Klassenwahrscheinlichkeiten aus einem Bild in einer einzigen Auswertung vorhersagt. YOLO-Modelle können mehr als 60 Frames pro Sekunde verarbeiten, sodass sie eine großartige Architektur zum Erkennen von Objekten in Videos ist. Weitere Informationen zur Funktionsweise von YOLO finden Sie hier.

Verwenden von YOLO

Laden Sie zunächst diese YOLO-Beispieldatei herunter, die Hilfsskripts enthält, um zu beginnen.

Bei verwendung von YOLO haben wir drei Optionen:

  1. Nutzen Sie vortrainierte Modellgewichte für YOLO. Das vortrainierte Modell wurde auf einem großen Dataset mit 80 Klassen (Kategorien) für alltägliche Objekte wie Bus, Person, Sandwich usw. trainiert. Wenn Sie ein vorinstalliertes YOLO-Modell im ONNX-Format herunterladen möchten, können Sie dies hier tun. Anschließend können Sie mit der letzten Phase dieses Lernprogramms fortfahren, um zu erfahren, wie Sie dieses Modell in eine App integrieren.

  2. Implementieren Sie transfer learning mit einem benutzerdefinierten Dataset. Transfer Learning ist eine Methode für die Verwendung eines trainierten Modells als Ausgangspunkt, um ein Modell zu trainieren, das eine andere, aber verwandte Aufgabe löst. In diesem Tutorial werden die vortrainierten YOLO-Gewichtungen mit 80 Klassen verwendet, um ein Modell mit 20 Klassen mit dem VOC-Datensatz zu trainieren. Wenn Sie Ihr eigenes Dataset mit benutzerdefinierten Klassen erstellen möchten, lesen Sie hier Anweisungen.

  3. Trainieren Sie YOLO von Grund auf neu. Diese Technik wird nicht empfohlen, da es sehr schwierig ist, zu konvergen. Das ursprüngliche YOLO-Papier trainierte zuerst Darknet mit Imagenet (das Hunderttausende von Fotos enthält) und anschließend auch das gesamte Netzwerk.

Implementieren Sie Transfer-Learning auf vorab trainierten YOLO-Gewichtungen in das VOC-Dataset:

Lassen Sie uns mit der zweiten Option fortfahren und Transferlernen mit den folgenden Schritten implementieren.

  1. Navigieren Sie in einem Miniconda-Fenster zum YOLO-Beispielverzeichnis und führen Sie den folgenden Befehl aus, um alle erforderlichen pip-Pakete für YOLO zu installieren.

pip install -r requirements.txt

  1. Führen Sie das Setupskript aus, um die Daten und die zuvor trainierten Gewichtungen herunterzuladen.

python setup.py

  1. Transformieren Sie das Dataset. Siehe tools/voc2012.py Implementierung – dieses Format basiert auf der Tensorflow-Objekterkennungs-API. Viele Felder sind nicht erforderlich, wurden hier aber aus Gründen der Kompatibilität mit der offiziellen API ausgefüllt.
python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split train \
  --output_file ./data/voc2012_train.tfrecord

python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split val \
  --output_file ./data/voc2012_val.tfrecord
  1. Das Modell trainieren. Führen Sie die folgenden Befehle aus:
python convert.py
python detect.py --image ./data/meme.jpg # Sanity check

python train.py \
	--dataset ./data/voc2012_train.tfrecord \
	--val_dataset ./data/voc2012_val.tfrecord \
	--classes ./data/voc2012.names \
	--num_classes 20 \
	--mode fit --transfer darknet \
	--batch_size 16 \
	--epochs 10 \
	--weights ./checkpoints/yolov3.tf \
	--weights_num_classes 80 

Sie verfügen jetzt über ein neu trainiertes Modell mit 20 Klassen, das einsatzbereit ist.

Nächste Schritte

Nachdem wir nun ein TensorFlow-Modell erstellt haben, müssen wir es für die Verwendung mit den Windows Machine Learning-APIs in das ONNX-Format konvertieren .