Trainieren eines Objekterkennungsmodells mit TensorFlow
Nachdem wir TensorFlow konfiguriert haben, verwenden wir die YOLO-Architektur, um das Objekterkennungsmodell zu trainieren. YOLO ist ein neuronales Netzwerk, das Begrenzungsrahmen und Klassenwahrscheinlichkeiten aus einem Bild in einer einzelnen Auswertung vorhersagt. Die YOLO-Modelle können mehr als 60 Bilder pro Sekunde verarbeiten, weshalb sie eine hervorragende Architektur für die Erkennung von Objekten in Videos darstellen. Weitere Informationen zur Funktionsweise von YOLO finden Sie hier.
Verwenden von YOLO
Laden Sie zunächst diese YOLO-Beispieldatei herunter, die Hilfsskripts für die ersten Schritte enthält.
Bei Verwendung von YOLO stehen ihnen drei Optionen zur Verfügung:
Verwenden Sie vorab trainierte Modellgewichtungen für YOLO. Das vorab trainierte Modell wurde mit einem großen Dataset mit 80 Klassen (Kategorien) für alltägliche Objekte wie Bus, Person, Sandwich usw. trainiert. Wenn Sie ein vorab trainiertes YOLO-Modell im ONNX-Format herunterladen möchten, haben Sie hier die Möglichkeit dazu. Dann können Sie mit dem letzten Schritt dieses Tutorials fortfahren, um zu erfahren, wie Sie dieses Modell in eine App integrieren.
Implementieren Sie das Transferlernen mit einem benutzerdefinierten Dataset. Transferlernen ist eine Methode, um ein trainiertes Modell als Ausgangspunkt für das Training eines Modells zu verwenden, 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-Dataset zu trainieren. Wenn Sie Ihr eigenes Dataset mit benutzerdefinierten Klassen erstellen möchten, finden Sie hier eine Anleitung.
Trainieren Sie YOLO von Grund auf neu. Dieses Verfahren wird nicht empfohlen, da es sehr schwer zu konvergieren ist. In der ursprünglichen YOLO-Studie wurde das Darknet anhand des Imagenet (das Hunderttausende von Fotos enthält) trainiert, bevor das gesamte Netzwerk ebenfalls trainiert wurde.
Implementieren Sie das Transferlernen mit vorab trainierten YOLO-Gewichtungen für das VOC-Dataset:
Lassen Sie uns mit der zweiten Option fortfahren und das Transferlernen mit den folgenden Schritten implementieren.
- 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
- Führen Sie das Setupskript aus, um die Daten und vorab trainierten Gewichtungen herunterzuladen.
python setup.py
- Transformieren Sie das Dataset. Informationen zur Implementierung finden Sie unter
tools/voc2012.py
. Dieses Format basiert auf der Tensorflow-API für die Objekterkennung. Viele Felder sind nicht erforderlich, wurden hier jedoch für die 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
- Trainieren des Modells. 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 nun über ein neu trainiertes Modell mit 20 einsatzbereiten Klassen.
Nächste Schritte
Nachdem wir ein TensorFlow-Modell erstellt haben, müssen wir es für die Windows Machine Learning-APIs in das ONNX-Format konvertieren.