Faster R-CNN(Tensorflow版) 训练自己的数据集需要修改的地方。皮肤病相关的数据集

原文出处:https://www.jianshu.com/p/c0c239a67f8e

我使用的代码链接在这里 https://github.com/smallcorgi/Faster-RCNN_TF
我处理自己数据的标记工具在这里 https://github.com/tzutalin/labelImg

为了最小程度的修改源代码,我把自己的数据处理成和 VOC2007 文件格式一模一样的结构。这样,只需要修改 classes 里的类别就可以了,路径的问题完全不用管。

修改的文件路径

/home/deep/jcx/Faster-RCNN_TF/lib/datasets/pascal_voc.py
修改为自己数据的类

pascal_voc.py

/home/deep/jcx/Faster-RCNN_TF/lib/networks/VGGnet_train.py
修改类的个数n_classes = 3(其中3是类别数目+1)

VGGnet_train.py

/home/deep/jcx/Faster-RCNN_TF/lib/networks/VGGnet_test.py
修改类的个数

VGGnet_test.py

以上就是我修改的所有地方,简单吧 :D

训练我们的数据

训练前要把官方的数据替换掉,如果你拿原始VOC数据训练过,还需要把load的数据和模型删掉。

需要删除这两个目录下的文件:

/home/deep/jcx/Faster-RCNN_TF/data/cache
/home/deep/jcx/Faster-RCNN_TF/output/faster_rcnn_end2end

开始训练

首先要到根目录 Faster-RCNN_TF
然后到lib目录下执行:

export PATH=$PATH:/usr/local/cuda-8.0/bin/
make
退回到Faster-RCNN_TF执行:
./experiments/scripts/faster_rcnn_end2end.sh gpu 0 VGG16 pascal_voc

demo.py

★注意:训练到最后会报错,提示 --weights: expected one argument, 这时候需要添加我们训练好的模型路径。在训练阶段。

开始测试

执行test_net.py 并添加了--weights 的参数。
执行前查看 /home/deep/jcx/Faster-RCNN_TF/data/VOCdevkit2007/annotations_cache/annots.pkl 的缓存文件是不是清空的。

python ./tools/test_net.py --device gpu --device_id 0 --weights /home/deep/jcx/Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt --imdb voc_2007_test --cfg experiments/cfgs/faster_rcnn_end2end.yml --network VGGnet_test

在这里我用的是:

./experiments/scripts/faster_rcnn_end2end.sh gpu 0 VGG16 pascal_voc 

使用 demo.py 检测从网上找到的相关皮肤病图片

直接用模型对相关图片进行目标检测
首先要把 demo.py 文件里的 CLASSES 要与之前修改的类别保持一致
/home/deep/jcx/Faster-RCNN_TF/tools
在文件根目录下面执行此命令,开始生成结果:

python ./tools/demo.py --model /home/deep/jcx/Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt

我的demo的方法,在根目录下执行:

 python ./tools/demo.py --model model/VGGnet_fast_rcnn_iter_100000.ckpt

保存标记好的图片

demo.py 里添加我们要保存图片的路径

demo.py.png

结果展示


链接:https://www.jianshu.com/p/c0c239a67f8e

训练出现的问题:

1.报错:

test_net.py: error: argument --weights: expected one argument
这是因为tensorflow问题并没有在/output/faster_rcnn_end2end/voc_2007_trainval 中生成VGGnet_fast_rcnn_iter_70000.ckpt文件
解决办法:
修改: lib/fast_rcnn/train.py :
from tensorflow.core.protobuf import saver_pb2

self.saver = tf.train.Saver(max_to_keep=100,write_version=saver_pb2.SaverDef.V1)

第260行添加

2.报错:

grep: experiments/logs/faster_rcnn_end2end_VGG16_.txt.2018-01-04_13-10-24: No such file or directory

解决办法:
1. 在./experiment/下手动添加logs文件夹


  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,要在Windows上使用PyTorch训练自己的数据集,需要安装适用于Windows的PyTorch、CUDA和CUDNN等软件。可以通过PyTorch官方网站下载适用于Windows的PyTorch本,并根据官方文档的指引进行安装。 接下来,准备自己的数据集。数据集应该包括图像和相应的标注信息,例如边界框和类别标签。可以使用标记工具(如LabelImg)来手动标注图像,并生成XML或CSV文件以存储标注信息。确保标注信息的格式与训练模型所需的格式一致。 然后,需要编写自定义的数据集加载器。可以创建一个继承自PyTorch的Dataset类的子类,在该子类中实现__getitem__和__len__等方法。在__getitem__方法中,加载图像和相应的标注信息,并对它们进行预处理(如缩放、裁剪等)。同时,可以使用PyTorch提供的transforms模块进行数据增强(如随机翻转、旋转等)。 在训练之前,还需要定义模型结构。可以使用现有的预训练模型,如ResNet,将其与分类器部分替换为适用于目标检测的模型。在Faster R-CNN中,常用的基础模型是ResNet和VGG等。 接下来,定义损失函数和优化器。在Faster R-CNN中,常用的损失函数是RPN(Region Proposal Network)的分类和回归损失,以及分类器和回归器的损失。可以使用PyTorch提供的损失函数模块(如CrossEntropyLoss和SmoothL1Loss)来定义这些损失函数,并选择合适的优化器(如SGD或Adam)进行参数更新。 最后,进行训练。使用加载器加载训练数据集,并在每个iteration中将数据传递给模型进行前向传播和反向传播,并进行参数更新。可以根据需要设置训练的epoch数、学习率和批量大小等参数。 需要注意的是,在Windows上训练自己的数据集可能会遇到一些环境配置和依赖问题。在遇到问题时,可以查阅相关文档和社区论坛,寻找解决方案。此外,还可以考虑使用Colab等在线平台来训练模型,这些平台已经预先配置好了环境,并且提供了免费的GPU加速。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值