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

相关内容

热门资讯

路透解析“马斯克集团”:Spa... SpaceX 凤凰网科技讯 北京时间1月31日,据路透社报道,长期以来,埃隆·马斯克(Elon Mu...
启动“二改” 永辉在京完成21... 北京商报讯(记者 赵述评 实习记者 毛思怡)1月31日,永辉超市北京龙湖长楹天街店经一个多月闭店调改...
《宜宾散装白酒连锁经营规范》团... 近日,由宜宾市酒类协会牵头归口、宜宾安宁酒厂主导起草,四川谊宾酒业、宜宾学院、劲牌南溪酒业等多家本地...
印度牙医博士打造全印首款人形机... 2026 年 1 月 23 日,印度浦那的 Muks Robotics 正式宣布,自主研发的社交人形...
金银价创新高,引发全球“贵金属... 【环球时报记者 倪浩 环球时报特约记者 甄翔】连日来,国际市场金银价格持续大涨。1月29日当天,亚太...
财经观察丨“爱你老己”背后的消... 新华网北京1月31日电岁末年初,一句“爱你老己,明天见”席卷社交网络,成为年轻人自我关怀的新表达。热...
重磅!珠海科技产业集团与农行广... 1月30日,珠海科技产业集团与中国农业银行广东省分行在广州签署全面战略合作协议暨独立授信合作。农行广...
原创 黄... 谁能想到,2026年开年就上演金融魔幻现实主义! 国际黄金1月31日凌晨暴跌9.25%,盘中狂泻12...
云南省本级社会保险基金银行存款... 近日,云南省财政厅、云南省人力资源和社会保障厅、云南省医疗保障局联合印发《云南省本级社会保险基金银行...
病毒在身体里“安家”却相安无事... 很多人听说“乙肝携带者”,总会下意识和“乙肝患者”画上等号,担心自己或身边人被传染,也害怕携带者最终...
库迪确认:取消全场9.9元 来源:滚动播报 (来源:新消费日报) 有消息称,库迪咖啡发布门店价格策略和活动调整通知。通知指出,...
原创 雷... 不知道大家有没有发现,这个周六可能是进入2026年之后最消停的一个周六。因为各品牌基本上都没什么大事...
原创 特... 特朗普对委内瑞拉的举动,表面上看是一场能源棋局,实则背后隐藏着深刻的战略考量。对他而言,掌握能源就意...
原创 李... 01、“私募魔女”李蓓再引争议 半夏投资创始人、“私募魔女”李蓓,最近又成为投资圈的焦点。 1月2...
爱美客:AestheFill产... 上证报中国证券网讯(记者 王子霖)备受医美行业瞩目的AestheFill产品独家经销权纠纷迎来重要进...
雷军明晚直播,在北京小米汽车工... IT之家 1 月 31 日消息,今天午间,小米创办人、董事长兼 CEO 雷军在微博发文宣布,2 月 ...
字节阿里DeepSeek决战春... 新智元报道 编辑:艾伦 【新智元导读】这个春节,中国 AI 迎来「决战时刻」。据《The Info...
皇台酒业开始过年? 富凯摘要:有钱没钱喝酒过年。 作者|欧文 1月30日,白酒板块再现分化行情,皇台酒业却延续强势表现,...
深交所修订可持续发展报告编制指... 上证报中国证券网讯 据深交所1月30日消息,深交所发布实施《深圳证券交易所上市公司自律监管指南第3号...
面试餐饮|新手零经验,小红书开... 有没有餐饮人跟我一样?想靠小红书引流拓客,却卡在第一步:不知道怎么开店、怎么发笔记不踩雷,看着别人的...