【深度学习】计算机视觉(九)——Faster RCNN
创始人
2025-05-30 14:26:15
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解析

相关内容

热门资讯

在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...
斗金订购APP贵金属期货交易骗...   斗金订购APP的投资者往往被铺天盖地的广告宣传所诱导——注册即送现金、充值返现券等看似诱人的福利...
警惕!云启购APP违规经营,披...   "5元起投、充值返现、稳赚不赔"——这些诱人的广告语背后,可能是一个精心设计的金融陷阱。  近期...
量子淘金APP贵金属投资不合规...   "4元起投""充值返券""月入过万"——这些极具诱惑力的广告语在短视频平台、社交软件上铺天盖地。...
鑫汇智投APP贵金属商品订购骗...   鑫汇智投APP非法期货投资骗局,受害者在投资过程中根本不懂交易,也不去研究和验证这个平台是否正规...
矅光智策APP平台违规经营非法...   矅光智策APP对外宣称是“商城订购”“现货交易”,但查询其经营范围,并未显示具备开展现货期货交易...
黄金珠宝怎么选?内侧刻字都代表... 潮新闻客户端 记者 马焱 通讯员 任倩影 9月8日下午,“云游杭州 乐购金秋”——“浙城·浙放心”活...
原创 冰... 最近全球国债市场正在上演魔幻一幕: 美债、日债、欧债遭遇猛烈抛售,收益率冲到几十年新高,美国财政部都...
日韩股市开盘表现分化 上证报中国证券网讯 9月9日,日韩股市开盘表现分化,韩国综合指数开盘上涨0.26%,报6972.87...