@TOC修改github上的SSD代码在本地运行
准备数据
首先根据README.md安装一些库
1.安装visdom
pip install visdom
python -m visdom.server
2.下载数据集
sh data/scripts/COCO2014.sh
sh data/scripts/VOC2007.sh
sh data/scripts/VOC2012.sh
3.下载VOCdevkit
下载到data文件夹下,链接:
链接:https://pan.baidu.com/s/1C-1m3kpCAyKUs3QLsNSvtg
提取码:ikso
4.下载权重
mkdir weights
cd weights
wget https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth
修改代码
1.修改config.py
# SSD300 CONFIGS
voc = {
'num_classes': 21,
'lr_steps': (80000, 100000, 120000),
'max_iter': 120000,
'feature_maps': [38, 19, 10, 5, 3, 1],
'min_dim': 300,
'steps': [8, 16, 32, 64, 100, 300],
'min_sizes': [30, 60, 111, 162, 213, 264],
'max_sizes': [60, 111, 162, 213, 264, 315],
'aspect_ratios': [[2], [2, 3], [2, 3], [2, 3], [2], [2]],
'variance': [0.1, 0.2],
'clip': True,
'name': 'VOC',
}
'num_classes’是数据种类,如果数据中有猫、狗,那么这里就修改为3,多出的一个是背景类,‘max_iter’是最大的迭代数,当第一次训练时可以调小一些,先看看现象,‘lr_steps’是何时调整学习率,修改了‘max_iter’后可以适当修改一下‘lr_steps’.
2.修改voc0712.py
VOC_CLASSES = ( # always index 0
'aeroplane', 'bicycle', 'bird', 'boat',
'bottle', 'bus', 'car', 'cat', 'chair',
'cow', 'diningtable', 'dog', 'horse',
'motorbike', 'person', 'pottedplant',
'sheep', 'sofa', 'train', 'tvmonitor')
自己的数据集里有什么就改成什么,注意这里不包括背景。如果使用了COCO,还要修改coco.py
3.multibox_loss.py
第90行和111行的第三个参数size_average改成reduction=‘sum’
第98行的loss_c = loss_c.view(num,-1)改成loss_c = loss_c.view(pos.size()[0], pos.size()[1])