R-CNN:使用自己的数据训练 Faster R-CNN 的 ResNet-50 模型

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 上次使用 Faster R-CNN 训练了一个 VGG-16 的网络,为了再提升识别的准确率,利用 ResNet 网络在同样的数据上面训练了多一次。

上次使用 Faster R-CNN 训练了一个 VGG-16 的网络,为了再提升识别的准确率,利用 ResNet 网络在同样的数据上面训练了多一次。


基本的过程和在训练 VGG-16 网络时差不多,可参照 使用自己的数据训练 Faster R-CNN 的 VGG-16 模型

一、训练网络

(一)下载 ResNet-50 的 prototxt 文件

在我的 Github 上面可以下载我使用的文件,当然你也可以使用不同的 ResNet 网络结构。

(二)相关文件修改

1. cd $FRCN_ROOT/lib/rpn/generate_anchors.py

# 在 37 行:
def generate_anchors(base_size=16, ratios=[0.5, 1, 2],
                     scales=2**np.arange(3, 6)):
# 修改为:
def generate_anchors(base_size=16, ratios=[0.5, 1, 2],
                     scales=2**np.arange(1, 6)):

2. cd $FRCN_ROOT/lib/rpn/anchor_target_layer.py

# 在 28 行:
        anchor_scales = layer_params.get('scales', (8, 16, 32))
# 修改为:
        anchor_scales = layer_params.get('scales', (2, 4, 8, 16, 32))

3. cd $FRCN_ROOT/lib/rpn/proposal_layer.py

# 在 29 行:
        anchor_scales = layer_params.get('scales', (8, 16, 32))
# 修改为:
        anchor_scales = layer_params.get('scales', (2, 4, 8, 16, 32))

4. pascal_voc.py、imdb.py、train.prototxt、test.prototxt、.pt文件 的修改参考 使用自己的数据训练 Faster R-CNN 的 VGG-16 模型

5. 因为我们使用了 5 个尺度的 anchors,所以之前的 9 个 anchors 变成了 3*5=15 个。
修改 prototxt 和 pt文件,将其中的 18 换成 30。

layer {
  name: "rpn_cls_score"
  type: "Convolution"
  bottom: "rpn/output"
  top: "rpn_cls_score"
  param { lr_mult: 1.0 }
  param { lr_mult: 2.0 }
  convolution_param {
    num_output: 30   # 2(bg/fg) * 9(anchors)    ///将 18 换成 30
    kernel_size: 1 pad: 0 stride: 1
    weight_filler { type: "gaussian" std: 0.01 }
    bias_filler { type: "constant" value: 0 }
  }

(三)下载 ImageNet 模型

下载 ImageNet 预训练文件:ResNet-50.v2.caffemodel

(四)清除缓存

删除缓存文件:
$FRCN_ROOT/data/VOCdevkit2007/annotations_cache/annots.pkl
$FRCN_ROOT/data/cache 下的 pkl 文件
如果不清除缓存可能会报错。

(五)开始训练

参照 VGG16 的训练命令:
cd $FRCN_ROOT

./experiments/scripts/faster_rcnn_end2end.sh 0 ResNet-50 pascal_voc

==注意:第三个参数 ‘ResNet-50’,一定要和你的文件夹名字对应,比如我的文件放在$FRCN_ROOT/models/pascal_voc/ResNet-50 里面,所以我的第三个参数就为我目录的名称。==


由于 ResNet-50 的网络更深,训练的时间也需要更久,每一次迭代大约需要 0.5s ,训练这个网络我用了大概 10 个小时,但效果会比用 VGG 16 的好,主要是对小尺度的物体检测更加准确了。

这是我训练时各类的 AP :

目录
相关文章
|
2月前
|
机器学习/深度学习 编解码 算法
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
41 0
|
3月前
|
机器学习/深度学习
ACM MM24:复旦提出首个基于扩散模型的视频非限制性对抗攻击框架,主流CNN和ViT架构都防不住它
【9月更文挑战第23天】复旦大学研究团队提出了ReToMe-VA,一种基于扩散模型的视频非限制性对抗攻击框架,通过时间步长对抗性潜在优化(TALO)与递归令牌合并(ReToMe)策略,实现了高转移性且难以察觉的对抗性视频生成。TALO优化去噪步骤扰动,提升空间难以察觉性及计算效率;ReToMe则确保时间一致性,增强帧间交互。实验表明,ReToMe-VA在攻击转移性上超越现有方法,但面临计算成本高、实时应用受限及隐私安全等挑战。[论文链接](http://arxiv.org/abs/2408.05479)
77 3
|
3月前
|
机器学习/深度学习 人工智能 测试技术
AI计算机视觉笔记二十五:ResNet50训练部署教程
该项目旨在训练ResNet50模型并将其部署到RK3568开发板上。首先介绍了ResNet50网络,该网络由何恺明等人于2015年提出,解决了传统卷积神经网络中的退化问题。项目使用车辆分类数据集进行训练,并提供了数据集下载链接。环境搭建部分详细描述了虚拟环境的创建和所需库的安装。训练过程中,通过`train.py`脚本进行了15轮训练,并可视化了训练和测试结果。最后,项目提供了将模型转换为ONNX和PT格式的方法,以便在RK3568上部署。
|
4月前
|
机器学习/深度学习
CNN模型验证和CNN模型保存
【8月更文挑战第10天】CNN模型验证和CNN模型保存。
67 27
|
4月前
|
机器学习/深度学习
加载CNN保存模型
【8月更文挑战第10天】加载CNN保存模型。
46 12
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
160 9
|
7月前
|
机器学习/深度学习 PyTorch 测试技术
|
2月前
|
机器学习/深度学习 编解码 自然语言处理
ResNet(残差网络)
【10月更文挑战第1天】
|
机器学习/深度学习 算法 计算机视觉
经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)
经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)
3689 1
经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)
|
7月前
|
机器学习/深度学习 计算机视觉
深度学习第6天:ResNet深度残差网络
深度学习第6天:ResNet深度残差网络

热门文章

最新文章

相关实验场景

更多