V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)

这是一个V-rep机器人仿真实验,较为简单,适合初学者在入门图像识别、机器学习、机器人学的内容时进行学习与训练。
实验涉及的内容有:V-rep机器人仿真,YOLOV3图像识别,强化学习DDPG,UR5机械臂及RG2机械手,Kinect摄像头。
使用环境:Win10,Pytorch0.4,V-rep
整个实验一共由多篇文章组成,本文是第四部分。

第四部分:YOLOV3图像识别

文章目录

  • 第四部分:YOLOV3图像识别
      • 1. Win10下安装并配置YOLOV3
      • 2. 给训练集打标签
      • 3. 训练集
      • 4. 训练
      • 5. 训练结果
      • 6. 其它参考:

这一部分我们用YOLOV3做一个目标识别实验,识别对象是一个圆球,如图:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第1张图片
在上一篇文章中,我们已经获取到了数据集:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第2张图片
接下来我们解决YOLOV3的安装及配置问题,并训练识别。

1. Win10下安装并配置YOLOV3

我使用的是Github上AlexeyAB作者的项目,下载地址:https://github.com/AlexeyAB/darknet

至于如何安装配置,很多优秀的作者写了很详细的教程,我也是根据这些教程一步步配置成功的,所以我将我看的教程链接放上来,最后再补充一下踩坑记录就好。

教程链接:
https://blog.csdn.net/StrongerL/article/details/81007766
https://blog.csdn.net/StrongerL/article/details/81022514
https://blog.csdn.net/StrongerL/article/details/81023603
https://blog.csdn.net/Yvette_Lucifer/article/details/82856664
https://blog.csdn.net/qq_36417014/article/details/88551805

我是按照上面这些教程一步步安装配置的,作者们已经写的很清楚了。

补充一下我自己的踩坑记录:

  1. CUDA应该下载和自己电脑匹配的版本,方法如下:
    进入“控制面板”界面,在控制面板中找到“NVIDIA 控制面板”
    V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第3张图片
    在“帮助”选择“系统信息”
    V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第4张图片
    在“组件”可以看到CUDA版本号
    V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第5张图片
    所以我下载的是CUDA 9.1版

  2. 最可能出问题的地方一般是在Visual Studio编译的时候,一般出问题的原因都是Visual Studio没配置好,比如下面这个:
    V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第6张图片
    CUDA版本小于10.0的,需要将compute_75,sm_75删掉,比如我的CUDA是9.1,所以我只保留compute_30,sm_30,如果CUDA大于等于10.0,则保留compute_75,sm_75,compute_30,sm_30

2. 给训练集打标签

如果上一步成功了,我们就开始训练自己的训练集,使用软件labelimg给训练集打标签。
labelimg下载链接:
https://pan.baidu.com/s/1Yi3fRezO2eV4ZJcD1tcpoA
提取码:rsif

使用方法
解压后如下图所示:

data文件夹里有predefined_classes.txt,里面填写标签类型。举个例子,假如我们有两个标签:catdog,那我们应该这样写:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第7张图片
由于我们只识别一个物体,所以只有一个标签类型,我们设为target,结果如图:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第8张图片
然后打开labelImg.exe,打开训练集的文件夹目录,如图:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第9张图片
然后给每张训练集打标签:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第10张图片
然后保存,会得到同名的.xml文件,如图:
打标签前:

打标签后:
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第11张图片
给每张图都打好标签就可以了。

3. 训练集

我打包好了训练的模板,可以从这个链接下载:
https://github.com/Ianlande/training-set-template-of-yolov3-win

模板的文件夹层次

  1. backup:空文件夹
  2. cfg:training_set_template.cfgtraining_set_template_obj.data
  3. data:Images(空文件夹),labels(空文件夹),training_set_template_obj.namestrain.txtvalid.txt
  4. Image_origin:空文件夹
  5. script:rename_img.pytraining_set_label.py

由于github无法上传空文件夹,所以模板里面有的文件夹没有,自己补全就好。

每个文件夹的作用如下:

  1. backup : 训练后得到的权重文件保存在这个目录下
  2. cfg : 一些配置文件
  3. data : 训练集、验证集等各种数据
  4. Image_origin : 原始训练集
  5. script : 脚本文件,用于处理数据

使用方法

  1. 将采集到的所有原始训练集放入Image_origin文件夹中。
  2. 使用script文件夹下的rename_img.py,这个程序会将这些图片重命名,重命名后的图片会被放入data\Images文件夹中,你需要修改rename_img.py中的第6、7行代码:
    img_path改成Image_origin所在的路径,将new_img_save_path改成data\Images所在的路径,例如:
img_path = "D:\\MyNetWork\\Vrep_yolov3_training\\Image_origin"
new_img_save_path = "D:\\MyNetWork\\Vrep_yolov3_training\\data\\Images"
  1. 将打标签后得到的所有xml文件放入data\labels中。
  2. 运行script文件夹下的training_set_label.py,该程序会为每一个训练集的.xml文件创建一个.txt文件,并将其放入data\Images中,同时根据9:1的比例分配训练集与测试集,并分别写入train.txtvalid.txt。但training_set_label.py里面的文件夹路径也需要自行修改,和第2点一样。
    最后data\Images如图:
    V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第12张图片
    data\labels如图:
    V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第13张图片
  3. 修改其它配置文件:
    (1). 修改 cfg中的training_set_template.cfg:
    修改classesfilters。如果检测A类物体,则classes=A,filters=(classess+5)*3=(A+5)*3。由于我们识别一个物体,所以A=1,filters=18;修改以下六处:
    Line 607: classes=1
    Line 693: classes=1
    Line 780: classes=1
    Line 600: filters=18
    Line 686: filters=18
    Line 773: filters=18
    即修改每个[yolo]里面的classes,和每个[yolo]上一个[convolutional]的filters
    可以参考:https://blog.csdn.net/hrsstudy/article/details/65447947
    (2).修改 cfg中的training_set_template_obj.data:
    存放需要识别的类别数以及各种配置文件的路径。
    classes:识别的类型数,我们只识别一种物体,所以为1。
    train:train.txt所在的路径
    valid:valid.txt所在的路径
    names:data\training_set_template_obj.names所在的路径
    backup:backup文件夹所在路径
    (3). data中的training_set_template_obj.names:
    存放需要识别的类别种类,注意最后一行必须是一个回车键

4. 训练

在windows版本的Darknet\darknet-master\build\darknet\x64下创建一个.cmd文件。
填入如下格式的命令:
darknet.exe detector train (.data文件路径) (.cfg文件路径) -i 0 (使用的预模型路径)
其中-i 0表示使用第一个GPU ,
例如:

darknet.exe detector train D:\\MyNetWork\\Vrep_yolov3_training\\cfg\\yolov3-vrep-ddpg-obj.data   D:\\MyNetWork\\Vrep_yolov3_training\\cfg\\yolov3-vrep-ddpg.cfg   -i 0   darknet53.conv.74

pause

最后的darknet53.conv.74指的是在darknet53.conv.74权重的基础上进行训练,也可以用别的权重。
如果你打算使用darknet53.conv.74,你得确保Darknet\darknet-master\build\darknet\x64路径下有darknet53.conv.74这个文件,没有的话可以通过下面这个链接下载:https://pan.baidu.com/s/1Ums97B7Mlzw6G5jxmZ_Ndg
提取码:8fqc

然后运行这个.cmd文件就可以了。

5. 训练结果

再创建一个.cmd文件,填入如下格式的命令:

darknet.exe detector test (.data文件路径) (.cfg文件路径) -i 0 (backup文件中的权重文件路径)

例如:

darknet.exe detector test D:\\MyNetWork\\Vrep_yolov3_training\\cfg\\yolov3-vrep-ddpg-obj.data   D:\\MyNetWork\\Vrep_yolov3_training\\cfg\\yolov3-vrep-ddpg.cfg   -i 0  D:\\MyNetWork\\Vrep_yolov3_training\\backup\\yolov3-vrep-ddpg_2000.weights

pause

V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)_第14张图片
我们可以看到训练结果还不错。

6. 其它参考:

https://blog.csdn.net/guduruyu/article/details/81607063
https://blog.csdn.net/xiaohu2022/article/details/79211732

你可能感兴趣的:(V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别))