经典神经网络 | fast rcnn目标检测算法详解

简介: 经典神经网络 | fast rcnn目标检测算法详解

要解决的问题


  • 1、RCNN和SPPnet分多步训练,先要fine tuning一个预训练的网络,然后针对每个类别都训练一个SVM分类器,最后还要用regressors对bounding-box进行回归,另外region proposal也要单独用selective search的方式获得,步骤比较繁琐。
  • 2、时间和内存消耗比较大。在训练SVM和回归的时候需要用网络训练的特征作为输入,特征保存在磁盘上再读入的时间消耗还是比较大的。
  • 3、测试的时候也比较慢,每张图片的每个region proposal都要做卷积,重复操作太多。

针对上述这些问题,本篇论文作者提出了fast rcnn网络,可以解决R-CNN和SPPnet的缺点,同时提高其速度和准确性。fast rcnn具有以下优点:

  • 1、高精度检测,训练是单步训练,而loss是multi-task loss。
  • 2、训练可以更新所有网络层,且内存不需要太大。

网络架构


fast rcnn的架构流程如下:网络有两个输入:图像和对应的已框出来的region proposal。其中region proposal由selective search方法得到,没有表示在流程图中。对每个类别都训练一个回归器,且只有非背景的region proposal才需要进行回归。架构是端到端多任务训练。

d014e398b86072f7c9a98c32140d1ead.png

下面是网络的一般通用架构:

18fd24908d023b64e120119abe3a1690.jpg

架构实施具体细节


1、ROI polling layer:ROI Pooling的作用是对不同大小的region proposal,从最后卷积层输出的feature map提取大小固定的feature map。因为全连接层的输入需要尺寸大小一样,所以不能直接将不同大小的region proposal映射到feature map作为输出,需要做尺寸变换。即将一个hw的region proposal分割成HW大小的网格,然后将这个region proposal映射到最后一个卷积层输出的feature map,最后计算每个网格里的最大值作为该网格的输出,所以不管ROI pooling之前的feature map大小是多少,ROI pooling后得到的feature map大小都是H*W。

下面是ROI polling layer层的一个经典动图:从图中可以直接看到ROI polling是怎样使输出都是固定的形状。

1dcff692dbc62a8bdf006ee61d6cd1fe.jpg

2、从预训练网络进行初始化:使用三个经过预训练的ImageNet网络进行实验,每个网络具有五个最大池化层以及五个到十三个conv层。当预训练的网络初始化Fast R-CNN网络时,它将经历三个转换。首先,最后一个最大池化层被RoI池化层代替,该RoI池化层通过将H和W设置为与网络的第一个完全连接层兼容(例如,对于VGG16,H = W = 7)进行配置。其次,将网络的最后一个完全连接层和softmax替换为先前描述的两个同级层(K + 1类的完全连接层和softmax以及特定于类别的bounding-box regressors)。第三,修改网络以获取两个数据输入:图像和这些图像的RoI。

3、multi-task loss:损失函数的定义是将分类的loss和回归的loss整合在一起,其中分类采用log loss,即对真实分类(下图中的pu)的概率取负log,而回归的loss和R-CNN基本一样。分类层输出K+1维,表示K个类和1个背景类。

e4bf1a9da1aee69dce54a0e960dba728.jpg

这是回归的loss,其中t^u表示预测的结果,u表示类别。v表示真实的结果,即bounding box regression target。

fc772e47cbf0511cf490a91276cf30d5.jpg

4、采用SVD分解改进全连接层:truncate svd可以简化全连接层的计算,加快检测时间,且无需在模型压缩后执行其他微调。

9fabb4cfd8caba60eba34eccbfebe82b.png

训练


算法的主网络还是VGG16,输入是224* 224* 3,经过5个卷积层和2个降采样层(这两个降采样层分别跟在第一和第二个卷积层后面)后,进入ROI Pooling层,该层的输入是conv5层的输出和region proposal,region proposal的个数差不多2000。然后再经过两个都是output是4096的全连接层。最后分别经过output个数是21和84的两个全连接层(这两个全连接层是并列的,不是前后关系),前者是分类的输出,代表每个region proposal属于每个类别(21类)的得分,后者是回归的输出,代表每个region proposal的四个坐标。最后是两个损失层,分类的是softmaxWithLoss,输入是label和分类层输出的得分;回归的是SmoothL1Loss,输入是回归层的输出和target坐标及weight。

测试


与训练基本相同,最后两个loss层要改成一个softma层,输入是分类的score,输出概率。最后对每个类别采用NMS(non-maximun suppression)。

实验结果


fast rcnn在常用的数据集上表现出的性能都比SOTA要好。除了算法提升外,数据集越大算法的精度越高,所以数据是信息时代的“石油”。

f6cccc4c773b91d0df54e8ff00a188d2.png

fast rcnn在速度上的提升

1dd5caa47547b85d17e756b152ce32ab.png

更多细节


该论文还阐述了其他细节:

  • 1、在迁移学习基础上更新哪些层的参数实验
  • 2、SVM V.S. softmax,是否svm更有效
  • 3、输入多种规格的图片,更多训练数据
  • 4、multi-task training有助于提高精度吗
  • 5、比较实现尺度不变的目标检测的两种策略:蛮力匹配(brute-force learning)和图像金字塔。

结论


Fast RCNN不仅大大提高了检测速度,也提高了检测准确率。其中,其是对整张图像卷积而不是对每个region proposal卷积。ROI Pooling,分类和回归都放在网络一起训练、multi-task loss是算法的三个核心。当然Fast RCNN的主要缺点在于region proposal的提取使用selective search,目标检测时间大多消耗在这上面(提region proposal 2~3s,而提特征分类只需0.32s),这也是后续Faster RCNN的改进方向之一。

论文代码


论文最后把代码开源,github链接:https://github.com/rbgirshick/py-faster-rcnn

相关文章
|
3天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
20 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
25天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
245 55
|
16天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
151 80
|
4天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
172 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
3天前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
24 9
|
9天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
12天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
10天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
1月前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
178 30