关于Sparse R-CNN: End-to-End Object Detection with Learnable Proposals算法训练

论文及代码来源:https://github.com/PeizeSun/SparseR-CNN

1. 环境配置

环境名如下:
在这里插入图片描述

1.1 将anconda的安装源修改为清华的镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 
conda config --set show_channel_urls yes
// 中科院也就可以
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes
// 把源换回来
conda config --remove-key channels
1.2 安装pytorch

论文中有要求
PyTorch≥1.5和torchvision的PyTorch安装相匹配,我这里安装的是1.7

conda install pytorch torchvision torchaudio cudatoolkit=10.1

【注】cuda的版本要对应,不要错了,可以用命令行

vim ~/.bashrc # 查看去这个配置文件中的路径,看安装的cuda版本
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
1.3 在SparseR-CNN目录下运行setup

这一步应该也是运行装一些相关的包。

cd SparseR-CNN
python setup.py build develop
1.4 漏下了一个scipy的包

问题:No module named ‘scipy’
在你想要运行代码的时候,你发现还漏了一个包,可能是当时的脚本跑起来的,有个网不好,没下载。
(但我保险起见,新建了两次,发现,是都没有下载的)

conda install scipy

2. 训练和测试过程

2.1 图片和标注信息的数据集下载

在这里插入图片描述
可以看到我们在训练过程中需要下载coco的数据集,,以下是下载的网址:

训练集图片:http://images.cocodataset.org/zips/train2017.zip
验证集图片:http://images.cocodataset.org/zips/val2017.zip
测试集图片:http://images.cocodataset.org/zips/test2017.zip
训练集、验证集标注信息:http://images.cocodataset.org/annotations/annotations_trainval2017.zip
http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip
http://images.cocodataset.org/annotations/panoptic_annotations_trainval2017.zip

下载完成后,我们将数据放在datasets中的coco中。同时coco文件中还需要val2017和train2017的图片。
最后如下所示:在这里插入图片描述

2.2 跑模型

根据GitHub上的命令行跑代码,我这里有一块1080ti的显卡,所以这里设置成1。

python projects/SparseRCNN/train_net.py --num-gpus 1 \
    --config-file projects/SparseRCNN/configs/sparsercnn.res50.100pro.3x.yaml

跑的时候发现,内存溢出了?然后就去找到他的batchsize修改,可以找到config中修改IMS_PER_BATCH: 16为1,然后去跑代码没有溢出情况。

3. 参数说明

因为这是我跑的第一个目标检测,所以下面参数进行说明,参考了还是那个B站大佬对这个的解说视频https://www.bilibili.com/video/BV1ez4y1X7g2

3.1 TP、FP、FN、Precision、Recall

在这里插入图片描述
举了个例子说:在这里插入图片描述
比如:我的confidence是采取了0.89,那么我的TP=2,我的FP,因为没错的,就是0,那么FN=5,因为我confidence取了0.89,小于0.89就都算没有检测到的。
在这里插入图片描述
再比如:我的confidence是采取了0.66,那么我的TP=4,我的FP=1,因为有个错了,就是1,那么FN=3,因为我confidence取了0.66,小于0.66就都算没有检测到的是2个,再加上有1个不是错了吗?所以等于3。至于查准率,查全率看上图的公式。

3.2 AP以及mAP

在这里插入图片描述

召回率取最高准确率的召回率,(别问我为什么这么做,定义就是这样)可以看到AP就是上图阴影的面积。这一个AP比如说就是我一个猫的分类的,mAP呢,就是我所有分类的AP的求和取平均。如果我分了60个类,我第一个猫的AP是a,我第二个狗的AP是b…这样下去,60个AP加起来除60就是我的mAP

论文中跑出来的是数据解释下:
这张是我实际跑出来的模型最终过测试集的样子。
在这里插入图片描述

官网给出的指标的解释如下:
在这里插入图片描述
第一个就是根据 IoU = 0.5 0.75的一个标准,第一个中第一个AP值的是0.5到0.95之间每个间隔0.05的意思;这里的AP就是我们刚刚说的mAP。
第二个就是根据范围,从而的出来的AP值,可以看到这个模型更适合用小目标,中目标和大目标的检测。
第三第四和前两个类似,就是变成了召回率而已。至此结束。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值