基于paddledetection在ROS中搭建红绿灯检测控制车模运动(2)—— 数据集制作以及训练
前言
第一节:
基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)—— 环境搭建准备以及软件安装
第二节:
基于paddledetection在ROS中搭建红绿灯检测控制车模运动(2)—— 数据集制作以及训练
第三节:
基于paddledetection在ROS中搭建红绿灯检测控制车模运动(3)—— 使用训练结果在ros中仿真红绿灯控制小车运动
项目地址
训练部分aistudio地址:传动门
racecar仿真软件下载地址:传送门
本地项目下载地址:传送门
数据准备
打开仿真环境:
roslaunch racecar_gazebo racecar_normal_light_runway.launch
在本地pycharm中新建一个工程文件:proj6_lightContrl/src在src下创建脚本读取ros中摄像头数据并按键截图保存本地,prtSc.py文件如下:
import rospy,cv2
from sensor_msgs.msg import Image
import sys
sys.path.append("~/catkin_workspace/install/lib/python3/dist-packages/")
import cv_bridgeclass Follower:def __init__(self):self.bridge = cv_bridge.CvBridge()#cv2.namedWindow("window", 1)self.image_sub = rospy.Subscriber('/camera/zed/rgb/image_rect_color',Image, self.image_callback)self.num1 = 0self.num2 = 0def image_callback(self, msg):self.image = self.bridge.imgmsg_to_cv2(msg,desired_encoding='bgr8')cv2.imshow("pic",self.image)k = cv2.waitKey(3)if k == 27: # 按ESC退出cv2.destroyAllWindows()elif k == ord('r'): # 按r保存并退出self.num1 += 1cv2.imwrite("./red/" + str(self.num1) + ".jpg", self.image)print("保存成功:" + str(self.num1) + ".jpg")elif k == ord('g'): # 按r保存并退出self.num2 += 1cv2.imwrite("./green/" + str(self.num2) + ".jpg", self.image)print("保存成功:" + str(self.num2) + ".jpg")if __name__ == '__main__':rospy.init_node('follower')follower = Follower()rospy.spin()
按键r保存摄像头图片到red文件夹下,按键g保存到green文件夹下:
调整角度和远近制作自己的数据集:
图片标注
cd labelImg
python labelImg.py
打开图片路径:
选择框选:
标注完成:
在aistudio上准备描述文件
在aistudio上创建项目(以下操作均在aistudio上进行)
首先下载paddledetection:
!git clone https://github.com/PaddlePaddle/PaddleDetection.git
将创建的red和green文件夹压缩上传到aistudio上的paddledetection中dataset下的my_light下执行解压命令:
%cd PaddleDetection-release-0.3/dataset/my_light/
!unzip picture.zip
安装paddledetection依赖:
%cd ~/PaddleDetection-release-0.3/
!pip install -r requirements.txt
测试aistudio环境:
#测试项目环境
!export PYTHONPATH=`pwd`:$PYTHONPATH
!python ppdet/modeling/tests/test_architectures.py
输出如下即可:
在my_light文件夹下创建green_xmls和red_xmls存放xml文件,方便记录txt:
%cd ~/PaddleDetection-release-0.3/dataset/my_light/
%mkdir green_xmls
%cd ./green
%mv *.xml ../green_xmls
%cd ~/PaddleDetection-release-0.3/dataset/my_light/
%mkdir red_xmls
%cd ./red
%mv *.xml ../red_xmls
记录xml和picture的关系:
# 记录train图片
import os
import randompath = "/home/aistudio/PaddleDetection-release-0.3/dataset/my_light/"
total_red = os.listdir(path + "red/")
total_green = os.listdir(path + "green/")num = len(total_red)
list=range(num)ftrain = open('/home/aistudio/PaddleDetection-release-0.3/dataset/my_light/train.txt', 'w')
fval = open('/home/aistudio/PaddleDetection-release-0.3/dataset/my_light/val.txt', 'w')for i in list:if i % 9 != 0:name=total_red[i][:-4]writeName = "red/" + name + ".jpg " + "red_xmls/" + name + ".xml\n"ftrain.write(writeName)else:name=total_red[i][:-4]writeName = "red/" + name + ".jpg " + "red_xmls/" + name + ".xml\n"fval.write(writeName)for i in list:if i % 9 != 0:name=total_green[i][:-4]writeName = "green/" + name + ".jpg " + "green_xmls/" + name + ".xml\n"ftrain.write(writeName)else:name=total_green[i][:-4]writeName = "green/" + name + ".jpg " + "green_xmls/" + name + ".xml\n"fval.write(writeName)ftrain.close()
fval.close()
输出的train.txt如下:
输出的val.txt如下:
数据好像有点少哎!
在train.txt同目录创建label_list.txt:
训练
修改configs/ssd/ssd_mobilenet_v1_voc.yml这个文件,主要修改位置:
num_classes: 3
trainReader下的anno_path和dataset_dir
anno_path: train.txt
dataset_dir: dataset/my_lightEvalReader下的anno_path和dataset_dir
anno_path: val.txt
dataset_dir: dataset/my_lightTestReader下的anno_path和dataset_dir:
dataset_dir: dataset/my_light
anno_path: label_list.txt
训练:
#训练模型
%cd ~/PaddleDetection-release-0.3/
# ssd训练
!python -u tools/train.py -c configs/ssd/ssd_mobilenet_v1_voc.yml -o --eval
等待训练完成即可:
基于paddledetection在ROS中搭建红绿灯检测控制车模运动(2)—— 数据集制作以及训练相关推荐
- 基于paddledetection在ROS中搭建红绿灯检测控制车模运动(3)—— 使用训练结果在ros中仿真红绿灯控制小车运动
前言 第一节: 基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)-- 环境搭建准备以及软件安装 第二节: 基于paddledetection在ROS中搭建红绿灯检测控制车模 ...
- agx 安装ros opencv_基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)
前言本来想直接用百度智能车比赛的数据集训练,但是发现在ROS中搭建红绿灯模型和提供的数据集在颜色亮度外形上都有点差别- -无奈从创建数据集开始.目录:基于paddledetection在ROS中搭建红 ...
- 【项目实践】基于Mask R-CNN的道路物体检测与分割(从数据集制作到视频测试)...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1.内容概要 Mask R-CNN的框架是对Faster R-CNN的扩展,与BBox识别并行的增加一 ...
- ROS中搭建分布式系统 主从机模式
系统介绍: 机器人端(主机): 设备:工控机sz 主机名:sz-Default-string 固定IP:192.168.5.101 远程PC(从机): 设备:笔记本Dell 主机名:ubuntu 固定 ...
- ROS中的机器人模型控制——ros_control
ros_control就是ROS为开发者提供的机器人控制中间件,可以在丰富的机器人应用中通用,包含一系列控制器接口.传动装置接口.硬件接口.控制器接口.控制器工具箱等,可以帮助机器人应用功能包快速落地 ...
- 智能家居-基于香橙派zreo2——手把手搭建、继电器控制灯(一)
一.什么是设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是 ...
- 基于MTCNN和FaceNet的实时人脸检测识别系统
文章目录 模型介绍 MTCNN FaceNet 基于MTCNN和FaceNet的实时人脸检测识别系统 在LFW数据集上测试 参考文献 GitHub项目地址:https://github.com/Har ...
- 基于resnet-18的轻量型车道检测研究
基于resnet-18的轻量型车道检测研究 1.论文介绍以及实验 2.参考内容 论文2: Ultra Fast Structure-aware Deep Lane Detection 官方代码地址:h ...
- 用 Python 和 OpenCV 检测和跟踪运动对象
这个该死的家伙.我就知道他偷了我最后一罐啤酒! 对于一个男人来讲,这些话永远都不该说.但是当我关上冰箱门的时候,我愤怒地叹息,感到厌恶,自言自语地说了这些. 你看,我花了12个小时写了这篇将要发表的文 ...
最新文章
- socks5 代理
- 三巨头对中国人工智能技术的支撑性作用
- 黑客攻击我们的11步详解及防御建议
- Atitit.论垃圾文件的识别与清理 文档类型垃圾文件 与api概要设计pa6.doc
- if var matlab,matlab中if 语句后面的判别式不能是算术表达式?或者说变量?
- 深度学习笔记之DenseNets
- oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
- 机器学习笔记(十五)——HMM序列问题和维特比算法
- 自定义注解--Annotation
- C#将Access数据库导出为JSON
- 3给定关键字不在字典中_Python龙珠训练营五:数据结构之字符串、字典
- docker-compose listing workers for Build: failed to list workers
- vrp系统和linux区别,华为VRP-文件系统基础
- kryo com.esotericsoftware.kryo.KryoException: Buffer underflow.
- 文件不小心删除了怎么恢复?实用的两个小妙招
- H5移动端css实现向右横向滚动功能
- 完美卸载2011 绿色版软件下载 完美卸载官网
- 1.5-瑞吉外卖-第五天
- 大学生申请专利需要多少钱
- 解决 Problematic frame: C [sigar-amd64-winnt.dll+0x14ed4] 问题 (JDK11 后版本生成 JRE, 得到当前进程)
热门文章
- 案例1:京东商品页面的爬取
- 月入30K!原来那么容易...软件测试工程师的涨薪攻略被我摸透了
- 脉脉发布的人才流动数据,警醒各位2022下半年一定不要裸辞,特别是互联网从业者
- 如何防止低级问题导致的质量事故
- 外包出去找工作被歧视,投几个简历都说介意外包,不考虑外包。
- 慕课乐学python编程题_中国大学mooc慕课_Python编程基础_2020章节测试答案
- QQ互联平台的使用和使用其完成第三方登录
- Windows11设置 CMD默认使用Windows Terminal启动
- 学人工智能以后从事什么工作?AI就业方向-人工智能就业
- 数据查询中所遇到的问题