yolov3 修改 只识别一类(person)

yolov3可以识别多种目标,但是我们可能只需要识别一类物体,例如person。

在编译yolov3之后,默认可以识别多种目标

之前在网上看其他人修改yolov2版本,可以只识别person

具体参考该博客:

但是yolov3版本的代码有变化,需要做出其他修改。在网上找了一下,没有发现yolov3的相关修改,于是自己修改了一下

修改文件:darknet-mastersrcimage.c

修改函数为:draw_detections_v3

在287行:const int best_class = selected_detections[i].best_class;后插入:

if(strcmp(names[best_class], "person") !=0 )
        {
            continue;
        }

在306行:for (i = 0; i < selected_detections_num; ++i) { 后插入:

for (i = 0; i < selected_detections_num; ++i) {
        if(strcmp(names[selected_detections[i].best_class], "person") !=0 )
        {
            continue;
        }

然后重新编译即可

相当于在算法识别所有类别后只输出person类。当然也可以自己重新训练,使之只识别person

参考博客:

经验分享 程序员 微信小程序 职场和发展