根据@赤战约风 的帖子做如下修改可以使其只显示人这个类别
一.修改源代码
cfg/coco.data
1 2 3 4 5 |
classes= 1 #修改成1 train = /home/pjreddie/data/coco/trainvalno5k.txt valid = coco_testdev#valid = data/coco_val_5k.listnames = data/coco.names backup = /home/pjreddie/backup/ eval=coco |
src/detector.c
1 2 |
void run_detector(int argc, char **argv)//该函数中,倒数第三行.line=542int classes = option_find_int(options, "classes", 1);//最后一个参数修改成1void 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.重新编译
1 |
make cleanmake |
2.测试
1 |
./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
本文最后更新于2019年6月13日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!