yolov3安卓实现_YOLOv3 的 TensorFlow 实现,GitHub 完整源码解析
來自華盛頓大學的 Joseph Redmon 和 Ali Farhadi 提出的YOLOv3 通過在 YOLO 中加入設計細節的變化,這個新模型在取得相當準確率的情況下實現了檢測速度的很大提升,一般它比 R-CNN 快 1000 倍、比 Fast R-CNN 快 100 倍。
這里附上 YOLOv3 的論文地址:
本文的項目作者是 wizyoung,原 GitHub 項目地址為:
1. 介紹
本文將介紹 YOLO3 的完整 TensorFlow 實現??稍谧约旱臄祿线M行完整的訓練和驗證操作,pipeline 完整。其特點包括:
高效的 tf.data 管道
權重轉換
GPU 提速,無限制
完整的訓練管道
使用 kMeans 算法來選擇 anchor boxes
多 GPU 同步訓練
2. 需求
tensorflow >= 1.8.0(不排除低版本也能工作)
opencv-python
3. 權重轉換
預訓練的 darknet 權重文件可從下方鏈接下載:
https://pjreddie.com/media/files/yolov3.weights
把下載好后的文件放在 ./data/darknet_weights/ 目錄下,運行下面的命令:
然后,轉換后的 TensorFlow checkpoint 文件將被保存在 ./data/darknet_weights/ 目錄下。
4. 運行 demos
在 ./data/demo_data/ 目錄里有一些圖像和視頻的 demos 可以運行。
單個圖像測試 demo:
視頻測試 demo:
結果展示:
5. 運行速度
圖片尺寸為 416×416,論文實現與我的模型運行速度比較如下:
為什么會這么快呢?我們看一下論文中 ImageNet 分類情況:
6. 模型結構
為了更好地理解模型體系結構,可以參考下圖:
7. 訓練
首先是數據準備,分為三步。
1)annotation file
在 ./data/my_data/ 目錄下生成 train.txt/val.txt/test.txt 文件。txt 文件中一行表示一張圖片,形式為:圖片絕對路徑 + box_1 + box_2 + … + box_n。Box 的形式為:label_index + x_min + y_min + x_max + y_max,原始坐標為圖片左上角。
例如:
xxx/xxx/1.jpg 0 453 369 473 391 1 588 245 608 268
xxx/xxx/2.jpg 1 466 403 485 422 2 793 300 809 320
…
注意:每個 txt 文件最后一行為空白行。
2)class_names file
在 ./data/my_data/ 目錄下生成 data.names 文件,每一行代表一個類別名稱。例如:
bird
person
bike
…
3)prior anchor file
使用 kMeans 算法來選擇 anchor boxes:
然后,你將得到 9 個 anchors 和評價 IOU,把 anchors 保存在 txt 文件中。
準備完數據之后就可以開始訓練了。
使用 train.py 文件,函數參數如下:
8. 評價
使用 eval.py 來評估驗證集和測試集,函數參數如下:
函數返回 loss、召回率 recall、精準率 precision,如下所示:
recall: 0.927, precision: 0.945
total_loss: 0.210, loss_xy: 0.010, loss_wh: 0.025, loss_conf: 0.125, loss_class: 0.050
9. 其它技巧
訓練的時候可以嘗試使用下面這些技巧:
Data augmentation:使用 ./utils/data_utils.py 中的 data_augmentation 方法來增加數據。
像 Gluon CV 一樣混合和 label 平滑。
正則化技巧,例如 L2 正則化。
多尺度訓練:你可以像原稿中的作者那樣定期改變輸入圖像的尺度(即不同的輸入分辨率)。
完整代碼請見 GitHub:
參考文獻:
https://github.com/YunYang1994/tensorflow-yolov3
https://github.com/qqwweee/keras-yolo3
https://github.com/eriklindernoren/PyTorch-YOLOv3
https://github.com/pjreddie/darknet
總結
以上是生活随笔為你收集整理的yolov3安卓实现_YOLOv3 的 TensorFlow 实现,GitHub 完整源码解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票周线金叉怎么看?
- 下一篇: 光大审批中就是拒了吗?