RCNN系列(注意事项及简单步骤)

2024-05-14 09:08

本文主要是介绍RCNN系列(注意事项及简单步骤),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:https://blog.csdn.net/poorfriend/article/details/51604385



训练过程:

step 1: 对于每张图片,利用选择性搜索(SS,Selective Search)找出2K个候选区域。对每个候选区域改变其尺度和长宽比,使其与卷积神经网络要求的图片输入的规格保持一致。

step 2: 利用Alexnet或VGGnet初始化CNN,将最后的1000类分类器替换成21类(20类+背景)分类器,随机初始化这层权重,然后就是整个网络的fine-tuning。训练时候选区域中,与GT box(grand-true box)的IOU大于0.5标为正样本,其余为负样本。从正样本中随机抽取32个,负样本中随机抽取96个,构成一个128的min-batch。

step 3: 利用步骤2调整好的网络(前面的网络已经是固定了)提取特征,用SVM分类。GT box标为正,其他候选区域中与GT box的IOU小于0.3标为负,其他的舍去。

step 4: 边框回归


注:

1 改变图片大小,文中给出了几种方法:

(1)各向异性缩放, 我的理解是长宽放缩不同的倍数:

这种方法很简单,就是不管图片的长宽比例,管它是否扭曲,进行缩放就是了,全部缩放到CNN输入的大227*227,如下图(D)所示;

(2)各向同性缩放,长宽放缩相同的倍数

A、tightest square with context:把region proposal的边界进行扩展延伸成正方形,灰色部分用原始图片中的相应像素填补,如下图(B)所示;

B、“tightest square without context”:把region proposal的边界进行扩展延伸成正方形,灰色部分不填补,如下图(C)所示;

在放缩之前,作者也考虑了,在region proposal周围补额外的原始图片像素(pad p)。两张图片第一层p=0,第二层p=16.


2  正负样本和softmax的问题:

为什么最后分类的时候用SVM代替了softmax,因为作者通过实验发现还是SVM更好。那为什么不一开始就用SVM做fine-tuning呢?我认为是SVM是一个二分类器,并不适合做fine-tuning。当用softmax做fine-tuning时,如果采用和SVM一样的区分正负样本策略,则效果会差很多。作者猜测是因为这样做会引起样本数太少导致过拟合。softmax区分样本的方法更宽泛,将正样本的数量提高近30倍,这样就避免了过拟合。值得注意的是,这样做得到的结果是次优的,因为并没有用精确的定位以及更严格的负样本来fine-tuning。svm训练的时候,因为svm适用于少样本训练,所以对于训练样本数据的IOU要求比较严格。


3 边框回归:

用SVM为每个region proposal评分后,可以用边框回归找到更精确地定位。这些边框回归器是按类来训练的

      

P和G分布候选区域和GT Box,P和G的IOU必须达到某个阈值(文中是0.6)。下面不加说明的话省略上标i.。公式中x,y代表区域中心坐标,w,h代表长和高。是region proposal经变换后的新区域。




据作者的结论,对候选区域评分和边框回归只进行一次,多次迭代,并无提升。

这篇关于RCNN系列(注意事项及简单步骤)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988343

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

Python下载Pandas包的步骤

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.