@wanghuijiao
2021-11-17T14:34:15.000000Z
字数 8254
阅读 595
技术文档
以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):
pass
def 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的支持上。
注意: