【深度学习】使用FasterRCNN模型训练自己的数据集(记录全流程

此处用的FasterRCNN模型使用的是B导的源码,读者可以去B站搜B导的视频进行了解和学习,视频中B导非常细心讲解了如何训练自己的数据集以及预测。


前言

此实验的整个流程参考了B导的博客:睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台 以及另一个博主的:对比实验系列:Faster R-CNN配置及训练自己数据集

B导的源码:https://github.com/bubbliiiing/faster-rcnn-pytorch B站视频链接:https://www.bilibili.com/video/BV1BK41157Vs/


一、准备数据集

此源码数据集使用的是voc格式,因为我已经拥有yolo格式的数据集,故采用的是yolo格式转为voc格式。yolo2voc参考的这篇文章:将Yolo格式标注文件转换为VOC格式,如果是其他格式的可以自行查找数据集格式的相互转换的方式。

转换后得到数据集的如下分布:
在这里插入图片描述

ps:由于我已经对数据集进行划分了训练集和验证集,故直接生成的train.txt和val.txt。
然后使用源码中的voc_annotation.py生成2007_train.txt 2007_val.txt(如果你的情况和我一样是已经划分好训练集 验证集的,只需要生成2007_train.txt 2007_val.txt,就在voc_annotation.py中设置mode=2,类别设置为自己的类别。
在这里插入图片描述
classes_path:按着顺序将自己数据集的类别写入
在这里插入图片描述
如果你并未划分,想随机分可以直接将mode=0,直接随机划分并生成相应的2007_train.txt 2007_val.txt。这两个文件包含图片的位置信息、图片中包含的目标信息。
在这里插入图片描述

就这样,数据集准备完成。

二、环境配置

2.1 基础环境

建议新建一个环境

conda create -n rcnn python=3.8 -y
conda activate rcnn
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html

2.2 其他依赖包安装

进入项目源码,点击终端运行

pip install -r requirements.txt

注意:安装requirements.txt的时候会报一些错,经试验,我将这两个修改为≥即可
在这里插入图片描述

2.3 预权重下载

将预权重下载至项目里面,可以在github上进行下载。(fasterrcnn的官方github里面有,或者我前面放的B导的github里面也有)

二、训练数据集

进入train.py修改超参数,主要修改这些,其他超参数可以根据情况自行调整。
classes_path为自己数据集的标签路径
model_path为预训练权重路径
调整冻结训练和非冻结训练的batch、线程数num_workers
train_annotation_path和val_annotation_path为第一部分生成的图片索引文件
在这里插入图片描述
开始训练

python train.py

训练完成以后可以得到以下训练文件
在这里插入图片描述

三、预测

首先到frcnn.py中去修改class FRCNN类:
在这里插入图片描述
然后就是修改predict.py中的超参数进行预测
由于我是对整个文件夹进行预测,故mode选择
在这里插入图片描述
然后修改文件夹路径以及输出的路径
在这里插入图片描述
如果想要保存txt文件可以参考注释
在这里插入图片描述


结束语

浅浅记录训练两阶段模型FasterRCNN模型的过程

### 使用自定义数据集训练Faster R-CNN模型 #### 准备环境和资源 为了使用自定义数据集训练Faster R-CNN模型,需先准备必要的软件包以及配置开发环境。这通常涉及安装Python库和其他依赖项,并设置好GPU支持以便加速计算过程。 #### 获取预训练模型 下载预先训练好的Faster R-CNN模型作为起点可以显著减少训练时间和提高最终性能。对于此目的,可以从官方源或其他可信渠道获取适用于特定框架版本的权重文件[^1]。 ```bash cd faster-rcnn.pytorch-pytorch-1.0 && mkdir data cd data && mkdir pretrained_model VOCdevkit2007 ``` 上述命令创建了`faster-rcnn.pytorch-pytorch-1.0/data/`目录结构中的两个子文件夹——一个是用来保存预训练模型(`pretrained_model`);另一个则是放置Pascal VOC格式的数据集(`VOCdevkit2007`)[^2]。 #### 构建自定义数据集 构建适合于Faster R-CNN输入格式的数据集至关重要。一般情况下,这意味着要将图片连同对应的标注信息一起整理成标准形式。常见的做法是遵循Pascal VOC的标准,即每张图对应一个XML文件描述其中的对象类别及其边界框位置。 #### 修改配置参数 调整超参数以适应新的任务需求也是必不可少的一环。这些改动可能涉及到但不限于:学习率、批量大小(batch size)、迭代次数(iterations),还有最重要的是指定新数据集的位置路径等细节设定。 #### 开始训练流程 一旦完成了以上准备工作,则可以通过运行脚本来启动实际的训练进程。在此期间,建议定期监控损失函数的变化趋势以及其他评估指标的表现情况,从而及时发现潜在问题并作出相应优化措施。 ```python import torch from model.faster_rcnn import FasterRCNN from utils.config import cfg, cfg_from_file cfg_from_file('path_to_your_config.yaml') model = FasterRCNN() if use_gpu: model.cuda() for epoch in range(num_epochs): train(model) validate(model) save_checkpoint({ 'epoch': num_epochs, 'state_dict': model.state_dict(), }, filename='checkpoint.pth.tar') ``` 这段伪代码展示了如何加载配置文件、初始化网络架构实例化对象、判断是否启用CUDA加速功能、循环执行训练与验证操作直至达到预定轮次数量最后保存下当前状态到磁盘中去[^3]。
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值