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目录下修改效果相同, 但很遗憾的是修修改前与修改后虽然识别种类发生了变化,但是运行时间并没有变
  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/vactor/p/7881299.html
Copyright © 2011-2022 走看看