全卷积 FCN 数据标签制作

原文:http://www.echojb.com/image/2017/06/06/417204.html

一 全卷积神经网络

深度学习图像分割(FCN)训练自己的模型大致可以以下三步:

1.为自己的数据制作label;

2.将自己的数据分为train,val和test集;

3.仿照voc_lyaers.py编写自己的输入数据层。

其中主要是如何制作自己的数据label困扰着大家。

二 图像标签制作

第一步:使用github开源软件进行标注

地址:https://github.com/wkentaro/labelme

第二步:为标注出来的label.png进行着色

首先需要对照VOC分割的颜色进行着色,一定要保证颜色的准确性。Matlab代码:

function cmap = labelcolormap(N) if nargin==0     N=256 end cmap = zeros(N,3); for i=1:N     id = i-1; r=0;g=0;b=0;     for j=0:7         r = bitor(r, bitshift(bitget(id,1),7 - j));         g = bitor(g, bitshift(bitget(id,2),7 - j));         b = bitor(b, bitshift(bitget(id,3),7 - j));         id = bitshift(id,-3);     end     cmap(i,1)=r; cmap(i,2)=g; cmap(i,3)=b; end cmap = cmap / 255;

对应的颜色类别:

类别名称 R G B  background 0 0 0 背景  aeroplane 128 0 0 飞机  bicycle 0 128 0  bird 128 128 0  boat 0 0 128  bottle 128 0 128 瓶子  bus 0 128 128 大巴  car 128 128 128  cat 64 0 0 猫  chair 192 0 0  cow 64 128 0  diningtable 192 128 0 餐桌  dog 64 0 128  horse 192 0 128  motorbike 64 128 128  person 192 128 128  pottedplant 0 64 0 盆栽  sheep 128 64 0  sofa 0 192 0  train 128 192 0  tvmonitor 0 64 128 显示器

然后使用python 的skimage库进行颜色填充,具体函数是skimage.color.label2rgb(),这部分代码以及颜色调整我已经完成了,由于代码太长就不贴出来了,有需要的可以私信我。

第三步:最关键的一步

需要注意的是,label文件要是gray格式,不然会出错:scores层输出与label的数据尺寸不一致,通道问题导致的,看下面的输出是否与VOC输出一致。

In [23]: img = PIL.Image.open('F:/DL/000001_json/test/dstfcn.png') In [24]: np.unique(img) Out[24]: array([0, 1, 2], dtype=uint8)

其中涉及到如何把24位png图转换为8位png图,直接上代码:

dirs=dir('F:/xxx/*.png'); for n=1:numel(dirs)      strname=strcat('F:/xxx/',dirs(n).name);      img=imread(strname);      [x,map]=rgb2ind(img,256);      newname=strcat('F:/xxx/',dirs(n).name);      imwrite(x,map,newname,'png'); end

三 FCN模型训练

待续…

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值