Autodl训练Faster-RCNN网络(自己的数据集)

参考文章:

Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客

Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客

环境配置

我到下载torch这一步老是即将结束的时候自动结束进程,所以还是自己下载安装吧。

如果出现上面的错误说明你没有加显卡,加上显卡就能运行成功了。

如果在安装相关库过程中发生报错,请先升级pip:

pip install --upgrade pip

数据集准备

我的数据集是之前训练yolo的,是我自己混合的Pascalvoc数据集。

查阅了资料说只需要将xml划分就行,我这里主要是8:2划分为训练集和验证集。

import os

import random

from typing import List, Tuple

def split_dataset(xml_dir: str, output_dir: str, train_percent: float = 0.8) -> None:

"""

将VOC格式数据集的XML标注文件划分为训练集和验证集

参数:

xml_dir: XML标注文件所在目录

output_dir: 输出txt文件的目录

train_percent: 训练集占总样本的比例

"""

确保输出目录存在

os.makedirs(output_dir, exist_ok=True)

获取所有XML文件

try:

total_xml = os.listdir(xml_dir)

except FileNotFoundError:

print(f"错误: XML目录 '{xml_dir}' 不存在")

return

if not total_xml:

print(f"错误: XML目录 '{xml_dir}' 为空")

return

计算划分点

num = len(total_xml)

print(f"找到 {num} 个XML标注文件")

indices = list(range(num))

random.shuffle(indices) # 随机打乱索引

train_size = int(num * train_percent) # 训练集数量

train_indices = indices:train_size # 训练集索引

val_indices = indicestrain_size: # 验证集索引

输出划分结果

print(f"数据集划分结果: 训练集 {len(train_indices)}, 验证集 {len(val_indices)}")

创建输出文件并写入数据

file_paths = {

'train': os.path.join(output_dir, 'train.txt'),

'val': os.path.join(output_dir, 'val.txt'),

}

写入训练集

with open(file_paths'train', 'w') as f_train:

for i in train_indices:

name = total_xmli:-4 + '\n'

f_train.write(name)

写入验证集

with open(file_paths'val', 'w') as f_val:

for i in val_indices:

name = total_xmli:-4 + '\n'

f_val.write(name)

print(f"划分完成!训练集和验证集已保存到 {output_dir}")

if name == "main":

配置参数

xml_dir = '/root/faster-rcnn.pytorch-pytorch-1.0/data/xmls'

output_dir = '/root/faster-rcnn.pytorch-pytorch-1.0/data'

执行划分 (80% 训练集, 20% 验证集)

split_dataset(xml_dir, output_dir, train_percent=0.8)

代码修改

我主要涉及到五类,先修改如下:

背景不需要更改,只需要更改后面的类别。

跟着博主的描述操作,安装成功!

训练产生的报错以及解决:

发生报错:环境配置问题找 deepseek,涉及代码找豆包。(我最喜欢的搭配)

  • 没有安装torchversion

得按照博主的那个指令来才能顺带下载torchvision,

  • 找不到数据集路径

因为我数据集格式和博主不一样,最后让ai帮助我修改了pascalvoc.py就没有显示这个错误了。

  • 没有预训练模型

本地下载预训练模型(resnet/densenet/vgg等url地址)_resnet预训练模型下载-CSDN博客

下载后要更改模型名称为

复制代码
vgg16_caffe.pth

训练指令

运行下面的指令:(这个指令运行后它使用的是trainval.txt文件,如果你的是train得修改名称,不然会报错)

复制代码
CUDA_VISIBLE_DEVICES=0 python trainval_net.py  --dataset pascal_voc  --net vgg16  --bs 4  --nw 0  --lr 0.002 --cuda

像这样应该就是成功了,可以在文件中修改epoch。

需要各类别的精度以及总体精度的时候执行下面这条命令(需要根据产生的文件名进行修改):

chekepoch代表你要检测哪个文件

checkpoint应该每个人的都不一样,需要进行修改。

复制代码
python test_net.py --dataset pascal_voc --net vgg16 --checksession 1 --checkepoch 3 --checkpoint 1228  --cuda

PS:每一个epoch产生的pth文件非常占存储空间,建议更改存储路径。

相关推荐
宸津-代码粉碎机3 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
做萤石二次开发的哈哈5 小时前
视频解码器怎么对接?解码上墙、电视墙开窗与场景切换的ISAPI接入实战
人工智能·物联网·监控·视频编解码·大屏端·萤石开放平台·蓝海aiot一站式工作台
Leo.yuan5 小时前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
长谷深风1115 小时前
Tool与Skill:AI能力设计的分水岭
java·人工智能·ai·大模型·aiagent
科技观察哨5 小时前
六足平台选型与纳米定位系统集成:HEB-640六自由度位移台在半导体光刻对准中的参数边界与国产替代评估
前端·人工智能
云上先途5 小时前
任务智能体可以自动完成哪些类型工作,是不是只能做简单重复操作?
大数据·人工智能
明志数科5 小时前
具身智能数据供给的分层:分布式采集与入厂采集的工程边界分析
人工智能·机器学习·机器人
像风一样自由20205 小时前
41.用FastAPI搭建一个RAG后端需要哪些接口
人工智能·大模型·fastapi·rag·智能体
小蒋观天下5 小时前
两轮车检测AI摄像头——2026行业竞争格局、商业模式与核心痛点
大数据·人工智能·安全·计算机视觉·ai大模型
RisunJan5 小时前
【这就是AI】AI每日资讯简报 - 2026-09-28(周一)
大数据·人工智能