[更新:]我将代码进一步简化为Pytorch 1.5,Torchvision 0.6,然后用Torchvision替换自定义的OPS Roipool和NMS。如果您需要旧版本代码,请签出分支V1.0
该项目是基于ChainERCV和其他项目的简化速度更快的R-CNN实现。我希望它可以作为想要了解更快R-CNN细节的人的开始代码。它的目的是:
它具有以下功能:

VGG16 trainval上的火车和test拆分测试。
注意:培训表现出极大的随机性,您可能需要一些运气和更多的培训时期才能达到最高地图。但是,它应该很容易超过下限。
| 执行 | 地图 |
|---|---|
| 起源纸 | 0.699 |
| 用咖啡馆预算的模型训练 | 0.700-0.712 |
| 用火炬训练的训练模型 | 0.685-0.701 |
| 从ChainERCV转换的模型(报道0.706) | 0.7053 |
| 执行 | GPU | 推理 | 火车 |
|---|---|---|---|
| 起源纸 | K40 | 5 fps | na |
| 这个[1] | 泰坦XP | 14-15 fps | 6 fps |
| pytorch-faster-rcnn | 泰坦XP | 15-17fps | 6fps |
[1]:确保您正确安装CUPY,并且在GPU上仅运行一个程序。训练速度对您的GPU状态很敏感。有关更多信息,请参见故障排除。此外,它在程序开始时很慢 - 它需要时间进行热身。
通过删除可视化,记录,平均损失等,可能会更快。
这是用anaconda从头开始创建环境的示例
# create conda env
conda create --name simp python=3.7
conda activate simp
# install pytorch
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
# install other dependancy
pip install visdom scikit-image tqdm fire ipdb pprint matplotlib torchnet
# start visdom
nohup python -m visdom.server &
如果您不使用Anaconda,则:
使用GPU安装Pytorch(代码仅GPU),请参阅官方网站
安装其他依赖关系: pip install visdom scikit-image tqdm fire ipdb pprint matplotlib torchnet
开始视觉以进行可视化
nohup python -m visdom.server & 从Google Drive或Baidu NetDisk(PASSWD:SCXN)下载验证的模型
有关更多详细信息,请参见Demo.ipynb。
下载培训,验证,测试数据和VOCDEVKIT
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar将所有这些焦油提取到一个名为VOCdevkit的目录中
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar它应该具有这种基本结构
$VOCdevkit / # development kit
$VOCdevkit /VOCcode/ # VOC utility code
$VOCdevkit /VOC2007 # image sets, annotations, etc.
# ... and several other directories ...修改utils/config.py中的voc_data_dir CFG项目,或使用诸如--voc-data-dir=/path/to/VOCdevkit/VOC2007/参数传递给程序。
如果您想将CAFFE-PRORTRAIN模型用作初始权重,则可以在下面运行以从Caffe转换为VGG16权重,这与原始纸张的使用相同。
python misc/convert_caffe_pretrain.py该脚本将下载验证的模型,并将其转换为与Torchvision兼容的格式。如果您在中国并且无法下载验证码模型,则可以参考此问题
然后,您可以通过设置caffe_pretrain_path来指定caffe-pretraind模型vgg16_caffe.pth存储在utils/config.py中的位置。默认路径还可以。
如果您想使用Torchvision预算的模型,则可以跳过此步骤。
注意,咖啡馆预算的模型显示出略有更好的性能。
注意:CAFFE模型需要BGR 0-255中的图像,而Torchvision模型则需要RGB和0-1中的图像。有关更多详细信息,请参见data/dataset.py 。
python train.py train --env= ' fasterrcnn ' --plot-every=100您可以参考utils/config.py以获取更多参数。
一些关键论点:
--caffe-pretrain=False :使用Caffe或Torchvision的预处理模型(默认:Torchvison)--plot-every=n :可视化预测,损失等n批次。--env :可视化的vivdom env--voc_data_dir :存储VOC数据的位置--use-drop :在ROI头中使用辍学,默认为false--use-Adam :使用ADAM代替SGD,默认SGD。 (您需要为亚当设置非常低的lr )--load-path :验证的模型路径,默认值None ,如果指定,则将加载。您可以打开浏览器,请访问http://<ip>:8097 ,请参见以下培训过程的可视化:

数据加载器: received 0 items of ancdata
参见讨论,它是在train.py中固定的。因此,我认为您没有这个问题。
Windows支持
我没有带有GPU的Windows Machine进行调试和测试。不客气,如果有人可以提出请求并进行测试。
这项工作以许多出色的作品为基础,其中包括:
根据MIT许可,请参阅许可证以获取更多详细信息。
欢迎捐款。
如果您遇到任何问题,请随时打开一个问题,但最近太忙了。
如果有任何错误或不清楚的情况,请纠正我。
模型结构