zoukankan      html  css  js  c++  java
  • java-opencv-训练自己的物体分类器

    参考:
    https://blog.csdn.net/qq_32502511/article/details/79010509
    https://blog.csdn.net/lileiyang12/article/details/10155813
    https://blog.csdn.net/YK_LaNce/article/details/100576560

    本文使用opencv-3.4.1
    第一步:准备文件
        新建目录:negdata(存放负样本),posdata(存放正样本),xml(存放生成的xml),如下:


        收集正,负样本(刚开始可以先用50~100左右的样本量试试看,正,负样本数量最好大于1000,具体看个人感觉)。
        正样本,需要做识别物体的图片(本文收集60张):


        正样本负样本,任意不包含正样本的图片(本文收集106张):

     



    第二步:调整样本,并生成样本描述文件

        调整样本----将正,负样本转换灰度(本文采用:IMREAD_GRAYSCALE),调整大小(本文采用:正20X20,负50X50)(据说,正20X20最佳)。
        调整后正样本:

     


       调整后负样本:

     
        生成样本描述文件:
        cmd 进入posdata目录,执行 dir /b/s/p/w *.jpg > pos.txt
        同理进入negdata目录,执行 dir /b/s/p/w *.jpg > neg.txt
        pos.txt内容如下:

        neg.txt内容如下:

        修改pos.txt文件(neg.txt不用修改)如下:

        “1 0 0 20 20”,为固定格式,其中20指的是照片的像素大小。

    第三步:生成.vec文件

        将opencvuildx64vc14in 下的所有文件复制到posdata目录同级目录下;将上一步最后生成的pos.txt,neg.txt文件也放入该同级目录,如下:
     
        cmd 进入该目录,执行:
        opencv_createsamples.exe -vec pos.vec -info pos.txt -num 60 -w 20 -h 20


        其中-num 60,指的是图片的数量,-w 20 -h 20,指的是图片的规格。
        创建traincascade.bat文件,添加内容:
        opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 48 -numNeg 80 -numStages 10 -w 20 -h 20 -mode ALL
        pause
        其中-numPos 48为训练取的正样本的样本(取样本数量的0.8~0.9,本文取48),-numNeg 80为训练取的负样本的样本(取样本数量的0.8~0.9,本文取80),-numStages 10 表示训练的层数(建议15~20,本文取10),此时目录中文件如下;
       
        双击运行traincascade.bat,如下:
       


        在xml目录下生成的cascade.xml文件就是训练出来的分类器。

  • 相关阅读:
    2020-05-28 Beta冲刺第一天
    团队作业第六次——凡事预则立
    团队作业第六次——alpha阶段问题总结随笔
    团队作业第五次——冲刺总结
    2020-05-08 冲刺第十天
    团队作业第五次——测试随笔
    软件工程实践2019第三次作业
    软件工程实践2019第二次作业
    软件工程实践2019第一次作业
    M4C:TextVQA的分布预测多模态Transformers
  • 原文地址:https://www.cnblogs.com/interdrp/p/15485105.html
Copyright © 2011-2022 走看看