手把手教你训练R2CNN_Faster-RCNN_Tensorflow单GPU到多GPU分布式训练完整实战【免费下载链接】R2CNN_Faster-RCNN_TensorflowDetectionTeamUCAS/R2CNN_Faster-RCNN_Tensorflow: 是一个基于TensorFlow实现的Faster R-CNN变体适用于遥感图像处理。适合用于需要针对遥感图像进行目标检测的项目。特点是可以提供针对遥感图像优化的模型结构和训练流程。项目地址: https://gitcode.com/gh_mirrors/r2/R2CNN_Faster-RCNN_TensorflowR2CNN_Faster-RCNN_Tensorflow 是一个基于 TensorFlow 实现的 Faster R-CNN 变体专为遥感图像目标检测设计。它通过旋转区域卷积网络Rotational Region CNN解决遥感图中目标朝向任意、角度多变的核心难题支持 DOTA、FDDB 人脸、ICDAR2015 场景文字等多个数据集并提供单 GPU 与多 GPU 分布式两种完整训练流程。本文带你从零完成一次遥感目标检测模型训练 一、为什么 R2CNN 适合遥感目标检测传统 Faster R-CNN 只能输出水平矩形框而遥感影像中的飞机、船只、车辆往往以任意角度出现。R2CNN 在检测网络中引入**旋转框Rotated Box**回归分支同时对水平框 旋转框两个方向进行联合训练在 DOTA 榜单上取得了远超 YOLOv2、R-FCN 等方法的 mAP 分数。下图是该模型在 DOTA 遥感数据集上 15 类地物汽车、船舶、飞机、网球场、储罐等的检测效果可以看到旋转框紧贴任意朝向的目标网络骨干支持 ResNetresnet_v1_50 / resnet_v1_101与轻量级的 MobilenetV2后者适合小显存甚至移动端场景结构如下图所示二、快速搭建训练环境项目环境依赖非常简洁只需要 4 项组件版本要求TensorFlow≥ 1.2CUDA8.0Python2.7推荐 Anaconda2OpenCVcv2任意稳定版 提示该项目基于 TF 1.x 编写使用tf.Session与 slim API请勿直接安装 TensorFlow 2.x。获取代码git clone https://gitcode.com/gh_mirrors/r2/R2CNN_Faster-RCNN_Tensorflow三、下载预训练权重与准备数据训练遥感检测模型建议加载 ImageNet 预训练权重以加速收敛。将权重放入 data/pretrained_weights/ 目录ResNet50 / ResNet101对应resnet_v1_50.ckpt、resnet_v1_101.ckptMobilenetV2放入data/pretrained_weights/mobilenet/以 DOTA 数据集为例数据需裁剪成小图并转为 XML 标注项目内置了裁剪脚本 data/io/DOTA/train_crop.py 与 data/io/DOTA/val_crop.py。最终目录结构应为├── VOCdevkit │ ├── VOCdevkit_train │ │ ├── Annotation # XML 标注 │ │ └── JPEGImages # 图片 │ └── VOCdevkit_test四、自定义数据集只需修改 3 处配置 如果你想训练自己的遥感数据核心改动只有 3 个文件libs/configs/cfgs.py—— 全局配置中心。修改CLASS_NUM类别数、DATASET_NAME数据集名、VERSION实验版本名也决定权重保存目录、GPU_GROUP使用哪些 GPU等参数libs/label_name_dict/label_dict.py—— 按DATASET_NAME分支添加你的类别字典背景固定为 0data/io/read_tfrecord.py—— 第 75 行附近注册你的data_name让数据读取器认识新数据集。其余训练超参学习率LR、衰减步DECAY_STEP、批量BATCH_SIZE、Anchor 配置等同样集中在 libs/configs/cfgs.py 中一处修改全局生效对新手非常友好。五、编译 C 扩展加速旋转框 NMS 等计算密集操作使用 C/CUDA 实现训练前需先原地编译cd $PATH_ROOT/libs/box_utils/ python setup.py build_ext --inplace cd $PATH_ROOT/libs/box_utils/cython_utils python setup.py build_ext --inplace编译脚本见 libs/box_utils/setup.py依赖 CUDA 8.0 环境编译产物会直接生成在源目录下。六、数据转 TFRecord 格式模型通过 TFRecord 读取数据运行 data/io/convert_data_to_tfrecord.py 将 XML 图片打包cd $PATH_ROOT/data/io/ python convert_data_to_tfrecord.py --VOC_dir/PATH/TO/VOCdevkit/VOCdevkit_train/ \ --xml_dirAnnotation \ --image_dirJPEGImages \ --save_nametrain \ --img_format.png \ --datasetDOTA生成文件为data/tfrecord/DOTA_train.tfrecord训练时由 data/io/read_tfrecord.py 中的next_batch自动喂入。七、单 GPU 训练实战 ️一切就绪后进入 tools/ 目录启动训练cd $PATH_ROOT/tools python train.pytools/train.py 的训练流程非常清晰构建网络调用 libs/networks/build_whole_network.py 中的DetectionNetwork搭建 RPN 水平分支 旋转分支的完整检测网络损失监督RPN 定位/分类损失 Faster R-CNN 水平与旋转双分支损失 权重衰减共 5 类损失联合优化学习率策略分段常数衰减默认在 60000、120000 步各除以 10Momentum 0.9自动存档每SAVE_WEIGHTS_INTE默认 2000步把权重保存到output/trained_weights/VERSION/GPU 选择由配置中的GPU_GROUP 2通过CUDA_VISIBLE_DEVICES指定单卡。训练时可用 TensorBoard 实时观察损失曲线与检测框可视化cd $PATH_ROOT/output/summary tensorboard --logdir.八、多 GPU 分布式训练Tower 梯度平均 单卡太慢项目提供了现成的多卡训练脚本 tools/multi_gpu_train.py采用经典的Tower 模式 梯度平均实现数据并行为每张 GPU 复制一份计算塔Tower循环len(cfgs.GPU_GROUP)次在/gpu:i设备上各自前向计算并求损失共享参数通过tf.get_variable_scope().reuse_variables()让所有塔共用同一套权重梯度平均average_gradients()函数把各塔梯度拼接后取均值再统一执行参数更新单会话训练只需一个tf.Session即可同时调度多卡。使用方法把 libs/configs/cfgs.py 中的GPU_GROUP改为多卡字符串例如0,1,2,3然后cd $PATH_ROOT/tools python multi_gpu_train.py⚠️ 注意多卡时总批量等于BATCH_SIZE × GPU 数量建议同步适当调大学习率。九、评估与推理验证你的模型 ✅训练完成后用以下命令验证效果# 在 DOTA 测试集上评估 mAP python eval.py --img_dir/PATH/TO/DOTA/IMAGES/ \ --image_ext.png \ --test_annotation_path/PATH/TO/TEST/ANNOTATION/ \ --gpu0 # 批量推理 python inference.py --data_dir/PATH/TO/DOTA/IMAGES_CROP/ --gpu0模型也可以迁移到其他任务。以 ICDAR2015 场景文字检测为例输入一张商场实景图训练后的模型即可框出图中所有旋转文字区域效果如下左原图 / 右检测结果十、常见问题速查清单 问题解决方案编译 C 扩展报错确认 CUDA 8.0 与对应版本 gcc 已加入 PATHTF 2.x 下跑不起来安装 TensorFlow 1.x项目基于 TF 1.2 编写训练不收敛确认已正确加载 ImageNet 预训练权重到data/pretrained_weights/显存不足换用MobilenetV2骨干或减小BATCH_SIZE、IMG_SHORT_SIDE_LEN找不到数据集检查cfgs.DATASET_NAME、label_dict.py、read_tfrecord.py三处是否一致总结R2CNN_Faster-RCNN_Tensorflow 用配置集中化 脚本分层化的设计把遥感目标检测训练拆解为环境 → 数据 → 配置 → 编译 → TFRecord → 训练 → 评估7 个清晰步骤。单卡跑train.py验证流程多卡跑multi_gpu_train.py加速生产一条命令即可完成从新手到实战的全部训练链路。【免费下载链接】R2CNN_Faster-RCNN_TensorflowDetectionTeamUCAS/R2CNN_Faster-RCNN_Tensorflow: 是一个基于TensorFlow实现的Faster R-CNN变体适用于遥感图像处理。适合用于需要针对遥感图像进行目标检测的项目。特点是可以提供针对遥感图像优化的模型结构和训练流程。项目地址: https://gitcode.com/gh_mirrors/r2/R2CNN_Faster-RCNN_Tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考