【深度学习】计算机视觉(九)——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解析

相关内容

热门资讯

走进小城看消费丨江西资溪:低碳...   夏日时节下午4点,江西省抚州市资溪县大觉山景区漂流终点依然热闹。来自南昌的游客余鑫漂流结束后没有...
【中原晨会0625】市场分析专... 来源:市场资讯 (来源:中原证券研究所) 本期重点研报目录 【中原策略】市场分析:电子半导体领涨 ...
南向资金连买4日!低费率+可月... 6月25日早盘,港股红利资产震荡整理。截至11时14分,港股红利低波ETF招商(520550)下跌0...
618成交破百万!紫荆花用一套... 一年一度的618年中大促,是消费市场的晴雨表,也是品牌间最激烈的角力场。当各大品牌在直播间里铆足了劲...
原创 黄... 2026年6月25日的国际金价已经从前期的5500美元高点跌到4200美元下方,累计跌幅超过22%,...
英伟达CEO:Vera Rub... 截至9:38,中证半导体材料设备主题指数(931743)涨2.36%创新高;权重股中,中微公司涨3....
再被催债16亿!“钢铁大王”戴... 澎湃新闻记者 贺梨萍 因“铁本事件”入狱五年的戴国芳重返钢铁行业,但他并没有完成从阶下囚再到“钢铁大...
周三原油价格下跌 随着美国和伊朗在和平谈判中取得进展,越来越多的油轮公开穿越霍尔木兹海峡,原油在战时的价格上涨已经蒸发...
这种蛋白是大脑衰老的开关 这种蛋白是大脑衰老的开关 清晨,假设一位五十岁左右的王女士发现自己常常把手机放在熟悉的抽屉里又找不到...
信通院牵头算力Token出海生... 盘面上,截至11:04,中证科创创业50指数(931643)涨1.68%,创历史新高;权重股中,芯原...
海外 774 亿营收背后:日本... 文 | 游戏价值论 6月23日,彭博社报道了腾讯正在围绕出售多家日本游戏工作室少数股权开展谈判,包...
餐饮“抢人”大战:把店开到公交... 作者 |餐饮老板内参 内参君 医院、公交站、演唱会…餐饮品牌,正在无孔不入 在北京儿童医院,肯德基...
快讯 | 外资扫货!陈翊庭:港... 港交所行政总裁陈翊庭在接受《中国证券报》专访时指出,国际资本对中国资产的看法已彻底扭转,布局中国市场...
2777.77元!A股“股王”... 25日早盘,昨天创下历史新高的A股“股王”联讯仪器,今天上午继续走强,盘中股价再度刷新历史新高。 截...
原创 今... 欧洲自己的媒体直接下结论,欧盟衰退躲不掉,内部分裂拦不住,现在就连欧洲顶尖工业巨头,都偷偷在用中国的...
黄仁勋股东大会放言:本轮AI基... 在当地时间6月24日的英伟达(NVDA.O)2026年度股东大会上,股东批准了该公司全部10名董事会...
国际油价大跌 新华社消息, 纽约原油期货主力合约价格24日盘中跌破每桶70美元,为伊朗战事爆发以来首次。 市场分析...
马云带队插秧,什么信号? 一场别开生面的“务农”,让外界看到了一个不一样的阿里巴巴。 近日,阿里巴巴合伙人、高德董事长刘振飞在...
全球最大产能,最高丰度达99.... 本文转自【科技日报】; 6月23日,高丰度硼-10同位素技术暨产业化成果发布会在山东省东营市举办,全...
黄金大跳水!金饰克价年内暴跌近... 25日,现货黄金盘中震荡,截至发稿,报3985.070美元/盎司,跌0.17%。 当地时间24日,...