首页 > 编程学习 > 全卷积 FCN 数据标签制作

全卷积 FCN 数据标签制作

发布时间:2023/1/25 12:40:53

原文: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模型训练

待续…


本文链接:https://www.ngui.cc/zz/1918309.html
Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000