Eseguire il training di un modello di rilevamento oggetti con TensorFlow
Dopo aver configurato TensorFlow, si userà l'architettura YOLO per eseguire il training del modello di rilevamento oggetti. YOLO è una rete neurale che stima i rettangoli di delimitazione e le probabilità di classe da un'immagine in una singola valutazione. I modelli YOLO possono elaborare più di 60 fotogrammi al secondo, rendendola un'architettura ideale per il rilevamento di oggetti nei video. Altre informazioni sul funzionamento di YOLO sono disponibili qui.
Uso di YOLO
Prima di tutto, scaricare questo file di esempio YOLO, che contiene script helper per iniziare.
Quando si usa YOLO, sono disponibili tre opzioni:
Utilizzare pesi del modello con training preliminare per YOLO. Il modello con training preliminare è stato sottoposto a training su un set di dati di grandi dimensioni con 80 classi (categorie) per oggetti quotidiani come bus, persona, sandwich e così via. Se si vuole scaricare un modello YOLO con training preliminare in formato ONNX, è possibile farlo qui. È quindi possibile passare alla fase finale di questa esercitazione per informazioni su come integrare tale modello in un'app.
Implementare l'apprendimento per il trasferimento con un set di dati personalizzato. L'apprendimento per il trasferimento è un metodo per l'uso di un modello sottoposto a training come punto di partenza per eseguire il training di un modello che risolve un'attività diversa ma correlata. Questa esercitazione userà i pesi YOLO con training preliminare con 80 classi per eseguire il training di un modello con 20 classi con il set di dati VOC. Per creare un set di dati personalizzato con classi personalizzate, vedere le istruzioni qui.
Addestra YOLO da zero. Questa tecnica non è consigliata, perché è molto difficile convergere. Il documento YOLO originale ha eseguito il training di darknet su imagenet (contenente centinaia di migliaia di foto) prima di eseguire il training dell'intera rete.
Implementare l'apprendimento del trasferimento sui pesi YOLO con training preliminare al set di dati VOC:
Procedere con la seconda opzione e implementare l'apprendimento per il trasferimento con i passaggi seguenti.
- In una finestra miniconda passare alla directory yolo sample ed eseguire il comando seguente per installare tutti i pacchetti pip necessari per YOLO.
pip install -r requirements.txt
- Eseguire lo script di installazione per scaricare i dati e i pesi con training preliminare
python setup.py
- Trasformare il set di dati. Per
tools/voc2012.py
l'implementazione, questo formato si basa sull'API di rilevamento degli oggetti tensorflow. Molti campi non sono obbligatori, ma sono stati compilati per compatibilità con l'API ufficiale.
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
- Eseguire il training del modello. Eseguire i comandi seguenti:
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
È ora disponibile un modello con training nuovo con 20 classi, pronte per l'uso.
Passaggi successivi
Ora che è stato creato un modello TensorFlow, è necessario convertirlo in formato ONNX da usare con le API di Windows Machine Learning.