一、训练数据准备
1、生成 caltech_split.txt 文件
split 文件的模版样本
101_ObjectCategories/metronome/image_0004.jpg 0
下面的文件路径需要修改成自己的
path_file = '/data/nextcloud/dbc2017/files/jupyter/PyRetri/main/split_file/caltech_split.txt'
gallery_lst = glob.glob('/data/nextcloud/dbc2017/files/jupyter/test_data_A/gallery/*.jpg')
query_lst = glob.glob('/data/nextcloud/dbc2017/files/jupyter/test_data_A/query/*.jpg')
gallery_path = ['101_ObjectCategories/allimg/'+os.path.basename(i) for i in gallery_lst]
query_lst = ['101_ObjectCategories/allimg/'+os.path.basename(i) for i in query_lst]
print(len(query_lst))
print(len(gallery_lst))
生成caltech_split.txt
if os.path.exists(path_file):
os.remove(path_file)
with open(path_file,'w') as f:
for i in gallery_path:
f.write('{0} {1}\n'.format(i,1))
for index,i in enumerate(query_lst):
if index != len(query_lst)-1:
f.write('{0} {1}\n'.format(i,0))
else:
f.write('{0} {1}'.format(i,0))
结果如下:
2、 完成 gallery 和 query 的划分
python main/split_dataset.py -d /data/caltech101/ -sf main/split_file/caltech_split.txt
二、训练模块修改
整体代码结构
(1)configs:增加和修改trick
深度学习中的trick
(包括每个epoch后修改学习率、CNN、数据扩充Augmentation、预训练、权重初始化、添加激活函数、正则化)的参数。
(2)finetune.py:
-
可以修改Backbone:
-
可以修改数据增强模块:假设物体在正中心,所以做CenterCrop
- -
可以修改loss函数
-考虑Classification loss
三、config文件解读
- database
- model
- extract
4、index