Mxnet 下 R-FCN 训练自己的数据集

本文介绍了如何在Mxnet框架下使用R-FCN进行对象检测,特别是针对小物体的检测。首先,通过LabelImg工具制作Pascal VOC格式的数据集,接着划分trainval和test集。然后,修改配置文件,并下载预训练模型开始训练。文章提供了一步步的操作指导和脚本,适合需要训练R-FCN模型的读者。
摘要由CSDN通过智能技术生成

前言

这篇文章最开始由我写在简书,欢迎到简书关注我 Link
SSD 对于小物体的检测远不及 R-FCN。因为工作的需要就训练了一个 R-FCN 的模型。使用到的 Deformable-ConvNets 在这里

制作 Pascal VOC 格式数据集

使用 LabelImg 标记数据集,将生成图片对应的 .xml 文件。下载地址:LabelImg for win and linux (macOS用户需要从源码编译,Github : labelImg)

# 首先下载 Deformable-ConvNets 源码
git clone https://github.com/msracver/Deformable-ConvNets.git

# 创建数据集目录
cd Deformable-ConvNets/
sh init.sh
cd data/
mkdir VOCdevkit && cd VOCdevkit
mkdir VOC2007 && cd VOC2007
mkdir Annotations
mkdir JPEGImages
mkdir ImageSets && cd ImageSets
mkdir Main

目录创建好之后将 .jpg文件放入 JPEGImages目录下
.xml文件放入Annotations

执行脚本划分 trainval 和 test 集

我使用到脚本如下:

import os  
import random   

xmlfilepath=r'/your/path/to/VOCdevkit/VOC2007/Annotations'  
saveBasePath=r"/your/path/to/VOCdevkit"  

trainval_percent=0.9   # 划分整个训练集百分之几作为 trainval
train_percent=0.9       # trainval 中  train 所占比例
total_xml = os.listdir(xmlfilepath)  
num=len(total_xml)    
list=range(num)    
tv=int(num*trainval_percent)    
tr=int(tv*train_percent)    
trainval= random.sample(list,tv)    
train=random.sample(trainval,tr)    

print("train and val size",tv)  
print("traub suze",tr)  
ftrainval = open(os.path.join(saveBasePath,'VOC2007/ImageSets/Main/trainval.txt'), 'w')    
ftest = open(os.path.join(saveBasePath,'VOC2007/ImageSets/Main/test.txt'), 'w')    
ftrain = open(os.path.join(saveBasePath,'VOC2007/ImageSets/Main/train.txt'), 'w')    
fval = open(os.path.join(saveBasePath,'VOC2007/ImageSets/Main/val.txt'), 'w')    

for i  in list:    
    name=total_xml[i][:-4]+'\n'    
    if i in trainval:    
        ftrainval.write(name)    
        if i in train:    
            ftrain.write(name)    
        else:    
            fval.write(name)    
    else:    
        ftest.write(name)    

ftrainval.close()    
ftrain.close()    
fval.close()    
ftest .close()  

执行完毕后,可以看到 ~/data/VOCdevkit/VOC2007/ImageSets/Main 下多了几个 .txt文件

修改配置文件

修改 ~/experiments/rfcn/cfgs/下的 resnet_v1_101_voc0712_rfcn_end2end_ohem.yaml

# 4 行,输出路径不想更改的话可以不用动
# 5 行,想用几个 GPU 就写几个,比如我写了 '0,1'
gpus: '0,1'
# 51 行,修改分类类别数。改为你个人分类数 + 1,比如我数据集有4个分类,我写了 4 + 1 = 5
NUM_CLASSES: 5
# 54 行
image_set: 2007_trainval

修改 ~/lib/dataset/下的 pascal_voc.py

# 44 行,改为自己的类别名,注意 '__background__' 不要改
self.classes = ['__background__',  # always index 0
                    'label1', 'label2', ..., 'labeln']

下载预训练模型并开始训练

下载 resnet_101 的预训练模型放与 ~/model/pretrained_model/
下载地址在 github 中可以找到,觉得下载速度慢或者无法爬梯子的,我也上传到 CSDN

训练

python experiments/rfcn/rfcn_end2end_train_test.py --cfg experiments/rfcn/cfgs/resnet_v1_101_voc0712_rfcn_end2end_ohem.yaml

总结

如果你有任何问题,欢迎留言询问。如果你觉得对你有帮助,欢迎点赞。
谢谢阅读。

训练自己的数据集,你可以按照以下步骤进行操作: 1. 首先,你可以使用提供的数据集进行训练。这个数据集包含了39张图片,你可以先使用这个数据集进行训练,确保没有问题之后再制作自己的数据集。你可以从生活中收集数据,不一定非要从网上下载。\[1\] 2. 其次,你需要了解fcn(全卷积网络)的算法。你可以在mxnet框架下使用自己的数据来进行模型的训练和测试。确保你已经安装好了相关的Mxnet环境,并找到了`example/fcn-xs`文件夹下的相关文件。你还需要运行`image_segmentation.py`来确保你的环境设置正确。\[2\] 3. 接下来,你可以开始训练自己的数据集。你可以在我的GitHub地址中找到相关的代码,如果你觉得不错的话,请给个star哈。首先,你需要下载VGG网络的权重参数,并将其放在`./Model_zoo/imagenet-vgg-verydeep-19.mat`路径下。然后,将你自己的数据集放入`./Data_zoo/MIT_SceneParsing/ADEChallengeData2016`文件夹中。在训练时,你需要将`FCN.py`中的全局变量`mode`改为"train",然后运行该文件。在测试时,你需要修改测试函数中的图片地址,并将`mode`改为"test",然后运行即可。\[3\] 希望这些步骤对你有帮助!如果你有任何其他问题,请随时提问。 #### 引用[.reference_title] - *1* [FCN中制作自己的数据集并进行训练](https://blog.csdn.net/Keep_Trying_Go/article/details/126075642)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Mxnet(4)-fcn训练自己的数据](https://blog.csdn.net/yiweibian/article/details/70230737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【精!!!!】用FCN训练自己数据集(Tensorflow)](https://blog.csdn.net/qq_40994943/article/details/85041493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值