# Faster-RCNN
**Repository Path**: iji-quant/Faster-RCNN
## Basic Information
- **Project Name**: Faster-RCNN
- **Description**: 目标检测Faster-RCNN的Pytorch版本实现。README附详细使用教程。
- **Primary Language**: Python
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2025-08-01
- **Last Updated**: 2025-08-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Faster-RCNN
pytorch实现的Faster-RCNN模型,**参考了许多人写的代码积累起来的**。
## 环境:
pytorch版本为**1.5**
python版本为**python3.7**(只要是3问题不大)
内存最好**32G**, 数据集的那个类用了空间换时间的思想, 本来需要频繁IO装载图片张量, 我写的是直接一次性全拉到内存, IO次数大大减少, 缩短了训练单张图片的时间。
## 代码结构:
checkpoints:存放训练时每个epoch得到的权重(基本上一个权重都有1G多)的包。
configs:存放配置文件的包。
nets:网络结构的包。
pre_model_weights:存放预训练的vgg16权重的包。
show_result:预测时候生成图片保存的包。
utils:一些工具函数。
kitti:kitti数据集。
## 博客地址:
https://blog.csdn.net/cj1561435010/article/details/106649040
https://blog.csdn.net/cj1561435010/article/details/106958266
## 数据集约定格式:
训练所需要的数据集格式为VOC格式。
VOCx
--Annotations
--*.xml(存放总训练集中各个图片的标注, 图片名和标注文件名一一对应)
--ImageSets
--Main
--train.txt(总训练集中抽出一部分作为训练集的txt)
--val.txt(总训练集中抽出一部分作为验证集的txt)
--trainval.txt(总训练集中抽出一部分作为训练和验证集的txt)
--train_test.txt(总训练集中抽出一部分作为测试集的txt)
--test.txt(真正测试集的txt)
--JPEGImages
--resize_test(真正测试集中将最小边放缩到600px之后的图片路径)
--resize_train_test(总训练集中抽出一部分作为测试集中将最小边放缩到600px之后的图片路径)
--resize_trainval(总训练集中抽出一部分作为训练和验证集中将最小边放缩到600px之后的图片路径)
--testing(原始的真正测试集图片路径)
--training(原始的总训练集图片路径)
## 步骤:
1、写入训练的txt文件
修改configs包下面的config文件中三个属性,如下图:

然后根据自己的数据集的标注文件是怎么个形式选择执行data包下面process_data.py文件中的两个方法。
我这里写了两个方法:
① 方法后缀名为_byTXT是根据txt标注生成txt文件同时生成xml标注, 这里注意要修改train_label_path为自己数据集中txt标注文件的绝对路径(process_data.py文件的最上方);
② 后缀名为_byXML是根据xml标注生成txt文件。
2、修改配置文件中两个代表类名属性(一个是元组,一个是列表)以及class_num(总类别数, 而且对应类别的下标都是从1开始, 0表示背景), 都改为自己数据集中的类别即可。

3、根据机子来修改下面的两个配置, 一个是vgg16预训练权重的路径, 另一个是device(再GPU上跑还是CPU上跑)。

4、先根据下图修改配置, 再点击nets包下面的train.py文件即开始训练。

5、训练完成之后, 先根据下图修改配置, 再点击根目录下面的show_result.py文件即开始批量保存预测后的结果到show_result的文件夹下面。
