实战深度学习目标检测:rcnn

我把梦想卖了,换成了柴米油盐 我把梦想卖了,换成了柴米油盐     2022-12-21     621

关键词:

深度学习目标检测:RCNN

什么是目标检测?目标检测主要是明确从图中看到了什么物体?他们在什么位置。传统的目标检测方法一般分为三个阶段:首先在给定的图像上选择一些候选的区域,然后对这些区域提取特征,最后使用训练的分类器进行分类。
1. 区域选择
这一步是为了对目标进行定位。传统方法是采用穷举策略。由于目标可能在图片上的任意位置,而且大小不定,因此使用滑动窗口的策略对整幅图像进行遍历,而且需要设置不同的长宽。这种策略虽然可以检测到所有可能出现的位置,但是时间复杂度太高,产生的冗余窗口太多,严重影响后续特征的提取和分类速度的性能。
2. 特征提取
提取特征的好坏会直接影响到分类的准确性,但又由于目标的形态多样性,提取一个鲁棒的特征并不是一个简单的事。这个阶段常用的特征有SIFT(尺度不变特征变换,Scale-invariant feature transform)和HOG( 方向梯度直方图特征,Histogram of Oriented Gradient)等。
3. 分类器
主要有SVM,Adaboost等综上所述,传统目标检测存在两个主要问题:一个是基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余;而是手工设计的特征对于多样性没有很好的鲁棒性。

针对滑动窗口问题,region proposal(候选区域)是预先找出图中目标可能出现的位置,这可以保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率。并且获取的候选窗口要比滑动窗口的质量更高(滑动窗口固定长宽比)。比较常用的region proposal算法有selective search和edge boxes。针对特征选取,卷积神经网络(convolution neural network:CNN) 的特征比传统手工特征效果更好。因此在2014年,RBG(Ross B.Girshick )使用Region proposal+CNN(RCNN)代替传统目标检测使用的滑动窗口+手工设计特征,设计了RCNN框架,使得目标检测取得巨大突破,并开启了基于深度学习的目标检测热潮。

RCNN的检测流程:
RCNN主要分为3个大部分,第一部分产生候选区域,第二部分对每个候选区域使用CNN提取长度固定的特征;第三个部分使用一系列的SVM进行分类。
下面就是RCNN的整体检测流程:

(1)首先输入一张自然图像;
(2)使用Selective Search提取大约2000个候选区域(proposal);
(3)对每个候选区域的图像进行拉伸形变,使之成为固定大小的正方形图像,并将该图像输入到CNN中提取特征;
(4)使用线性的SVM对提取的特征进行分类。

RCNN的检测流程:
1.1 候选区域的产生
这里介绍的比较简单,RCNN使用Selective Search算法提取图像中的候选区域(因为我关注RCNN系列比较晚,直接应用的Faster RCNN,就没有关注Selective Search算法,这里也就不介绍了)
1.2 CNN特征提取
作者使用AlexNet对得到的候选区域的图像进行特征提取,最终生成的是一个4096维的特征向量。注意
AlexNet输入的是227x227大小的图像,因此在输入到AlexNet之前,作者把候选区域的图像首先进行了一小部分的边缘扩展(16像素),然后进行了拉伸操作,使得输入的候选区域图像满足AlexNet的输入要求(即227x227)。
我在这里其实进行了一部分实验,考虑怎样使候选区域图像满足AlexNet的输入要求

深度学习目标检测网络结构sppfast-rcnnfaster-rcnn

在讲fast-rcnn之前,我们先来看一下sppnet吧?~sppnet对r-cnn的改进主要有两点:    1.只对原图提取一次特征。输入是图片,在feature层对应位置找到候选框的位置。    2.结合空间金字塔方法实现cnns的对不同... 查看详情

深度学习和目标检测系列教程10-300:通过torch训练第一个faster-rcnn模型(代码片段)

@Author:Runsen上次介绍了Faster-RCNN模型,那么今天就开始训练第一个Faster-RCNN模型。本文将展示如何在水果图像数据集上使用Faster-RCNN模型。代码的灵感来自此处的Pytorch文档教程和Kagglehttps://pytorch.org/tutorials/intermediate/torc... 查看详情

keras深度学习实战(13)——目标检测基础详解(代码片段)

Keras深度学习实战(13)——目标检测基础详解0.前言1.目标检测概念2.创建自定义目标检测数据集2.1windows2.2Ubuntu2.3MacOS3.使用选择性搜索在图像内生成候选区域3.1候选区域3.2选择性搜索3.3使用选择性搜索生成候选区域4.交并... 查看详情

传统目标检测实战:hog+svm(代码片段)

传统目标检测实战:HOG+SVM文章目录传统目标检测实战:HOG+SVM1.前言1.1传统和深度1.2何为传统目标检测1.3传统目标检测方法不足2.先验知识3.项目框架3.1文件架构3.2方法简要介绍4.工具函数(utils.py)5.特征提取... 查看详情

keras深度学习实战(15)——从零开始实现yolo目标检测(代码片段)

Keras深度学习实战(15)——从零开始实现YOLO目标检测0.前言1.YOLO目标检测模型1.1锚框(anchorboxes)1.2YOLO目标检测模型原理2.从零开始实现YOLO目标检测2.1加载数据集2.2计算锚框尺寸2.3创建训练数据集2.4实现YOLO目标检测模型2.5... 查看详情

深度学习和目标检测系列教程11-300:小麦数据集训练faster-rcnn模型(代码片段)

@Author:Runsen上次训练的Faster-RCNN的数据格式是xml和jpg图片提供,在很多Object-Detection中,数据有的是csv格式,数据集来源:https://www.kaggle.com/c/global-wheat-detectionwidth和heigth是图片的长和宽,b 查看详情

深度学习目标检测网络结构ssdretinanet

onestageSSD:SSD是Faster-RCNN和YOLO中做了一次的分类和检测过程放在不同的图像大小上做了多次 RETINANET:RESNET+FPN+FOCALLOSS  查看详情

深度学习之目标检测(代码片段)

...对的关联性,目标定位检测即目标定位+检测。在深度学习中比较常用的目标定位检测方法有RCNN系列方法和YOLO系列方法。其中RCNN系列方法的定位过程和检测过程是分开的,即先定位目标,然后对定位出的目标进行... 查看详情

rcnn目标识别基本原理

...m/p/23006190前面一直在写传统机器学习。从本篇开始写一写深度学习的内容。可能需要一定的神经网络基础(可以参考 Neuralnetworksanddeeplearning 日后可能会在专栏发布自己的中文版笔记)。RCNN (论文:Richfeaturehierarchiesfora... 查看详情

基于区域的二阶段算法思想和理解综述

...目标检测是图像处理领域的基础。自从2012年CNN的崛起,深度学习在Detection的持续发力,为这个领域带来了变革式的发展。深度学习出现之前,传统的目标检测方法大概分为区域选择(滑动窗口)、特征提取(SIFT、HOG、LBP、DPM等... 查看详情

tensorflow2深度学习实战(十七):目标检测算法fasterr-cnn实战

前言:本专栏以理论与实战相结合的方式,左手看论文,右手敲代码,带你一步步吃透深度学习原理和源码,逐一攻克计算机视觉领域中的三大基本任务:图像分类、目标检测、语义分割。本专栏完整代码将在我的GiuHub仓库更新... 查看详情

pytorch深度学习实战|基于yolov3的安全帽佩戴检测

本期将提供一个利用深度学习检测是否佩戴安全帽的案例,从而展示计算机视觉中的目标识别问题的一般流程。目标检测是基于图片分类的计算机视觉任务,既包含了分类,又包含了定位。给出一张图片,目标检测系统要能够识... 查看详情

tensorflow2深度学习实战(十五):目标检测算法yolov4实战(代码片段)

前言:本专栏以理论与实战相结合的方式,左手看论文,右手敲代码,带你一步步吃透深度学习原理和源码,逐一攻克计算机视觉领域中的三大基本任务:图像分类、目标检测、语义分割。本专栏完整代码... 查看详情

tensorflow2深度学习实战(十八):目标检测算法yolov4-tiny实战

前言:本专栏以理论与实战相结合的方式,左手看论文,右手敲代码,带你一步步吃透深度学习原理和源码,逐一攻克计算机视觉领域中的三大基本任务:图像分类、目标检测、语义分割。本专栏完整代码将在我的GiuHub仓库更新... 查看详情

tensorflow2深度学习实战(十八):目标检测算法yolov4-tiny实战

前言:本专栏以理论与实战相结合的方式,左手看论文,右手敲代码,带你一步步吃透深度学习原理和源码,逐一攻克计算机视觉领域中的三大基本任务:图像分类、目标检测、语义分割。本专栏完整代码将在我的GiuHub仓库更新... 查看详情

tensorflow2深度学习实战(十八):目标检测算法yolov4-tiny实战

前言:本专栏以理论与实战相结合的方式,左手看论文,右手敲代码,带你一步步吃透深度学习原理和源码,逐一攻克计算机视觉领域中的三大基本任务:图像分类、目标检测、语义分割。本专栏完整代码将在我的GiuHub仓库更新... 查看详情

tensorflow2深度学习实战(十七):目标检测算法fasterr-cnn实战

前言:本专栏以理论与实战相结合的方式,左手看论文,右手敲代码,带你一步步吃透深度学习原理和源码,逐一攻克计算机视觉领域中的三大基本任务:图像分类、目标检测、语义分割。本专栏完整代码将在我的GiuHub仓库更新... 查看详情

caffe框架下目标检测——faster-rcnn实战篇操作

原有模型1、下载fasrer-rcnn源代码并安装gitclone--recursivehttps://github.com/rbgirshick/py-faster-rcnn.git1) 经常断的话,可以采取两步:gitclonehttps://github.com/rbgirshick/py-faster-rcnn.git2) 到py-faster-rcnn中,继续下载ca 查看详情