-
将需要训练的数据上传到七牛 bucket, 并以相同的前缀开头, 比如上传到 mybucket 下面: mydataset1/xxx.jpg
-
利用数据集管理的新建数据集“样本数据”方式, 可以将 bucket 里的图片样本, 生成数据集索引文件 (jsonlist), 比如使用前缀: qiniu:///mybucket/mydataset1/
-
将生成数据集索引文件导入 LabelX 进行打标. 参考 82 - 03 LabelX 使用手册
-
利用数据集管理的新建数据集“源数据集列表”方式, 使用 LabelX 导出打标好的 jsonlist 新建训练用数据集.
可以有三种方式来新建一个数据集:
源数据集列表是一个文本索引文件, 文件中每行为一条 json 数据(结构展开如下), 代表一张样本图片(或视频), 其中包含图片的 url 和标签等信息. 这样的文本文件又称 jsonlist. 这是最常用的创建训练用数据集的方式.
{
"url": "qiniu:///bucketname/prefix/filename", //必填, 仅支持七牛云bucket的图片, 格式可以是图片的http链接和七牛协议. 私有bucket必须使用七牛协议, 格式为qiniu:///bucketname/prefix/filename, 例如qiniu:///newdata/0081.jpg_wh1200.jpg
"type": "image",// 必填, 目前支持 "image"/"video"
"source_url":"http://source_url", //图片的来源, augment等操作生成的图片, 来源为原图片url, 下载操作的图片, 来源为原url
"ops":"augment(param1,param2...)", //图片上进行的操作, 下载为download()"
"label": [
{
"name":"face"
"type":"face"
"version":"1",
"data":[
{
"bbox": [[10, 20], [21, 31], [81, 91]],
"bbox_score": 0.992,
"landmarks":[
{"index": 1, "pt": [1,2], "score": 0.91},
{"index": 2, "pt": [1,2], "score": 0.91},
{"index": 3, "pt": [1,2], "score": 0.91},
{"index": 4, "pt": [1,2], "score": 0.91},
...
],
"cluster": {"id": 1, "score": 0.3}
}
]
},
{
"name":"general_imagenet",
"type":"detection",
"version":"1",
"data":
[
{
"bbox": [[10, 20], [21, 31], [81, 91]],
"class": "dog",
"score": 0.998
}
]
},
{
"name":"terror",
"type":"classification",
"version":"1",
"data":[
{
"class": "march",
"score": 0.998
},
...
]
},
{
"name":"pulp",
"type":"classification",
"version":"1",
"data": [
{
"class": "sexy",
"score": 0.998
},
...]
},
{
"name":"general",
"type":"classification",
"version":"1",
"data": [
{
"class": "dog",
"score": 0.998
},
...]
},
]
}
格式化数据是指符合 Caffe 或 MXNet 训练框架所需的 LMDB 或 RecordIO 格式的数据.
可以直接上传其数据文件和索引文件, 直接用于训练.
样本数据方式是将符合 bucket 前缀的所有文件汇集起来组成的数据. 此方式主要用于生成 jsonlist, 导入 LabelX 进行打标. 注意: 汇集的数据是没有标签的, 不能用于训练. 新建并成功完成后可以看到生成的 jsonlist:
以及数据集里根据标签的统计信息:
新建好的数据集还不能直接用于训练, 还需要格式化这一个步骤. 所谓格式化就是将数据集的图片生成符合 Caffe 或 MXNet 训练框所需的 LMDB 或 RecordIO 格式, 并保存在平台后端存储上. 如果不需要格式化为框架所需格式, 也可以选择原图方式, 直接将原始图片保存在平台后端存储上. 问题类型是分类还是检测取决于数据集的标签类型是 "type":"classification"
还是 "type":"detection"
. 这样, 训练时选择对应格式化数据集, 训练任务启动后就可以在 /mnt/data 下面找到并应用于训练.