yolov3 -DarkNet训练自己的数据识别person一个类(伪,其实是用voc2007的图片自己手动标注)

继续做毕设,yolov3已经是我第三个方向了,再做不出来,我估计就要不能毕业了,悲伤。。。
全篇主要参考的是 https://blog.csdn.net/qq_35451572/article/details/80384674 ,如果没有特殊指明,本文中的教程就是指这篇
感谢博主泉伟,但是要注意,公式是3x(5+class),而且全文有三处class要改

1demo测试

1.1下载

1,先下载,下载地址 https://github.com/pjreddie/darknet
2 ,下载好以后解压,然后终端进入该路径下,嗯,一般自己手打的话,一定要善用tab键的自动补全功能啊

cd darknet-master

3修改Makefile文件

GPU=1
CUDNN=1
OPENCV=1

注意 坑1:我按照教程上来修改,结果后面编译时报错Makefile:78: recipe for target ‘darknet’ failed,这个是因为我opencv的环境没有弄好,因此我就把makefile里面给关了使opencv=0,其实还是应该自己解决一下

GPU=1
CUDNN=1
OPENCV=0

4改好以后保存Makefile文件,然后输入以下命令进行编译

make -j8

ps:其实 make -j 也可以
5下载权重文件

  wget https://pjreddie.com/media/files/yolov3.weights

6,运行demo

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

可以看到识别的结果,识别的图片就是predictions.jpg那张照片中可以看到的

2训练自己的数据集

2.1数据准备

1将自己制作好的voc数据集放入darknet-master/scripts这个文件夹中,
我的voc数据集长这样子
名字叫VOCdevkit,里面有一个文件夹叫VOC2007,VOC2007文件夹下有三个文件夹, Annotations和 ImageSets还有 JPEGImages,这几个文件夹下都要有东西,我之前傻傻的,只是建了这几个文件夹,Main文件夹下只是新建了那几个文件,内容是空的,但其实那4个文件都要用脚本生成,结果我傻傻的后面报错卡了好几天,百度都不好使,看来犯这种奇葩错误的也就只有我了,现在贴一下我的voc制作过程,网上教程很多,如果会的可以直接跳过。。。毕竟我是新手,真的伤不起,那么白痴的错估计只有我一个会犯。。。

 Annotations
 ImageSets
       --Main
           --test.txt
           --train.txt
           --trainval.txt
           --val.txt
JPEGImages

2.1.1制作voc数据集

1 JPEGImages存放的是jpg照片,然后把它重命名,重命名 的python代码如下,网上参考的是教程 https://blog.csdn.net/liuyan20062010/article/details/78905517
感谢博主大大liuyan20062010

tips :路径不要手打,容易出错,可以复制那个文件夹,然后粘贴,就可以出现它的路径 了。

重命名6位数字的python代码如下,一定要改路径为自己的jpg图片路径

import os  
      
class BatchRename():  
      #  ''''' 
     #   批量重命名文件夹中的图片文件 
     
       # '''  
        def __init__(self):  
            #我的图片文件夹路径horse  
            self.path = '/home/luajx/wuyihong/voc_my/JPEGImages' 
        def rename(self):  
            filelist = os.listdir(self.path)  
            total_num = len(filelist)  
            i = 1  
            n = 6  
            for item in filelist:  
                if item.endswith('.jpg'):  
                    n = 6 - len(str(i))  
                    src = os.path.join(os.path.abspath(self.path), item)  
                    dst = os.path.join(os.path.abspath(self.path), str(0)*n + str(i) + '.jpg')  
                    try:  
                        os.rename(src, dst)  
                        print ('converting %s to %s ...' % (src, dst)) 
                        i = i + 1  
                  
                    except:  
                        continue  
            print ('total %d to rename & converted %d jpgs' % (total_num, i))  
      
if __name__ == '__main__':  
        demo = BatchRename()  
        demo.rename()  

2运行上面那个python代码,重命名以后就是进行图片标注,我使用的是labeIimg,花费漫长的时间终于标好了,将标注好的文件放在 Annotations文件夹中。
标好的xml文件长这样,可以看到我的difficult标签长这样–Difficult,这真的超级坑,后面会讲到我的心酸血泪史

<annotation verified="no">
  <folder>JPEGImages</folder>
  <filename>000001</filename>
  <path>E:\VOC2007\JPEGImages\000001.jpg</path>
  <source>
    <database>Unknown</database>
  </source>
  <size>
    <width>353</width>
    <height>500</height>
    <depth>3</depth>
  &l
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值