实战 | 源码入门之Faster RCNN

Faster-RCNN 目标检测模型的训练与测试指南 Faster-RCNN 是一种经典的目标检测模型,广泛应用于计算机视觉任务,如目标检测和实例分割。它不仅性能优异,而且具备较高的检测精度。本文将手把手带领大家完成 Faster-RCNN 的训练与测试,介绍云服务器的配置、环境搭建以及模型的训练和测试流程,帮助读者快速上手使用 Faster-RCNN。Faster-RCNN 的训练通常使用 COCO 数据集,这里使用一个缩小版的COCOmini数据集进行演示。该数据集包含了多个类别的目标,具有多标签、多样性和复杂性等特点,适合用于目标检测和实例分割等任务。 阅读详情

前言

学习深度学习和计算机视觉,特别是目标检测方向的学习者,一定听说过Faster Rcnn;在目标检测领域,Faster Rcnn表现出了极强的生命力,被大量的学习者学习,研究和工程应用。网上有很多版本的Faster RCNN的源码,但是很多版本代码太过于庞大,对新入门的学习者学习起来很不友好,在网上苦苦寻找了一番后终于找到了一个适合源码学习的Faster Rcnn的pytorch版本代码。

根据该版本的作者讲该代码除去注释只有两千行左右,并且经过小编的一番学习之后,发现该版本的代码真的是非常的精简干练,读起来“朗朗上口”,并且深刻的感觉到作者代码功底之深厚。在此先附上源码的地址(https://github.com/chenyuntc/simple-faster-rcnn-pytorch) ,并对源码作者(陈云)表示由衷的感谢和深深地敬意。

本文章主要的目的是对该版本代码的主要框架进行梳理,希望能够对一些想学习源码的读者有一定的帮助。

本文作者:白俊杰

代码的主要文件

-data文件中主要是文件的与dataset相关的文件

-misc中有下载caffe版本预训练模型的文件,可以不看

-model文件中主要是与构建Faster Rcnn网络模型有关的文件

-utils中主要是一些辅助可视化和验证的文件

-train.py是整个程序的运行文件,下面有一部分会做介绍

-trainer.py文件主要是用于训练,模型的损失函数的计算都在这个文件中

train

先来看一下train.py里的主要内容:

def train(train(**kwargs)):    #训练网络的主要内容(位于train.py文件中)
  opt._parse(kwargs)
  dataset = Dataset(opt)      #读取用于训练的图片及进行相关的预处理(在下文的dataset部分做详细介绍)
  dataloader = data_.DataLoader(dataset, \
                                batch_size=1, \
                                shuffle=True, \
                                # pin_memory=True,
                                num_workers=opt.num_workers)
  testset = TestDataset(opt)  #读取用于测试的图片及进行相关的预处理
  test_dataloader = data_.DataLoader(testset,
                                     batch_size=1,
                                     num_workers=opt.test_num_workers,
                                     shuffle=False, \
                                     pin_memory=True
                                     )
  faster_rcnn = FasterRCNNVGG16()    #网络结构,包含主要Extractor,RPN和RoIHead三部分结构。
  trainer = FasterRCNNTrainer(faster_rcnn).cuda()  #主要包含模型的训练过程的

  for epoch in range(opt.epoch):#开始迭代训练
        trainer.reset_meters()
        for ii, (img, bbox_, label_, scale) in tqdm(enumerate(dataloader)):
            scale = at.scalar(scale)
            img, bbox, label = img.cuda().float(), bbox_.cuda(), label_.cuda()
            trainer.train_step(img, bbox, label, scale)  #执行训练

从train.py中的主要函数可以看出,主要的步骤涉及训练数据和测试数据的预处理,网络模型的构建(Faster RCNN),然后就是迭代训练,这也是通用的神经网络搭建和训练的过程。在Faster Rcnn网络模型中主要包含Extractor、RPN和RoIhead三部分。网络中Extractor主要是利用CNN进行特征提取,网络采用的VGG16;RPN是候选区网络,为RoIHead模块提供可能存在目标的候选区域(rois);RoIHead主要负责rois的分类和微调。整体的框架图如下图所示:

图片来源于陈云的知乎

Dataset

在本版本的代码中读取的数据格式为VOC,Dataset和TestDataset类分别负责训练数据和测试数据的读取及预处理。在预处理部分主要的操作就是resize图像的大小、像素值的处理以及图像的随机翻转。主要的内容如下:

class Dataset
Faster-RCNN+ZF用自己的数据集训练模型(Matlab版本) 说明:本博文假设你已经做好了自己的数据集,该数据集格式和VOC2007相同。做好数据集后,我们开始训练,下面是训练前的一些修改。 1 、VOCdevkit2007\VOCcode\VOCinit.m的修改 (1)路径的修改 VOCopts.annopath=[VOCopts.datadir VOCopts.dataset '/Annotations/%s.xml']; VOCop 阅读详情

相关推荐

【目标检测】用自己的数据集训练Faster RCNN的详细全过程(步骤很详细很直观,小白可入)

一、写在前面 最近和小伙伴一起参加了服务外包比赛,选择的题目是对于图像中的安全帽的检测。对YOLOv3,Faster RCNN这些常见的目标检测算法都进行了实验。本文就介绍Faster RNN的整个实验过程。 二、电脑相关配置 win10,python3.6 三、训练过程 实验选用的源码是较为常用的Faster RCNN源码。对于该源码的使用网上也有很多的博客文章,但是正是因为文章很多,所以也容易...

qq_38391210的博客 2万+

利用Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解

Torchvision更新到0.3.0后支持了更多的功能,其中新增模块detection中实现了整个faster-rcnn的功能。本博客主要讲述如何通过torchvision和pytorch使用faster-rcnn,并提供一个demo和对应代码及解析注释。 目录 如果你不想深入了解原理和训练,只想用Faster-rcnn做目标检测任务的demo,请看这里 torchvision中Faste...

watermelon1123的博客 2万+

使用Faster RCNN训练自己的数据集

使用Faster RCNN训练自己的数据集,过程不太顺利,踩坑数次,所以把流程记录一下。 所使用的代码版本:faster-rcnn.pytorch 1.源码及环境配置 原Github版本使用的Pytorch==0.4.0,但是看了网上的博客记录这个版本有较多错误无法解决,建议使用Pytorch==1.0.0及以上版本; 源码 Pytorch0.4.0版源码:https://github.com/jwyang/faster-rcnn.pytorch.git Pytorch1.0.0版源码:https

SpadgerZ的博客 1万+

windows7下面用tensorflow训练Faster-RCNN

最近由于实验室的要求,我做了基于Faster-RCNN网络的一些检测技术研究,对于我来说,完全是一个小白,这段时间在做实验的过程中学到了很多东西,整理了一下一路走来的实验步骤.,欢迎大家一起探讨~(一)安装TensorFlow博客链接:(1)https://blog.youkuaiyun.com/u010099080/article/details/53418159(2)https://blog.csdn.n...

beyond_xnsx的博客 8082

py-faster-rcnn源码解读系列(一)——train_faster_rcnn_alt_opt.py

@: train_faster_rcnn_alt_opt.py前言:本文主要功能是实现Alternating optimization的训练方法,在NIPS的那篇paper上仅有较为简略的介绍,所以我认为通过源码来学习是很有必要的。 其他主要模块的解读也会在后续陆续放出。本人水平有限,如果有一些理解有偏差;或者说有些重要的点被一笔带过,读者想要深入了解的,可以在评论区留言,共同交流,共同进步!

sunyiyou9的博客 9419

Windows +TensorFlow运行Faster-RCNN环境搭建

本人平时是远程访问实验室的GPU进行模型训练,但是最近想在编译器环境下进行代码优化,所以决定在本机windows环境下搭建Faster-RCNN的运行环境。 本文所选择的Windows环境下Faster-RCNN版本代码为 https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5 该版本需要Python 3.5支持,在这里建议大家使用A...

qq_29370449的博客 3158

Faster-RCNN训练时遇到的问题

第一次写博客,没想太多。只是想记录一下训练Faster-rcnn是遇见的一些问题。因为在我训练出bug的时候有点绝望,怀疑人生。不过在看到开始训练的一瞬间又觉得活着挺好的。 1.环境搭建    rbg大神很周到,需要的东西全都有(从硬件的要求,到需要的各种model)    Faster-rcnn:https://github.com/rbgirshick/py-faster-rcn

weinaonao5418的博客 1万+

windows10+tensorflow+faster RCNN的实现

首先明确一点,在Linux系统下通过tensorflow实现faster RCNN相对简单,可以对代码进行编译(make),Windows并没有编译的功能,当然可以通过安装编译器实现在windows下的make,如何不熟悉,坑比较多,谨慎。 如果要在Windows先跑通fasterRCNN就应下载一个已经编译好的代码,这里推荐https://github.com/dBeker/Faster-RC...

sparkfeng 5837

Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解

Torchvision更新到0.3.0后支持了更多的功能,其中新增模块detection中实现了整个faster-rcnn的功能。本博客主要讲述如何通过torchvision和pytorch使用faster-rcnn,并提供一个demo和对应代码及解析注释。 目录 如果你不想深入了解原理和训练,只想用Faster-rcnn做目标检测,请看这里 torchvision中Faster-rcnn接口 一个demo 使用方法 如果你想深入了解原理,并训练自己的模型 环境搭建 准备训练数据 模型训练

sinat_28371057的博客 2290

Faster-RCNN网络

Faster-RCNN网络 学习目标 熟悉FasterRCNN目标检测的思想 知道anchor(锚框)的思想 掌握RPN网络是如何进行候选区域的生成的 掌握ROIPooling的使用方法 知道fasterRCNN的训练方法 在R-CNN和Fast RCNN的基础上,在2016年提出了Faster RCNN网络模型,在结构上,Faster RCNN已经将候选区域的生成,特征提取,目标分类及目标框的回归都整合在了一个网络中,综合性能有较大提高,在检测速度方面尤为明显。接下来我们给大家详细介绍fasterR

最白の白菜的博客 5371

一篇还算详细的Faster RCNN计算流程介绍

以RBG大神的Faster RCNN源码与一部分自己修改的多图片多gpu的faster rcnn源码为例,介绍下整个网络的计算流程与中间涉及的blobs维度,以防止自己以后再忘记其中的细节 Data的读取格式 要想对模型进行训练,首先需要准备好数据,确定训练数据的格式,包括如何读入、如何遍历、数据增强与label形式等方面。 对于Faster RCNN,其数据的读取定义为一个基类imdb,即ima...

zym19941119的博客 1728

搭建faster-rcnn进行目标检测的环境

1.电脑上已经有可运行caffe所需的环境 2.下载faster-rcnn python版本源码   git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 3. 进入/py-faster-rcnn/lib 进行编译 cd /py-faster-rcnn/lib make 4.

小火车~ 7736

Faster RCNN源代码

基于python的faster rcnn源代码,包含训练和测试文件,可以修改应用到自己的工程中,不错的参考资料

STM32 HAL 硬件IIC驱动BNO085:从移植到姿态解算全流程解析(附源码)

本文详细解析了STM32 HAL库下硬件IIC驱动BNO085 IMU传感器的全流程,包括CubeMX配置、驱动移植、传感器初始化、Q格式数据处理及四元数转欧拉角解算。提供了完整的源码实现和常见问题解决方案,帮助开发者快速掌握高精度姿态测量技术。

palm99的专栏 1047

MoveIt避障规划实战:从点云到OctoMap的环境感知全流程

本文详细解析了MoveIt避障规划中从点云到OctoMap的环境感知全流程,重点介绍了深度相机选型、点云数据处理、OctoMap生成及避障规划参数调优等关键技术。通过实战案例展示了如何利用MoveIt和OctoMap实现机械臂在复杂环境中的高效避障,为工业自动化和服务机器人开发提供实用解决方案。

weixin_30417487的博客 568

【学习笔记】人群归因分数 PAF 以及combined PAF

人群归因风险比例(Population Attributable Fraction,PAF)是一个流行病学指标,它估计了在总体中,如果能消除一个特定的危险因素,能预防多少百分比的疾病或健康结果。简单来说,PAF回答的是:“如果没有这个风险因素,总体中会有多少病例是可以避免的?

weixin_53499537的博客 4900

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 947

secureCRT 破解方法

3、输入注册信息打开keygen.exe,点击path,选择SecureCRT的安装目录(例如D:\VanDykeSoftware\Clients)的securecrt.exe打开,继续下一步打开LicenseHelper.exe,如下。1、注册SecureCRT9.1打开keygen.exe,出现以下问题(没有关掉安全防护,一双击打开,Windows会自动识别keygen.exe为bingdu并删除)打开桌面SecureCRT,此界面不输入内容,直接点击下一步。2、存储配置文件夹(可以默认安装)

逆水行舟 1万+

RK3588开发笔记-麦克风阵列多pdm通道合并成一个声卡

在音频设备的开发中,特别是在多通道音频数据处理场景中,如何将多个PDM(Pulse Density Modulation)通道整合成一个声卡设备,是一个非常具有挑战性的问题。RK3588芯片作为一款性能强大的平台,提供了对多个音频通道的支持。本文将介绍如何在RK3588上将多个PDM通道合并成一个麦克风阵列声卡,从而在Linux系统下统一管理和使用,提高多通道音频的同步性。在本文中我们主要介绍使用2通道回采+4通道mic声音采集构成一个6通道声卡,加以回声消除实现一个多麦克风阵列。

flypig has a dream! 1926

【OpenClaw从入门到精通】第73篇:30天OpenClaw实战挑战——从零搭建个人数字助理(Day15-21)万字超详细高阶实战版

经过前两周的基础部署与功能搭建,你已拥有可自动化干活的AI助理与数字员工团队,但距离“高阶精通”仍有差距。本文聚焦第三周(Day15-21)核心实战,围绕安全审计、语音能力接入、Token成本控制、Agent Loop优化、One-Liner指令五大核心模块,结合真实落地案例与踩坑经验,提供超详细实操指南。通过本文,你将掌握生产级安全加固方案、语音交互全流程配置、低成本高性价比使用策略、Agent自主闭环优化技巧,以及一句话搞定复杂任务的高效指令用法,同时完成中期复盘与最后九天冲刺规划

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 362

Redis下载安装与配置(windows)

一、Redis下载 二、Redis安装 三、启动Redis临时服务并测试连接(可跳过) 四、Redis配置

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 7万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 快看,那个学SLAM 的崩溃了!
下一篇: 视觉SLAM关键方法总结
计算机视觉life
博客等级 码龄12年 4344粉丝 209原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值