数据集准备
重要
数据集部分的功能和接口会在后续版本中由benco CLI统一管理。
目前暂时需要手动在每一个工作路径下管理相应的json
或数据集路径完成部署。
数据集格式和特点
- BenCo内部实现了3种不同的数据集格式。包含两个基础的
JsonDataset
和ManiDataset
。和一个BalanceDataset
。将数据集按照其中任何一种组织即可由后续模型读取。 ManiDataset
,与CASIA数据集的组织方式相同,适合轻量开发,且不需要引入真实图片的场合。JsonDataset
,通过一个Json文件组织数据集,尤其适合需要引入真实图片的场合。BalancedDataset
,主要针对CAT-Net 和 TruFor的协议设计,如果不针对该协议复现则不需要关注。
此外,在测试时需要同时输入大量的数据集,所以额外定义了一种Json用于输入大量数据集,在本段末尾有样例。
具体定义格式
JsonDataset
,传入一个json文件路径,使用如下JSON格式组织图片和对应mask:
[
[
"/Dataset/CASIAv2/Tp/Tp_D_NRN_S_N_arc00013_sec00045_11700.jpg",
"/Dataset/CASIAv2/Gt/Tp_D_NRN_S_N_arc00013_sec00045_11700_gt.png"
],
......
[
"/Dataset/CASIAv2/Au/Au_nat_30198.jpg",
"Negative"
],
......
]
其中“Negative”表示全黑的mask,即完全真实的图片,所以也不需要输入path。
ManiDataset
,传入一个文件夹路径,该文件夹包含两个子文件夹Tp
和Gt
,benco自动从Tp
中读取图片,从Gt
中读取对应mask,并自动按照os.listdir()
得到的文件名字典序进行配对。一般情况下,默认的CASIA数据集就是按照这个格式组织的。可以参考IML-ViT中的样例文件夹。BalancedDatast
, 传入一个json文件路径,专门用来组织CAT-Net和TruFor中使用的协议。- 协议具体定义:Protocol-CAT使用到了9个大数据集进行训练,但是每一个Epoch只从每个数据集中随机采样1800张图组成一个16200张图的数据集完成训练。
- Json组织形式:
二维数组,每一行代表一个数据集,第一列代表使用到的数据集Class类型的字符串,第二列是该类型需要读取数据集的路径。[ [ "ManiDataset", "/mnt/data0/public_datasets/IML/CASIA2.0" ], [ "JsonDataset", "/mnt/data0/public_datasets/IML/FantasticReality_v1/FantasticReality.json" ], [ "ManiDataset", "/mnt/data0/public_datasets/IML/IMD_20_1024" ], [ "JsonDataset", "/mnt/data0/public_datasets/IML/tampCOCO/sp_COCO_list.json" ], [ "JsonDataset", "/mnt/data0/public_datasets/IML/tampCOCO/cm_COCO_list.json" ], [ "JsonDataset", "/mnt/data0/public_datasets/IML/tampCOCO/bcm_COCO_list.json" ], [ "JsonDataset", "/mnt/data0/public_datasets/IML/tampCOCO/bcmc_COCO_list.json" ] ]
将需要用的数据集按照需求,组织好后,即可开始考虑复现模型或实现自己的模型。
测试用数据集JSON
特别的,对于测试时,因为要同时输入大量的数据集完成测试,所以专门定义一个test_dataset.json
来完成这个功能。
Key为Tensorboard,日志输出等等Visualize功能时使用的字段名,Value为上述数据集的具体路径。
样例:
{
"Columbia": "/mnt/data0/public_datasets/IML/Columbia.json",
"NIST16_1024": "/mnt/data0/public_datasets/IML/NIST16_1024",
"NIST16_cleaned": "/mnt/data0/public_datasets/IML/NIST16_1024_cleaning",
"coverage": "/mnt/data0/public_datasets/IML/coverage.json",
"CASIAv1": "/mnt/data0/public_datasets/IML/CASIA1.0",
"IMD20_1024": "/mnt/data0/public_datasets/IML/IMD_20_1024"
}