用FCN训练自己的数据集+caffe

FCN模型下载

0.      我的caffe是早就安装好的。所以不多说,没安装的自己百度

1.      我用的是caffe在github上FCN的代码和模型,链接是:

https://github.com/shelhamer/fcn.berkeleyvision.org

我在服务器上用下面的语句下载这个FCN的工程包“fcn.berkeleyvision.org-master”。由于我只打算用voc-8s的网络,所以后文只针对此网络,别的相似。

git clone https://github.com/shelhamer/fcn.berkeleyvision.org.git

模型下载的方法是,点进这个文件夹,然后用Notepad++或者txt把打开,里面就是训练好的基于VOC数据集的FCN8s的模型的下载链接,下载好后就是:这个模型,我们之后用这个模型初始化网络。最好将模型和其他要调用的文件放在同一个目录下,我的是:

 

自己的数据集

1.      把所有图片的名字改成从0~N-1,N是你数据集图片的个数。

我的训练集是N=440张图,那么将原图(必须是3通道的RGB图)和label图(必须得是灰度)的名字都变成0.png~439.png。

我的验证集是N=94张图,那么原图和label图都是0.png~93.png

(训练集和验证集都是训练时用的,与测试集不同)

注意:如果你想直接用VOC数据集里自带的测试脚本来分割你的图片,请把你的图片类别的RGB值转成VOC数据集21个类别里有的颜色。我的数据集的类别是我自己设置的RGB值。所以我自己写了测试脚本来还原分割图的色彩。

2.      把数据放在一个你自己制定的目录下,并按照原图和label图分好。

我的训练时的原图在data/train、训练时的label图在data/grey;

我的验证集的原图在data/val、训练时的label图在data/val_grey。

并且生成好训练集和验证集的标签list。如图,训练集的是“train.txt”,验证集的是“segvalid.txt”。

注意:list里只是数字,没有“.png”,因为FCN源码里是需要利用这些序号的。

训练

1.      先建立一个文件夹用于存放训练中间的caffemodel。

2.      那么,solver.prototxt基本不用改,本次训练是4000次迭代存一个caffemodel,我把最大迭代次数改成了10万次。

train_net:"train.prototxt"
test_net:"val.prototxt"
test_iter:736
# maketest net, but don't invoke it from the solver itself
test_interval:999999999
display:20
average_loss:20
lr_policy:"fixed"
# lr forunnormalized softmax
base_lr:1e-14
# highmomentum
momentum:0.99
# nogradient accumulation
iter_size:1
max_iter:100000 #最大迭代次数
weight_decay:0.0005
snapshot:4000
snapshot_prefix:"snapshot/"
test_initialization: false

 

3.      需要改的有train.prototxt和val.prototxt。

 

要改的地方有两种,先说train.prototxt

(1)      data层,我使用的是

我将voc_dir改成也即我图片在的文件夹的上一级位置。然后按需要改变一下mean。注意‘spilt’后面是‘train’,也是我train.txt的名字

(2)      因为我的数据集的num_output=8,所以我把后面几层的都改成了8,但是为了使用这个caffemodel,所以需要把改成8的layer的name都改一下。记得name为“score”的不要改。

至于val.prototxt的改动也是两种,第二种和上面一样,说一下data层

我改成了

注意‘spilt’后面是‘segvalid’,也是我验证集segvalid.txt的名字

4.      然后可以训练了。

不过得改一下solve.py 中验证集list的位置:

然后执行

Python2 solve.py

就可以啦。

开始训练了:但是第一个loss=545113,吓了一跳

但是验证的时候,准确率啥的还可以:

最后训练10万次后,我的结果如下:

 

 

测试

本文参考https://www.cnblogs.com/k7k8k91/p/7989630.html,可以参考里面的单张图的分割,

主要用的是deploy.prototxt和infer.py。记得把deploy.prototxt里后面层的名字改成和train.prototxt一致的。然后把

里的caffemodel换成自己的。

 

p.s.  本人大四,以上都是自己摸索做的,如有不对的地方,还请前辈们指点。

为了训练R-FCN模型使用自己的数据集,你可以按照以下步骤进行操作: 1. 首先,将你的数据集准备好,包括图像和相应的标注。确保你的标注与R-FCN的要求相匹配,通常是使用PASCAL VOC格式或COCO格式的标注。 2. 接下来,你需要克隆py-R-FCN工程,你可以通过运行以下命令来完成此操作: ``` git clone https://github.com/Orpine/py-R-FCN.git ``` 3. 在克隆的py-R-FCN目录中,你需要进行一些配置。首先,你需要安装所需的依赖项,可以通过运行以下命令来完成: ``` pip install -r requirements.txt ``` 4. 然后,你需要将训练和验证图像及其相应的标注放置在正确的目录下。按照py-R-FCN的要求,将训练图像和标注放置在`data/VOCdevkit2007/VOC2007`目录下,将验证图像和标注放置在`data/VOCdevkit2007/VOC2007`目录下。 5. 接下来,你需要在`experiments/cfgs`目录中创建一个配置文件。你可以根据你的需求修改现有的配置文件,或者创建一个新的配置文件。确保配置文件中包含正确的目录路径和类别数等信息。 6. 现在,你可以开始训练R-FCN模型了。通过在终端中运行以下命令来进行训练: ``` python train.py --cfg experiments/cfgs/your_config_file.yaml ``` 请将`your_config_file.yaml`替换为你创建的配置文件的名称。 7. 训练过程中可能会遇到一些问题,例如`loss_bbox=0`的情况。你可以参考中提供的解决方法,主要是关于numpy的问题。此外,中也提到了一些常见问题和解决方法,建议你先将迭代次数设置为100或更小来调试。 希望这些步骤对你有帮助。祝你成功训练R-FCN模型!
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值