声明:作为V-rep机器人仿真的初学者,看到博主Ianlande 的相关博客,故转载。欢迎大家访问原博客
这是一个V-rep机器人仿真实验,较为简单,适合初学者在入门图像识别、机器学习、机器人学的内容时进行学习与训练。
实验涉及的内容有:V-rep机器人仿真,YOLOV3图像识别,强化学习DDPG,UR5机械臂及RG2机械手,Kinect摄像头。
使用环境:Win10,Pytorch0.4,V-rep
整个实验一共由多篇文章组成,本文是第五部分。
第五部分:YOLOV3与V-rep
在上一篇文章的结尾,我们训练出来了结果,效果还不错,但存在一个问题,上篇文章使用的Darknet
项目是C语言写的,而且要运行.cmd
。在这一部分我们要使用python,并将它和V-rep连接起来。
YOLOV3的pytorch版
YOLOV3的pytorch版官方源码链接:https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
我们使用YOLOV3的pytorch版,但是这个项目没有训练数据集这个功能,只有测试训练集的功能。但是我们在上一篇文章已经获得了训练好的权重。简单来说,我的思路是:用上一篇文章的Darknet
项目来训练数据集,将训练出来的权重,放到YOLOV3的pytorch版上测试。
强烈推荐看看下面这四篇博客,解释了YOLOV3的pytorch版的程序,写的很详细,我就不重复解释了,也想不到有什么需要补充的:
https://blog.csdn.net/qq_34199326/article/details/84072505
https://blog.csdn.net/qq_34199326/article/details/84206079
https://blog.csdn.net/qq_34199326/article/details/84349977
https://blog.csdn.net/qq_34199326/article/details/84529661
根据YOLOV3的pytorch版,我稍稍修改了一下程序,使其能用在V-rep上。
修改前的项目:
修改后的项目:
修改后增加了七个文件:
darknet.py
,darknetUtils.py
,yolo.py
,pallete
,robotDetect.py
,cfg
文件夹,imgTempDet
文件夹
cfg
文件夹包含:
yolov3-vrep-ddpg_3000.weights
是上一篇文章中Darknet
项目训练出来的权重,我将它放到YOLOV3的pytorch版上来运行。由于GitHub不能上传大于500M的文件,所以yolov3-vrep-ddpg_3000.weights
不在GitHub项目里。
另外两个.cfg
和.names
文件和上一篇文章中的training_set_template.cfg
、training_set_template_obj.names
内容一样。
imgTempDet
文件夹和imgTemp
文件夹作用类似,用来储存识别出的图像。
pallete
:调色板文件,给识别出的图像画框时用的颜色文件。
darknet.py
,darknetUtils.py
,yolo.py
:YOLOV3的pytorch版中的部分程序。
robotDetect.py
:与robotControl.py
类似,操作方法一样,只不过是在其基础上增加了视频帧识别的功能,使摄像头的视频帧可以被YOLOV3检测识别并导出在窗口上。如图:
可以看到,导出的图像中,已经识别出了目标球体并用红框框住。
实现方法比较简单,因为视频就是一帧帧图片构成的,对每张图片进行实时识别就是对视频进行识别了,核心程序如下:
img = cv2.imread("imgTemp\\frame.jpg") # 获取图片
frame, coordinate = yolo.detectFrame(img) # 检测
cv2.imwrite("imgTempDet\\frame.jpg", np.array(frame)) # 储存检测结果图
ig = pygame.image.load("imgTempDet\\frame.jpg") # 读取检测结果图
完整程序比较长,就不在这里贴出来了,已上传Github,需要的可以自取,Github链接:https://github.com/Ianlande/Vrep_yolov3_ddpg_pytorch