Cityscape训练Yolov5
1.Cityscapes目标检测标注转YOLO格式
参考: https://blog.csdn.net/Shenpibaipao/article/details/111240711
数据集下载:https://www.cityscapes-dataset.com/downloads/
下载leftImg8bit_trainvaltest.zip
和 gtFine_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
如下图并列放置cityscape
和yolov5
文件夹,cityscape
替代掉下图datasets
的位置
在yolov5/data
下创建cityscape.yaml
,内容如下:
# YOLOv5
Cityscape训练Yolov5相关推荐
- 在自定义的数据集上训练YOLOv5详细教程分享
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 YOLO系列的目标检测模型随着YOLOv5的引入变得越来越强大了. ...
- 目标检测第8步:如何在Windows10系统下,训练YOLOv5 5.0自定义数据集?(本地)
请先看这篇文章: 本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 很多刚入门的粉丝私信我说,他们的电脑配置很好,想在本地训练 ...
- 使用visDrone数据集训练yolov5检测器
yolov5目标检测具备一定的小目标检测能力,但由于参与训练的coco数据集缺少小目标素材,故检测小目标有局限.本文利用无人机采集的小目标数据集,对yolov5权重文件进行再训练,提高小目标检测能力. ...
- AI 图片截取、ffmpeg使用及安装, anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题
AI 图片截取(ffmpeg), anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题 一.截取有效图片 录制RTSP视频脚本 #!/ ...
- coco128训练YOLOv5
提示:coco128数据集.yolov5s.colab 用coco128训练YOLOv5 一.下载三个文件 1.YOLOv5-master 2.coco128数据集 3.权重文件 二.使用colab ...
- 租用服务器,以及部署在pycharm专业版上的pytorch环境训练yolov5模型教程服务器环境安装库文件:
租用服务器,以及部署在pycharm专业版上的pytorch环境训练yolov5模型教程服务器环境安装库文件: 一.租用服务器选择环境: 1. 租用服务器网站 2. 选择1.8的pytorch环境,点 ...
- 如何在自定义的数据集上训练YOLOv5
YOLO系列的目标检测模型随着YOLOv5的引入变得越来越强大了.在这篇文章中,我们将介绍如何训练YOLOv5为你识别自己定制的对象. 本文我们使用公共血细胞检测数据集,你可以自己导出,也可以在自己自 ...
- CityScapes数据集转voc数据格式训练yolov5(含下载链接)
CityScapes数据集转voc数据格式训练yolov5(含下载链接) 1.CityScapes数据集数据格式: 2.数据处理 3.CityScapes数据集转VOC格式转换代码 CityScape ...
- 【目标检测实验系列】AutoDL线上GPU服务器租用流程以及如何用Pycharm软件远程连接服务器进行模型训练 (以Pycharm远程训练Yolov5项目为例子 超详细)
目录 1. 文章主要内容 2. 租用AutoDL服务器详细教程 2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点) 2.2 算力市场选择GPU,并选择初始化配置环 ...
- 训练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 ...
最新文章
- 【问题收录】Ubuntu14.04安装时黑屏处理
- vue 声明周期函数_Vue2.0 探索之路——生命周期和钩子函数的一些理解
- 深度优先 广度优先
- 优达学城数据分析师纳米学位——P5项目知识点整理贝叶斯规则
- 前端学习(715):数组新增元素
- Python3与OpenCV3.3 图像处理(五)--图像运算
- 矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
- PAT乙级(1026 程序运行时间)
- mysql的账户之间_MySQL用户管理
- 视觉中国再度开盘跌停 网站仍旧无法打开
- y7000怎么刷电池固件_redmi(红米)AC2100,刷老毛子固件
- 单链表删除所有值为x的元素_双链表的基本实现与讲解(C++描述)
- mac版docker配置加速
- Python源码阅读(一)
- python图形分析_使用Python图形化分析大Log文件
- JetBrains PhpStorm 2017.1.4 x64+PHPWAMP+Xdebug环境配置以及断点调试
- 2007年12月全球十大搜索引擎
- 收费短剧小剧场类影视小程序源码 支持多运营模式+详细搭建教程
- PHP phpoffice/phpspreadsheet导出excel
- 移动端,JS判断滑到页面顶部下滑进行操作
热门文章