【深度学习】计算机视觉(九)——Faster RCNN
创始人
2025-05-30 15:09:19
0

文章目录

  • 理论部分
  • 使用部分
    • step1:源码下载及环境配置
      • 1. Install tensorflow, preferably GPU version.
      • 2. Checkout this branch
      • 3. Install python packages
      • 4. Go to ./data/coco/PythonAPI
      • 5. Download PyCoco database.
      • 6. Download pre-trained VGG16
      • 7. Run `train.py`
    • stepn:修改参数【待学习】

关于为什么要学习Faster RCNN,主要就是该算法的精度比较高、理论比较成熟,看过一些文章说比较适用于我目前的方向,再加上时间原因没有办法把所有的基础都打好,只能直接开始算法的学习了。

理论部分

本来看到一个博主说,要想了解Faster RCNN,就要先学习RCNN和Fast RCNN,不过我发现它们之间的差别还是有些大的,而且似乎目前也没什么必要去了解,我比较认同另一个博主说“只关注最新的”即可,所以既然我目前学习的重点是Faster RCNN,那么就暂时不去学习其他的RCNN了。

学习完前面基于锚框的算法和RPN之后,基本对于学习Faster RCNN的全部内容都没有问题了,由于时间问题不作过多赘述,将网络结构的笔记总结附上:

请添加图片描述

使用部分

step1:源码下载及环境配置

源码下载:https://github.com/rbgirshick/py-faster-rcnn.git
(我也不知道我下载的是不是源码,网络上没找到对于如何找到源码的解释,以常识来说检索faster rcnn出现的第一个结果应该就是源码吧……)

可阅读《README》文件。

1. Install tensorflow, preferably GPU version.

Follow instructions. If you do not install GPU version, you need to comment out all the GPU calls inside code and replace them with relavent CPU ones.

因为我前面已经下载了tensorflow以及配置好GPU,所以这步略。

2. Checkout this branch

检查一下?(以前没有接触过这种语句,我也不知道是不是有啥特殊意思,先跳过……)

3. Install python packages

下载好之后,使用pycharm打开项目(老生常谈了,细节略!)。打开requirements.txt文件,该文件里提示了我们需要安装的库。有cython、opencv-python、easydict、Pillow、matplotlib、scipy

Cython是一种通过python语法编写C扩展的编程语言

easydict允许以属性的方式访问dict类型,且可以递归地访问,使用起来比较方便。

可以先查看自己已安装的库,然后下载没有的,因为我懒得一个一个比对,所以我直接在项目文件里引包,报错的就是我没有的。需要注意,opencv-python引包时用的是cv2,Pillow引包使用PIL,前面已经下载过了。我这里缺少cython和easydict。
在这里插入图片描述
接下来下载cython和easydict,具体方法略,参考:在pycharm用python画图:matplotlib

使用pip list 命令检查一下是否安装成功以及版本号。然后添加到pycharm中,具体方法略,参考同上。
在这里插入图片描述

4. Go to ./data/coco/PythonAPI

Run python setup.py build_ext --inplace
Run python setup.py build_ext install
Go to ./lib/utils and run python setup.py build_ext --inplace

这里不知道是干啥的,应该是关于coco的一些配置,后面检测的时候要用?由于我看的教程没有说,我先跳过这一步。

5. Download PyCoco database.

I will be glad if you can contribute with a batch script to
automatically download and fetch. The final structure has to look like
data\VOCDevkit2007\VOC2007

这里不知道是干啥的,应该是下载coco的数据集,后面检测的时候要用?由于我看的教程没有说,我先跳过这一步。

6. Download pre-trained VGG16

place it as data\imagenet_weights\vgg16.ckpt

因为本节手写笔记里说过,我们在已经训练好的model的基础上去训练RPN,也就是说Faster RCNN的卷积网络是直接采用VGG-16的,代码中应该没有自己去写卷积层,所以需要先把VGG-16下载下来才能使用。我猜测,所谓预训练模型,应该是指除了网络结构与VGG-16相同以外,初始权重也是VGG-16中保存的对任何数据集都表现比较好的一组。

下载地址:http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz

如果要使用其他模型(选看):https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models

下载好压缩包之后,需要在data文件夹中手动新建imagenet_weights文件夹,解压缩并重命名为vgg16.ckpt放在data\imagenet_weights\此路径。(重命名是因为代码中对vgg的使用就是“vgg16.ckpt”)

在这里插入图片描述

7. Run train.py

stepn:修改参数【待学习】

在lib/config下的config.py文件,是专门的配置文件,其中定义了模型的诸多参数,大家可以根据自己的需要修改相关参数,下面介绍较为重要的需要修改的参数。
(1)network参数
定义预训练使用的模型,我见到的最多的是使用vgg16模型(源码默认也是使用vgg16),也可以使用resnet模型。我采用的是vgg16模型。
(2) learning_rate参数
这个就是我们熟知的学习率,学习率定义的太小收敛速度会很慢,学习率定义的太大可能会导致不收敛。这个参数可以多次调整,分别训练,取一个最优的学习率。
(3) batch_size参数
这个也是很熟知的一个参数,定义的是每一个梯度的大小。一般用的比较多的是32,64,128,256这些batch_size。batch_size太大,内存容量可能撑不住,但是下降方向更准确,震荡更小,而且训练相同量的数据集速度更快;batch_size太小,内存利用率就变小了,但是容易陷入局部最优。个人理解是,如果内存够大,硬件允许的话,batch_size设置的大一些会更容易收敛,效果也会更好。
(4)max_iters参数
这个参数定义的是最大的迭代次数。
(5) snap_iterations参数
这个参数定义的是迭代多少次保存一次模型。个人觉得snap_iterations和max_iters要比较匹配,修改的话需要一起修改。因为如果max_iters参数定义的较小,但是snap_iterations很大的话,就看不到自己生成的模型了。模型保存的路径是default/voc_2007_trainval/default。每次保存模型都是保存4个文件。
(6) roi_bg_threshold_low
这个参数定义的是background(背景)认定的ROI的最小阈值。这里我没有深入研究,但是在运行train.py文件进行训练的时候如果产生Exception:image invalid,skipping。此时修改此处的值为0.0,会解决问题。
————————————————
版权声明:本文为CSDN博主「精致又勤奋的码农」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38391210/article/details/104607895


参考来源:
一文读懂Faster RCNN
Cython 的简要入门、编译及使用
【python基础】easydict的安装与使用
TensorFlow2深度学习实战(十六):目标检测算法Faster R-CNN解析

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...