共用方式為


使用 TensorFlow 定型物件偵測模型

既然我們已設定 TensorFlow,我們將使用 YOLO 架構來定型物件偵測模型。 YOLO 是一種神經網路,在一次評估中預測影像中的邊界框和類別機率。 YOLO 模型每秒可以處理超過 60 個畫面格,使其成為偵測影片中對象的絕佳架構。 您可以 在這裡找到 YOLO 運作方式的詳細資訊。

使用YOLO

首先,下載 此 YOLO 範例檔案,其中包含要開始使用的協助程式腳本。

使用 YOLO 時,我們有 3 個選項:

  1. 使用預訓練的模型權重來應用於YOLO。 預先定型的模型已在具有80個類別(類別)的大型數據集上定型,適用於公共汽車、人員、三明治等日常物件。如果您想要以 ONNX 格式下載預先定型的 YOLO 模型,您可以 在這裡執行此動作。 然後,您可以繼續進行 本教學課程的最後階段 ,以瞭解如何將該模型整合到應用程式中。

  2. 使用自訂數據集實作傳輸學習。 轉移學習是使用定型模型作為起點的方法,用來定型解決不同但相關工作的模型。 本教學課程將使用具有 80 個類別的預先訓練 YOLO 權重,訓練一個具有 20 個類別的模型,並使用 VOC 數據集。 如果您想要使用自定義類別建立自己的數據集,請參閱 這裡的指示。

  3. 從零開始訓練 YOLO。 不建議使用這項技術,因為很難交集。 原始的YOLO論文在訓練整個神經網路之前,先在Imagenet(包含數十萬張照片)上訓練了darknet。

對預訓練的 YOLO 權重進行遷移學習至 VOC 數據集:

讓我們繼續進行第二個選項,並使用下列步驟實作傳輸學習。

  1. 在 miniconda 視窗中,流覽至 yolo 範例目錄,然後執行下列命令以安裝 YOLO 所需的所有 pip 套件。

pip install -r requirements.txt

  1. 執行安裝腳本以下載數據和預先定型的權數

python setup.py

  1. 轉換數據集。 如需實作,請參閱 tools/voc2012.py - 此格式是以 tensorflow 物件偵測 API 為基礎。 許多欄位並非必要,但這裡已填入 ,以便與官方 API 相容。
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. 定型模型。 執行以下命令:
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 

您現在已有 20 個類別的重新定型模型,可供使用。

後續步驟

現在我們已建立 TensorFlow 模型,因此必須將 它轉換成 ONNX 格式 ,以搭配 Windows Machine Learning API 使用。