声明:作为V-rep机器人仿真的初学者,看到博主Ianlande 的相关博客,故转载。欢迎大家访问原博客
这是一个V-rep机器人仿真实验,较为简单,适合初学者在入门图像识别、机器学习、机器人学的内容时进行学习与训练。
实验涉及的内容有:V-rep机器人仿真,YOLOV3图像识别,强化学习DDPG,UR5机械臂及RG2机械手,Kinect摄像头。
使用环境:Win10,Pytorch0.4,V-rep
整个实验一共由多篇文章组成,本文是第四部分。
第四部分:YOLOV3图像识别
这一部分我们用YOLOV3做一个目标识别实验,识别对象是一个圆球,如图:
在上一篇文章中,我们已经获取到了数据集:
接下来我们解决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
我是按照上面这些教程一步步安装配置的,作者们已经写的很清楚了。
补充一下我自己的踩坑记录:
-
CUDA应该下载和自己电脑匹配的版本,方法如下:
进入“控制面板”界面,在控制面板中找到“NVIDIA 控制面板”
在“帮助”选择“系统信息”
在“组件”可以看到CUDA版本号
所以我下载的是CUDA 9.1版 -
最可能出问题的地方一般是在Visual Studio编译的时候,一般出问题的原因都是Visual Studio没配置好,比如下面这个:
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
,里面填写标签类型。举个例子,假如我们有两个标签:cat
和dog
,那我们应该这样写:
由于我们只识别一个物体,所以只有一个标签类型,我们设为target
,结果如图:
然后打开labelImg.exe
,打开训练集的文件夹目录,如图:
然后给每张训练集打标签:
然后保存,会得到同名的.xml
文件,如图:
打标签前:
打标签后:
给每张图都打好标签就可以了。
3. 训练集
我打包好了训练的模板,可以从这个链接下载:
https://github.com/Ianlande/training-set-template-of-yolov3-win
模板的文件夹层次:
- backup:空文件夹
- cfg:
training_set_template.cfg
,training_set_template_obj.data
- data:Images(空文件夹),labels(空文件夹),
training_set_template_obj.names
,train.txt
,valid.txt
- Image_origin:空文件夹
- script:
rename_img.py
,training_set_label.py
由于github无法上传空文件夹,所以模板里面有的文件夹没有,自己补全就好。
每个文件夹的作用如下:
- backup : 训练后得到的权重文件保存在这个目录下
- cfg : 一些配置文件
- data : 训练集、验证集等各种数据
- Image_origin : 原始训练集
- script : 脚本文件,用于处理数据
使用方法:
- 将采集到的所有原始训练集放入
Image_origin
文件夹中。 - 使用
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"
- 将打标签后得到的所有xml文件放入
data\labels
中。 - 运行
script
文件夹下的training_set_label.py
,该程序会为每一个训练集的.xml
文件创建一个.txt
文件,并将其放入data\Images
中,同时根据9:1的比例分配训练集与测试集,并分别写入train.txt
和valid.txt
。但training_set_label.py
里面的文件夹路径也需要自行修改,和第2点一样。
最后data\Images
如图:
data\labels
如图:
- 修改其它配置文件:
(1). 修改cfg
中的training_set_template.cfg
:
修改classes
与filters
。如果检测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
我们可以看到训练结果还不错。6. 其它参考:
https://blog.csdn.net/guduruyu/article/details/81607063
https://blog.csdn.net/xiaohu2022/article/details/79211732