@wanghuijiao
2021-11-17T06:34:15.000000Z
字数 8254
阅读 1141
技术文档
以yolo格式的目标检测人头数据集发布为例,对以上步骤进行详细说明。
确定数据集格式 预先确定数据集标签格式,每种格式对应的文件组织结构不同,对数据集的解析需要固定的格式。因此第一步先确认“数据闭环”工具是否支持现有格式,否则需要先转换成支持的格式。以yolo格式为例:
| -- head_RGB| -- images| -- 0000001.jpg # 图片,或者其他格式 .png .jpeg ...| -- 0000002.jpg # 图片| -- ...| -- labels| -- 0000001.txt # 标签| -- 0000002.txt # 标签| -- ...| -- train.txt # 存放训练集图片相对路径| -- val.txt # 存放验证集图片相对路径| -- test.txt # 存放测试集图片相对路径| -- class.names # 存放类别名称,一类一行,序号与标签文件对应| -- data.data # 存放数据集类别信息和路径
准备数据集配置文件等组成的文件夹:这一步是准备一些记录了数据集位置、类别信息等基础配置信息的文件,并不是数据集包含的图片和标签,目的是为了能让模型通过这些配置文件解析出数据集的内容,用于训练和测试等。
RGB_head_detection,文件夹命名说明: 数据集配置文件示例
| -- RGB_head_detection # 配置文件组成的文件夹| -- RGB_head_detection.data # 记录训练集和测试集路径,类别信息等| -- RGB_head_detection.names # 记录数据集的类别名称
RGB_head_detection.data 内容示例
classes = 1 # 类别数量train = /ssd01/wanghuijiao/dataset/head_RGB/v1.0/train.txt # 训练图片路径列表文绝对路径valid = /ssd01/wanghuijiao/dataset/head_RGB/v1.0/val.txt # 测试图片路径列表文件绝对路径names = /ssd01/wanghuijiao/dataset/head_RGB/v1.0/RGB_head_detection.names # 类别信息文件绝对路径
RGB_head_detection.names 内容示例
head
运行数据集发布脚本 准备好上述文件后,通过运行此脚本,可以实现将配置文件复制到服务器指定路径,以及将数据集基本信息添加到数据库的操作。至此,数据发布完成。
最终数据集发布前将组织成如下格式:
| -- RGB_head_detection # 配置文件组成的文件夹| -- RGB_head_detection.data # 记录训练集和测试集路径,类别信息等| -- RGB_head_detection.names # 记录数据集的类别名称| -- RGB_head_detection_info.json # 基本信息配置文件
基本信息配置文件:此文件的内容记录了本数据集的基本信息,比如数据集的任务类型、使用场景、标签格式等等,大部分内容将会被写入数据库,作为日后选择数据集的重要信息来源。
RGB_head_detection_info.json
{"name": "RGB_head_detection", # 数据集名称"version": "v1.0", # 数据集版本号"task_type": "Object_Detection", # 任务类型,比如目标检测(Object_Detection)、分割(Segmentation)"scene": "Outdoor", # 应用场景描述,比如“Outdoor”"anno_type": "yolo", # 标签格式,比如“yolo” 、“COCO”"number": {"head": 19370,}, # 各类别出现的标签数量"size": "1GB", # 数据集大小"source_dir": "/ssd01/wanghuijiao/pose_detector02/rgb_head_detect", # 数据集文件所在的绝对路径"release_person": "Wanghuijiao", # 发布人姓名全拼"release_time": "2021/11/11", # 发布时间:{年}/{月}/{日}"description": "This is used for head detection in the wild scene where people are blocked by bushes.", # 数据集描述,比如详细用途说明、版本间的改动或者对此数据集的其他补充说明等信息}
RGB_head_detection 和 RGB_head_detection_info.json 所在路径 数据集发布脚本使用说明:后续给别人使用的时候需要写,目前可以先没有
需要提供:
基本信息配置文件
{"name": "darknet", # 代码库名称"version": "v1.0", # 版本信息"image_info": {"name":"", "version":""}, # 每个代码库的不同版本会建立多个image,此项记录本代码库对应的image名称和版本"task_type": "", # 适合的任务类型,比如目标检测(Object Detection)、分割(Segmentation)"dataset_anno_type":["yolo", ""], # 支持的数据集格式"config_file": {"":"",}, # 代码库配置文件路径"description": "", # 代码库描述,比如支持哪些backbone、哪几种检测或分割模型}
需要提供
基本信息配置文件
{"name": "", # 基础模型名称"version": "", # 模型版本"codebase_info":{"name":"", "version":""}, # 对应的代码库名称和版本, 比如mmsegmentation库的路径,目的是对应记录到具体是哪个版本的mmsegmentation库。"task_type": "", # 任务类型,比如目标检测(Object Detection)、分割(Segmentation)"metric":{}, # baseline 指标"dataset_anno_type":["yolo", ""], # 支持的数据集格式"config_file": {"":,}, # 模型配置文件路径, 比如选择代码库中的哪种模型结构,pretrained model位置等"hdwl_effect": {"Jetson Nano": "speed=","Jetson TX2": "speed="}, # 在硬件上的速度"description": "", # 基础模型描述}
运行基础模型发布脚本
准备构建训练bash命令的配置文件:tdlp_train_config.json,此文件中存放模型训练时需要的参数,比如gpu、训练批次、图片输入尺寸等与训练命令相关的参数
{"exp_uri": "/hdd03/minio/data/tdlp/tasks/5/yolov4_tiny_v1.0_rgb_head_detect_v1.1_20211011180550", # (必须有)此次实验路径存储路径,在启动脚本中根据时间戳自动生成,格式为:基础模型名称_基础模型版本_数据集名称_数据集版本_时间戳."data_file": "/hdd03/minio/data/tdlp/tasks/5/yolov4_tiny_v1.0_rgb_head_detect_v1.1_20211011180550/yolov4_tiny.data", # (可选)yolov4数据集配置文件路径,在启动脚本中解析生成"cfg_file": "/hdd03/minio/data/tdlp/tasks/5/yolov4_tiny_v1.0_rgb_head_detect_v1.1_20211011180550/yolov4_tiny.cfg", # (可选)yolov4基础模型配置文件路径,在启动脚本中解析生成"path_file": "/hdd03/minio/data/tdlp/tasks/5/yolov4_tiny_v1.0_rgb_head_detect_v1.1_20211011180550/yolov4_tiny.path", # # (可选)yolov4数据集配置文件路径,在启动脚本中解析生成"default_paras": [ # (必须有)以下是训练命令相关的默认参数,键需要根据基础模型类型人为设置,键值可以根据训练脚本设置为输入参数。{"-gpus": "0,1,2,3" # (可选)},{"-dont_show": "" # (可选)},{"-map": "" # (可选)}]}
准备基础模型启动脚本tdlp_start_train.py
from tools.start_exp import Tdlp# 类名自行根据基础模型名称定义class mmseg(Tdlp):def __init__(self):passdef start_train(self, task_id, alg_name, alg_vs, dataset_name, dataset_vs, config_path):"""模型训练接口Args:task_id: int, # 任务ID,根据数据库任务表单选择, 待讨论?alg_name: str, # 基础模型名称alg_vs: str, # 基础模型版本dataset_name: str, # 数据集名称dataset_vs: str, # 数据集版本config_path: str, # 第5节中的配置文件:tdlp_train_config.json 路径"""pass
python train.py --model_name "" --model_version "" --dataset_name "" --dataset_version "" --config_path "" # config_path是5中定义的tdlp_train_config.json路径
train.py 暂无,功能要求: 需要提供
基本信息配置文件
{"name": "", # 基础模型名称"version": "", # 模型版本"basemodel_info":{"name":"", "version":""}, # 对应的基础模型名称和版本"dataset_info":{"name": "", "version":""} # 对应的数据集名称和版本,"task_type": "", # 任务类型,比如目标检测(Object Detection)、分割(Segmentation)"scene": "", # 应用场景描述,比如“Indoor” 、“Wilderness”"metric":{}, # 在不同数据集上的性能指标"dataset_anno_type":["yolo", ""], # 支持的数据集格式"config_file": {"":,}, # 记录模型配置文件,比如模型结构配置文件、权重文件位置"description": "", # 应用模型描述}
运行基础模型发布脚本, 脚本功能:
这个月目标主要放在“数据闭环工具”对yolov4的支持上。
注意: