目标检测RCNN流程

RCNN训练流程

1、用标注图片有监督预训练CNN网络

迁移学习,可解决标注框不多,训练样本少的问题

2、selective search提取候选框(region proposal)

先根据纹理、色彩、直方图等特征将图片划分出不同的区域,分别计算这n个区域的两两相似度,再将相似度最大的两个区域合并,去掉合并的两个区域,重新计算两两相似度,再合并,直到只剩一个区域,最初划分的区域并上这个过程中产生的所有区域即为候选框,一般一张图选择2k个候选框。

3、将候选框调整成227*227大小

所用网络为AlexNet,所以输入大小是227*227,可以直接在原图上扩展,或者暴力resize,或者在原图上扩展部分再resize

4、与Ground Truth的IOU>0.5为正例(N类),与所有Ground TruthIOU<=0.5为背景(1类),以这种方式挑选候选框微调CNN分类网络

为什么要微调,微调能让cnn学到针对特定任务的特征,更有针对性。

训练时,mini-batch为32个正样本和96个负样本,因为负样本太多。学习率为0.01/10,变小是因为避免忘记之前特征。

5、再次选择样本,与所有Ground Truth的IOU全都小于0.3为负例,真实标定类别的Ground Truth为正例,用3中微调的网络提取特征,训练N个SVM分类器

两次训练样本选择标准不一样是因为:微调阶段是由于CNN对小样本容易过拟合,需要大量训练数据,故对IoU限制宽松:Ground Truth+与Ground Truth相交IoU>0.5的建议框为正样本,否则为负样本; SVM这种机制是由于其适用于小样本训练,故对样本IoU限制严格:Ground Truth为正样本,与Ground Truth相交IoU<0.3的建议框为负样本。

6、每张图片,根据N个svm分类器的分类结果,用非极大抑制删除大面积重复的候选框,只保留跟Ground Truth的IOU最大的那个

① 对2000×20维矩阵中每列按从大到小进行排序; 

② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体; 

③ 从每列次大的得分建议框开始,重复步骤②; 

④ 重复步骤③直到遍历完该列所有建议框; 

⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制; 

⑥ 最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框。

7、用剔除后的候选框训练回归器

损失函数的意义:预测值到GroundTruth的映射要尽可能接近从预选框变换到Ground truth的映射

reference:

https://blog.youkuaiyun.com/xjz18298268521/article/details/52412991

https://www.cnblogs.com/gongxijun/p/7071509.html?utm_source=debugrun&utm_medium=referral

https://www.cnblogs.com/gongxijun/p/7071509.html?utm_source=debugrun&utm_medium=referral

### Faster R-CNN目标检测项目开发流程 #### 1. 环境搭建与依赖安装 在开始任何机器学习项目之前,都需要先配置好运行环境。对于Faster R-CNN而言,通常需要安装Python及其相关库(如PyTorch、TensorFlow或其他支持框架)。具体步骤如下: - 安装必要的深度学习框架(例如PyTorch或TensorFlow)。 - 配置CUDA和cuDNN以加速GPU计算[^1]。 ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ``` #### 2. 数据集准备 为了训练Faster R-CNN模型,需准备好标注的数据集。常见的数据格式有COCO、Pascal VOC等。如果使用自定义数据集,则需要将其转换为目标检测标准格式。 - 下载公开数据集(如COCO或VOC),或者收集并标注自己的图像数据。 - 使用工具(如LabelImg)生成Bounding Box标签文件,并保存为XML或JSON格式[^2]。 #### 3. 模型架构理解 Faster R-CNN由两个主要部分组成:特征提取网络(Backbone Network)和地区建议网络(Region Proposal Network, RPN)。其中,RPN用于生成候选区域,而分类器则负责预测类别和调整边界框位置[^3]。 #### 4. 训练过程设置 设定超参数以及损失函数来指导整个训练过程。这一步骤涉及以下几个方面: - **初始化权重**:可以采用预训练模型(如ResNet)作为backbone的初始权重。 - **批量大小(Batch Size)、学习率(Learning Rate)和其他优化策略的选择**。 以下是基于PyTorch的一个简单实现片段: ```python import torch.optim as optim from faster_rcnn import FasterRCNN model = FasterRCNN(backbone='resnet50', num_classes=91) # 设置优化器 optimizer = optim.SGD(model.parameters(), lr=0.005, momentum=0.9, weight_decay=0.0005) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=3, gamma=0.1) ``` #### 5. 开始训练 加载数据集后即可启动训练循环。在此期间监控验证集上的表现以便及时调整参数。每完成一轮epoch都会评估当前模型性能指标如mAP(mean Average Precision)[^4]。 #### 6. 测试与部署 当达到满意的收敛状态之后就可以利用测试样本检验最终效果了。另外还可以导出ONNX等形式便于嵌入其他应用程序当中去应用该模型成果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值