影像辨識

阿德的影像辨識

阿德的影像辨識

深度學習實作YOLO:You Only Look Once

💪🏻實作

  • YOLOv3 搭配 MicrosoftCOCO物件偵測80分類,做為預設訓練資料集。

  • 如何收集(取樣) 標註訓練資料及進行最後的推論,就能顯得非常重要,辨識完整的工作流程:

資料來源: https://makerpro.cc/2019/12/train-your-dataset-with-yolov3/ https://github.com/OmniXRI/OpenVINO_RealSense_HarvestBot/tree/master/my_yolo3

📝建立資料表

  • 自行設計取景設備

  • 或利用LabelImg透過現成的照片進行標記

資料來源: https://makerpro.cc/2019/12/train-your-dataset-with-yolov3/

🏷標註資料集

  • 建立檔案分配資料夾 分配資料集大小,包括訓練集(train.txt)驗證集(val.txt)測試集(test.txt)訓練加驗證集(trainval.txt)

  • 路徑在VOC2007/ImageSets/Main下,而各資料集清單檔(*.txt)即為不含附檔名的影像名稱清單

📝訓練資料集

  • 一般要訓練YOLOv3可選擇使用原始的DarkNet方式或是使用常見的AI框架
  • 本實作參考GitHub上qqwweee已Keras框架為基礎完成
  • 資料集格式轉換
  1. VOC2007格式所產生的標註檔(.xml)內容主要表示物件匡德方式為左上(xmin、ymin)即右下(xmax、ymax)座標,和YOLO格式不同,所以要依資料集清單檔(.txt),將個別標註檔(*.xml)轉換成物件編號加上物件框中心座標及尺寸格式後再寫至另一個清單檔。
python voc_annotation.py

📝環境安裝

  • 虛擬環境Anaconda 在Anaconda下安裝需要的軟件
  1. Keras
  2. Pillow(conda install pillow)
  3. YOLOv3官網預先訓練好的權重文件yolov3.weights

📝轉換權重文件

  • 由於此次使用的是 Keras框架,所以須把下載到的YOLO預訓練權重值轉成Keras格式(*.h5),執行convert.py即可轉換完成並置於\model_data下,其完整指令如下所示。
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

執行模型訓練

  • 執行my_train.py進行小番茄影像訓練,最終訓練完的結果會存放在/logs/000/trained_weights_final.h5,若不滿意結果想從這個結果繼續訓練,則可將此權重檔複製到/model_d下,再將第32列程式修改成weights_path='model_data/trained_weights_final.h5'即可

影像推論-成果

comments powered by Disqus