1.Cityscapes目标检测标注转YOLO格式

参考: https://blog.csdn.net/Shenpibaipao/article/details/111240711

数据集下载:https://www.cityscapes-dataset.com/downloads/
下载leftImg8bit_trainvaltest.zipgtFine_trainvaltest.zip ,创建文件夹cityscape,解压到cityscape放成如下的格式:

─ cityscape
── getfine
── leftImg8bit
── 处理脚本.py

执行:

python 处理脚本.py

生成:

─ cityscape
── getfine
── leftImg8bit
── 处理脚本.py
──  labels  # 存放框图的标签
──  images # yolov3+版本的脚本将会拷贝输出图片到这个位置
──  yolo_train.txt  # 训练样本的路径
──  yolo_val.txt # 验证样本的路径
──  yolo_test.txt # 测试样本的路径

处理脚本:

import json
import os
from pathlib import Path
import re
from tqdm import tqdm
import shutildef convert_annotation(image_id, paths):global label_mapdef find_box(points):  # 该函数用来找出xmin, xmax, ymin ,ymax 即bbox包围框_x, _y = [float(pot[0]) for pot in points], [float(pot[1]) for pot in points]return min(_x), max(_x), min(_y), max(_y)def convert(size, bbox):  # 转为中心坐标# size: (原图宽, 原图长)center_x, center_y = (bbox[0] + bbox[1]) / 2.0 - 1, (bbox[2] + bbox[3]) / 2.0 - 1center_w, center_h = bbox[1] - bbox[0], bbox[3] - bbox[2]return center_x / size[0], center_y / size[1], center_w / size[0], center_h / size[1]final_label_path, final_output_path = pathslabel_json_url = final_label_path / f'{image_id}_gtFine_polygons.json'# 输出到 :final_output_path / f'{image_id}_leftImg8bit.txt'load_dict = json.load(open(label_json_url, 'r'))  # 图像的实例output_cache = []for obj in load_dict['objects']:  # load_dict['objects'] -> 目标的几何框体obj_label = obj['label']  # 目标的类型if obj_label in ['out of roi', 'ego vehicle']:  # 直接跳过这两种类型 注意测试集里只有这两种类型 跳过的话测试集合里将为空的标签continueif obj_label not in label_map.keys():  # 记录目标类型转为int值label_map[obj_label] = len(label_map.keys())  # 标签从0开始x, y, w, h = convert((load_dict['imgWidth'], load_dict['imgHeight']), find_box(obj['polygon']))  # 归一化为中心点# yolo 标准格式:img.jpg -> img.txt# 内容的类别 归一化后的中心点x坐标 归一化后的中心点y坐标 归一化后的目标框宽度w 归一化后的目标况高度houtput_cache.append(f'{label_map[obj_label]} {x} {y} {w} {h}\n')with open(final_output_path / f'{image_id}_leftImg8bit.txt', 'w') as label_f:  # 写出标签文件label_f.writelines(output_cache)def mkdir(url):if not os.path.exists(url):os.makedirs(url)if __name__ == '__main__':root_dir = Path(__file__).parentimage_dir = root_dir / 'leftImg8bit'label_dir = root_dir / 'getfine'image_output_root_dir = root_dir / 'images'label_output_root_dir = root_dir / 'labels'label_map = {}  # 存放所有的类别标签  eg. {'car': 0, 'person': 1}for _t_ in tqdm(os.listdir(image_dir)):  # _t_ as ['train', 'test' 'val;]type_files = []  # 存放一类的所有文件,如训练集所有文件mkdir(image_output_root_dir / _t_), mkdir(label_output_root_dir / _t_)for cities_name in os.listdir(image_dir / _t_):_final_img_path = image_dir / _t_ / cities_name  # root_dir / leftImg8bit / test / berlin_final_label_path = label_dir / _t_ / cities_name  # root_dir / getfine / test / berlin# berlin_000000_000019_leftImg8bit.png -> berlin_000000_000019_gtFine_polygons.jsonimage_ids = list(map(lambda s: re.sub(r'_leftImg8bit\.png', '', s), os.listdir(_final_img_path)))# print(names[:0])  -> berlin_000000_000019for img_id in image_ids:convert_annotation(img_id, [_final_label_path, label_output_root_dir / _t_])  # 转化标签img_file = f'{img_id}_leftImg8bit.png'shutil.copy(_final_img_path / img_file, f'images/{_t_}/{img_file}')  # 复制移动图片type_files.append(f'images/{_t_}/{img_id}_leftImg8bit.png\n')with open(root_dir / f'yolo_{_t_}.txt', 'w') as f:  # 记录训练样本等的具体内容f.writelines(type_files)with open(label_output_root_dir / 'classes.txt', 'w') as f:  # 写出类别对应for k, v in label_map.items():f.write(f'{k}\n')print([k for k in label_map.keys()], len([k for k in label_map.keys()]))

2.训练

参考:https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data#11-create-datasetyaml

下载yolov5: https://github.com/ultralytics/yolov5

如下图并列放置cityscapeyolov5文件夹,cityscape替代掉下图datasets的位置

yolov5/data下创建cityscape.yaml,内容如下:

# YOLOv5 												

Cityscape训练Yolov5相关推荐

  1. 在自定义的数据集上训练YOLOv5详细教程分享

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 YOLO系列的目标检测模型随着YOLOv5的引入变得越来越强大了. ...

  2. 目标检测第8步:如何在Windows10系统下,训练YOLOv5 5.0自定义数据集?(本地)

    请先看这篇文章:                        本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 很多刚入门的粉丝私信我说,他们的电脑配置很好,想在本地训练 ...

  3. 使用visDrone数据集训练yolov5检测器

    yolov5目标检测具备一定的小目标检测能力,但由于参与训练的coco数据集缺少小目标素材,故检测小目标有局限.本文利用无人机采集的小目标数据集,对yolov5权重文件进行再训练,提高小目标检测能力. ...

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

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

  5. coco128训练YOLOv5

    提示:coco128数据集.yolov5s.colab 用coco128训练YOLOv5 一.下载三个文件 1.YOLOv5-master 2.coco128数据集 3.权重文件 二.使用colab ...

  6. 租用服务器,以及部署在pycharm专业版上的pytorch环境训练yolov5模型教程服务器环境安装库文件:

    租用服务器,以及部署在pycharm专业版上的pytorch环境训练yolov5模型教程服务器环境安装库文件: 一.租用服务器选择环境: 1. 租用服务器网站 2. 选择1.8的pytorch环境,点 ...

  7. 如何在自定义的数据集上训练YOLOv5

    YOLO系列的目标检测模型随着YOLOv5的引入变得越来越强大了.在这篇文章中,我们将介绍如何训练YOLOv5为你识别自己定制的对象. 本文我们使用公共血细胞检测数据集,你可以自己导出,也可以在自己自 ...

  8. CityScapes数据集转voc数据格式训练yolov5(含下载链接)

    CityScapes数据集转voc数据格式训练yolov5(含下载链接) 1.CityScapes数据集数据格式: 2.数据处理 3.CityScapes数据集转VOC格式转换代码 CityScape ...

  9. 【目标检测实验系列】AutoDL线上GPU服务器租用流程以及如何用Pycharm软件远程连接服务器进行模型训练 (以Pycharm远程训练Yolov5项目为例子 超详细)

    目录 1. 文章主要内容 2. 租用AutoDL服务器详细教程 2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点) 2.2 算力市场选择GPU,并选择初始化配置环 ...

  10. 训练yolov5的那些事之解决:AssertionError: Label class x exceeds nc=x in data/yolov5.yaml. Possible class label

    训练yolov5的那些事之解决:AssertionError: Label class x exceeds nc=x in data/yolov5.yaml. Possible class label ...

最新文章

  1. 【问题收录】Ubuntu14.04安装时黑屏处理
  2. vue 声明周期函数_Vue2.0 探索之路——生命周期和钩子函数的一些理解
  3. 深度优先 广度优先
  4. 优达学城数据分析师纳米学位——P5项目知识点整理贝叶斯规则
  5. 前端学习(715):数组新增元素
  6. Python3与OpenCV3.3 图像处理(五)--图像运算
  7. 矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
  8. PAT乙级(1026 程序运行时间)
  9. mysql的账户之间_MySQL用户管理
  10. 视觉中国再度开盘跌停 网站仍旧无法打开
  11. y7000怎么刷电池固件_redmi(红米)AC2100,刷老毛子固件
  12. 单链表删除所有值为x的元素_双链表的基本实现与讲解(C++描述)
  13. mac版docker配置加速
  14. Python源码阅读(一)
  15. python图形分析_使用Python图形化分析大Log文件
  16. JetBrains PhpStorm 2017.1.4 x64+PHPWAMP+Xdebug环境配置以及断点调试
  17. 2007年12月全球十大搜索引擎
  18. 收费短剧小剧场类影视小程序源码 支持多运营模式+详细搭建教程
  19. PHP phpoffice/phpspreadsheet导出excel
  20. 移动端,JS判断滑到页面顶部下滑进行操作

热门文章

  1. JS函数传参是传值还是传引用
  2. mac打开nh文件-cajviewer.dmg
  3. python给pdf放置签名图片_利用python制作电子签名
  4. b站视频下载与字幕下载方式总结
  5. 合成孔径雷达影像(SAR图像)变化检测深度学习研究方法
  6. 机器视觉学习笔记(6)——双目摄像机标定参数说明
  7. matlab最大值滤波降噪,matlab图像最大值和最小值滤波
  8. SpringBoot搭建个人博客v1.0 - 博客管理功能实现(七)
  9. MacCMS v10 播放器配置 无法保存
  10. 一点感悟: 詹姆斯与全栈工程师