zoukankan      html  css  js  c++  java
  • 修改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目录下修改效果相同, 但很遗憾的是修修改前与修改后虽然识别种类发生了变化,但是运行时间并没有变
  • 相关阅读:
    sqlserver 中的 substring函数(转)
    C#二个相减怎么获得天数,就是比如201225 与201231之间相差的天数
    C++文件添加到项目中
    VS2008动态链接库(DLL)的创建与导入
    美剧字幕绿箭侠第1季第7集
    C++中#define用法
    C++头文件的重复引用
    visual studio中解决方案是什么
    NewWords/300400
    指针
  • 原文地址:https://www.cnblogs.com/vactor/p/7881299.html
Copyright © 2011-2022 走看看