修改YOLO使其顯示自定義類別


基本參考自這篇文章(http://blog.csdn.net/ma3252788/article/details/74659230),主要用來記錄下自己遇到的問題

 

根據@赤戰約風 的帖子做如下修改可以使其只顯示人這個類別

一.修改源代碼

cfg/coco.data

classes= 1 #修改成1 train = /home/pjreddie/data/coco/trainvalno5k.txt valid = coco_testdev #valid = data/coco_val_5k.list names = data/coco.names backup = /home/pjreddie/backup/ eval=coco

 

src/detector.c

void run_detector(int argc, char **argv)//該函數中,倒數第三行.line=542 int classes = option_find_int(options, "classes", 1);//最后一個參數修改成1 void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh)函數中 draw_detections(im, l.w*l.h*l.n, thresh, boxes, probs, names, alphabet, 1); //最后一個參數修改成1。line=481

 

二.重新編譯和測試

1.重新編譯

make clean make

2.測試

./darknet detector test cfg/coco.data cfg/yolo.cfg yolo.weights data/dog.jpg
這樣的修改其實還是有點麻煩的,參考 yangshun8889大神的回答,其實還可以這樣:
 

我假設你使用的是VOC.name, 在VOC中,car對應着6, person對應着14,然后修改代碼。在draw_detections()函數中第一個for循環int class = max_index(probs[i], classes);代碼后面添加if(class!=6 && class!=14){continue;}

這樣就可以檢測人和車了。
 
 
參考鏈接:

http://blog.csdn.net/u012235003/article/details/54576974

https://groups.google.com/d/msg/darknet/9Geu1zebfxo/rt2zLVpVAwAJ
 
 
我進行修改的時候,應該是yolo作者修改了代碼以及代碼結構,detector.c並不存在src目錄下,而是在example目錄下。到example目錄下修改效果相同, 但很遺憾的是修修改前與修改后雖然識別種類發生了變化,但是運行時間並沒有變


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM