YOLO5 旋转模型图片标注及训练

使用工具

图片获取工具—— opencv_display.py
图片标注工具—— rolabelimg
标注转换工具—— roxml_to_dota.py
模型训练代码—— YOLOv5_DOTA_OBB

图片标注

  1. 获取图片
    新建文件夹,用来保存物体图片。图片要求:图片必须为方形(长、宽相等)、图片为 .png 格式。
    下载图片获取工具 opencv_display.py
    修改 opencv_display.py 文件,主要修改起止点坐标以及图片保存目录,具体修改步骤参考视频 获取图片
    执行代码:

    roslaunch kinect2_bridge kinect2_bridge.launch
    # 打开新终端
    conda activate YOLO
    python opencv_display.py
    

    如果图片区域内没有要检测的物体,关闭代码重复调整脚本内容,使视野内有物体,在图片显示区域按动键盘 s 键实现图片获取工作。图片获取完成后,按ctrl + c 关闭代码。

  2. 图片标注
    rolabel 虚拟环境下跳转到 ~/Public/roLabelImg 目录下,运行 roLabelImg.py 文件进行图片标注。

    conda activate rolabel
    cd
    cd Public/roLabelImg/
    # 使用前可修改 data/predefined_classes.txt 文件修改要标注的物体类别。
    python roLabelImg.py
    

    标注工具界面如下:

      点击界面左侧open dir 按钮,打开保存图片的文件夹。
      点击界面的 Create RotatedRBox 按钮进行旋转标注,拖动鼠标放置标注框,鼠标左击标注框四角的点进行拖动可调整标注框的大小, 鼠标右击标注框四角的点进行拖动可调整标注框的旋转角度,标注完成后点击save 键进行保存,重复以上步骤,完成所有图片的标注,保存时把所有的标注文件保存在同一个文件夹。标注过程参考视频 标注图片

标注处理

  1. 下载训练模型文件。
    下载 YOLOv5_DOTA_OBB 代码到本地,解压文件夹到合适的目录,建议解压到 Documents 目录下。
  2. 下载标注转换工具 roxml_to_dota.py
    在脚本第123行修改 dir 变量,修改为存放标签的文件夹路径,保存,运行该脚本,会在原来的标注文件夹生成 TXT 格式的标注文件。过程参考视频 标注处理_01
  3. 复制图片文件以及标注文件。
    跳转到目录 YOLOv5_DOTA_OBB/DOTA_devkit_YOLO-master 文件夹下,修改文件 dota_utils.py,第18行,修改 classnames_v1_5 内容为物体标注类别,注意类别顺序。
    复制物体图片到 YOLOv5_DOTA_OBB/DOTA_devkit_YOLO-master/DOTA_demo/images 文件夹下,将上个步骤生成的 TXT格式的标注文件复制到 YOLOv5_DOTA_OBB/DOTA_devkit_YOLO-master/DOTA_demo/labelTxt 文件夹下。文件复制完成之后,运行 YOLOv5_DOTA_OBB/DOTA_devkit_YOLO-master/YOLO_Transform.py 文件,运行完成之后会在 YOLOv5_DOTA_OBB/DOTA_devkit_YOLO-master/DOTA_demo/yolo_labels 文件夹下生成新的标注文件。具体步骤参考视频 标注处理_02

模型训练

  1. 复制图片到对应的路径。
    跳转路径到刚才解压的文件夹下,将图片复制到 ./DOTA_demo_view/images 文件夹下,将YOLOv5_DOTA_OBB/DOTA_devkit_YOLO-master/DOTA_demo/yolo_labels 文件夹下新生成的标注文件复制到 ./DOTA_demo_view/labels 文件夹下。
    修改文件 ./data/DOTA_ROTATED.yaml ,修改 nc 为标签类别的数量,name 为标签类别信息,注意标签类别顺序。
  2. 开始训练
    修改 train.py 文件,第652行,将default=[600, 600] 修改为自己图片的分辨率。之后开始训练。如果报显存溢出的错误,可以尝试调整batch-size 以及 device 的值消除报错。

    conda activate YOLO
    # 安装 swig
    cd  \.....\yolov5_DOTA_OBB\utils
    sudo apt-get install swig
    # 生成 python 库, 该步骤仅执行一次,以后不需要重复执行
    swig -c++ -python polyiou.i
    python setup.py build_ext --inplace
    # 开始训练
    cd ..
    python train.py
    
  3. 复制训练好的权重文件。
    训练完成后,终端会输出生成的权重以及权重目录,具体输出如图:

    等待训练完成,将训练好的权重文件(best.pt)复制到目录 /home/ts/catkin_ws/src/yolo_detection/src/YOLO/pick/下。

YOLO5 旋转模型图片标注及训练相关推荐

  1. AI 图片截取、ffmpeg使用及安装, anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题

    AI 图片截取(ffmpeg), anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题 一.截取有效图片 录制RTSP视频脚本 #!/ ...

  2. 13亿参数,无标注预训练实现SOTA:Facebook提出自监督CV新模型

    作者|陈萍 来源|机器之心 Facebook AI 用 10 亿张来自Instagram的随机.未标注图像预训练了一个参数量达 13 亿的自监督模型 SEER,该模型取得了自监督视觉模型的新 SOTA ...

  3. 用yolo3训练自己的数据集(包含数据搜集,图片标注,图片批量命名以及如何修改代码)——口罩佩戴以及规范佩戴口罩检验

    用yolo3训练自己的数据集--口罩佩戴及规范性佩戴检验 前言 1. 数据集处理 1.1 数据搜集(多途径) 1.2 自己制作数据集 2.图片标注 2.1 图片批量命名 2.2 使用labelimg进 ...

  4. (二)目标检测模型的评测与训练技巧

    转载自知乎:https://zhuanlan.zhihu.com/p/34142321 关于作者: @李家丞同济大学数学系本科在读,现为格灵深瞳算法部实习生. -------------------- ...

  5. “智能”基石:人工智能数据标注与训练,是决定智能时代的第一步

    记者 | 邓晓娟 2021年5月20日~23日,由深圳市科学技术协会.深圳市商务局.深圳市福田区人民政府共同指导,深圳市科技开发交流中心.深圳市人工智能行业协会联合主办的2021第二届深圳国际人工智能 ...

  6. 环境搭建、标注、训练、推断,超详细的目标检测开发流程

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自飞桨PaddlePaddle.基于PaddleDetection,详细描述了一个完整目标检测项目流程,非常值得收藏. [飞桨开发者说]:余志良 ...

  7. 如何写一个游戏AI(三)0-9手写数字图片识别AI训练

    接上回书,那么如何写一个入门的简单AI训练(0-9)数字图片试别AI.本文的程序,配合我训练的模型试别准确率只有98.8%,不过也是算是给我开辟了新的知识面. 1.为什么使用卷积神经网络 原因有二:1 ...

  8. 目标检测之YOLO模型数据生成及训练

    目录 1.数据准备 2.将视频切成图片 3.标注工具标图输出xml文件 4.转换文件格式 1)去除未标注的图片 2)xml文件格式转换 3)图片和txt文件汇总成训练文件 4)在darknet/scr ...

  9. 借助numpy.rot90实现图片顺时针旋转90°,旋转后图片没有黑边

    返回numpy 类型图片, numpy 通道是 "BGR" import cv2 import glob import numpy as np from PIL import Im ...

最新文章

  1. IOS一些显示效果和动画效果资料
  2. 离散小波变换 python_CDF 9/7离散小波变换(卷积)
  3. 增大mysql修改表空间_Oracle修改表空间为自动扩展
  4. 日志框架NLog之将日志发送到邮件
  5. 前端学习(1045):todolist本地存储加载到页面
  6. 学姐百度实习面经(轻松拿offer)
  7. MySQL学习之备份
  8. 服务器系统安装oracle数据库,oracle数据库服务器安装教程
  9. 源码分析——ConcurrentHashMap
  10. 针对部分软件无法开机自启动情况的解决措施(已解决)
  11. 运放输入偏置电流方向_运放-输入偏置电流与输入失调电流
  12. 秒杀活动总结(秒杀之一)
  13. 恶劣的仿造文化:从meebo到米博
  14. 每日小技巧,用python给喜欢的主播自动发弹幕
  15. Python 各种测试框架简介(三):nose
  16. teamviewer 5分钟断线解决办法
  17. 2021年起重机械指挥考试技巧及起重机械指挥证考试
  18. 携手华为打造鲲鹏产业生态 | 麒麟信安亮相鲲鹏开发者创享日·长沙站
  19. nginx配置防止域名恶意解析
  20. node.js毕业设计安卓基于Android的超市会员管理系统开发(程序+APP+LW)

热门文章

  1. codeblocks卸载后再重装还是老样子
  2. 怎样做个微信图文链接广告宣传活动?
  3. Canvas绘制一个时钟
  4. 嵌入式中的BSP---BSP到底是什么?
  5. 2018-海信-算法工程师-面试问题
  6. java代码导出excel支持数据有效性验证,即excel单元格可以下拉选择
  7. 【CDN】- 什么是CDN
  8. 硝酸浓度对多孔氧化锌薄膜刻蚀工艺能的影响
  9. nRF52832之硬件I2C
  10. 51nod 1298 圆与三角形(几何知识)