YOLOv3 学习笔记:大神好贴汇总+自身经验记录
一、學習 YOLOv3
YOLOv3論文
YOLOv3:An Incremental Improvement 全文翻譯
【目標檢測簡史】進擊的 YOLOv3,目標檢測網絡的巔峰之作
語言生動易懂,適合新手學習,有很多實測的圖,效果非常好,展示了 YOLOv3 的強大!
總結了 YOLOv3 的改進之處,并對下一代 YOLO 提出展望
【目標檢測簡史】YOLOv3 的實景大片兒(含源碼)
實測看效果,用 YOLOv3 檢測一段視頻,截取部分幀展示 YOLOv3 在小物體或者遠處的物體識別、重疊遮擋物體的識別、運動模糊物體的識別、高密度汽車的識別、密集人群識別的效果。
目標檢測網絡之 YOLOv3
具體講解了 YOLOv1 到 v2 到 v3 的改進之處,值得學習
如何評價最新的 YOLOv3?
知乎話題,一些回答挺好的,各種總結、圖表、文章鏈接
?
二、實踐 YOLOv3
YOLOv3官方linux代碼
YOLOv3官方網站
圖表展示了 YOLOv3 的優勢,講解了如何搭建 Darknet、下載預訓練模型、測試圖像、測試視頻、用 VOC 數據集訓練模型、用 COCO 數據集訓練模型
YOLOv3: 訓練自己的數據
詳細講解了如何制作 VOC 格式的數據集,將 VOC 格式的 xml 文件轉換成 YOLO 格式的 txt 文件,修改訓練相關的配置文件,如何訓練自己的模型,如何進行測試,論文閱讀
YOLO 配置文件理解
詳細講解了 YOLOv3 配置文件每個參數的意義,以及源碼中如何使用這些參數
?
三、修改 YOLOv3
YOLOv3 批量測試圖片并保存在自定義文件夾下
講解了如何批量測試圖片并保存在自定義文件夾下,給出了代碼
YOLOv3 使用筆記——計算 mAP、recall
講解了 YOLOv3 如何計算 mAP、recall 來衡量模型效果
?
四、自己使用問題總結
1、運行 test,recall,vaild 命令時,<test_cfg> 文件中 batch 和 subdivisions 兩項必須為 1。否則會出現測試檢測不到目標、計算 recall 為 0,驗證沒有產生結果文件。訓練時候根據 GPU 情況調大 batch 和 subdivisions,官方 cfg 中兩者值分別為 64 和 16。
2、測試標簽上如何添加置信值
由于官方代碼測試只標注了類別,標簽文字較大。使用過程中希望減小標簽,并加上檢測的置信值。
修改 src/image.c 文件 draw_detections 函數,前面部分代碼修改如下:
? int i,j;
?
? ? for(i = 0; i < num; ++i){
? ? ? ? char labelstr[4096] = {0};
? ? ? ? int class = -1;
?? ?char possible[2];//存放檢測的置信值
? ? ? ? for(j = 0; j < classes; ++j){
?? ? ?sprintf(possible,"%.2f",dets[i].prob[j]);//置信值截取小數點后兩位賦給possible
? ? ? ? ? ? if (dets[i].prob[j] > thresh){
? ? ? ? ? ? ? ? if (class < 0) {
? ? ? ? ? ? ? ? ? ? strcat(labelstr, names[j]);
?? ??? ? ? ?strcat(labelstr, possible);//標簽中加入置信值
? ? ? ? ? ? ? ? ? ? class = j;
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? strcat(labelstr, ", ");
? ? ? ? ? ? ? ? ? ? strcat(labelstr, names[j]);
?? ??? ? ? ?strcat(labelstr, possible);//標簽中加入置信值
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? printf("%s: %.0f%%\n", names[j], dets[i].prob[j]*100);
? ? ? ? ? ? }
? ? ? ? }
///后面保持不變//
修改 src/image.c 文件 draw_detections 函數中 get_label 函數調用的參數
image label = get_label(alphabet, labelstr, (im.h*.02));
源碼中為 0.03,修改為 0.02 后,標簽文字減小,可以根據需要調整。
修改代碼后需要使用 make clean,make 重新編譯。
加入置信值,減小標簽大小后的檢測效果圖!? ? ? ? ? ? ? ? ? ? ? ??
3、使用多 GPU 訓練時,由于并行處理,訓練迭代次數會一次跳過幾輪,導致某些整數次迭代的模型沒有保存。
修改 example/detector.c 文件中的第 148 行
源代碼為:if(i%10000==0 || (i<1000 && i%100==0))// 迭代小于 1000 次,每 100 次保存模型,大于 1000 次,每 10000 次保存模型。
可以根據需要修改訓練多少輪保存一個模型,if(i%1000==0 || (i<1000 && i%100==0)),大于 1000 次,每 1000 次保存模型。
總結
以上是生活随笔為你收集整理的YOLOv3 学习笔记:大神好贴汇总+自身经验记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: darknet: ./src/parse
- 下一篇: yolov3/tiny-yolov3训练