# 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文件中三个属性,如下图:
![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/121349_85e1cdd0_5647290.png "屏幕截图.png")    然后根据自己的数据集的标注文件是怎么个形式选择执行data包下面process_data.py文件中的两个方法。
   我这里写了两个方法:
      ① 方法后缀名为_byTXT是根据txt标注生成txt文件同时生成xml标注, 这里注意要修改train_label_path为自己数据集中txt标注文件的绝对路径(process_data.py文件的最上方);
      ② 后缀名为_byXML是根据xml标注生成txt文件。
2、修改配置文件中两个代表类名属性(一个是元组,一个是列表)以及class_num(总类别数, 而且对应类别的下标都是从1开始, 0表示背景), 都改为自己数据集中的类别即可。
![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/121410_2e2bbf58_5647290.png "屏幕截图.png") 3、根据机子来修改下面的两个配置, 一个是vgg16预训练权重的路径, 另一个是device(再GPU上跑还是CPU上跑)。
![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/121419_729f371a_5647290.png "屏幕截图.png") 4、先根据下图修改配置, 再点击nets包下面的train.py文件即开始训练。
![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/121430_0cac64cf_5647290.png "屏幕截图.png") 5、训练完成之后, 先根据下图修改配置, 再点击根目录下面的show_result.py文件即开始批量保存预测后的结果到show_result的文件夹下面。
![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/121439_f9c82f03_5647290.png "屏幕截图.png")