关于FCN的数据集着色说明

前方我们讲解了《 FCN-数据篇》。里面包含了如何制作类似pascal voc的label。很大篇幅在谈如何着色,如何转化为索引图像。 由于一些内容参考网上的资料,所以对里面的一些操作含义也有些糊涂。 其实网上的东西也不都对,很多人云亦云。所以需要我们仔细甄别。 其中我就发现了一个错误。我们来从头谈起。

  1. pascal voc数据集
    当我们从网上下载pascal voc2012的数据集,会发现SegmentationClass文件里的标注都是彩色图像。

    这里写图片描述

    但是查看其属性,发现其位深为8.

    这里写图片描述

一般情况下,彩色图像都是rgb格式,所以应该是24位,但这里是8位,其实这表明图像是索引格式。
里面8位存放的是索引值,区间范围[0,255]。图像应该还包含一个map,对应着每个索引的颜色。
我们用matlab 查看索引:

>> im=imread('H:\data\VOCtrainval_11-May-2012\VOCdevkit\VOC2012\SegmentationClass\2007_000346.png');
>> info=imfinfo('H:\data\VOCtrainval_11-May-2012\VOCdevkit\VOC2012\SegmentationClass\2007_000346.png');
>> info.Colormapans =0         0         00.5020         0         00    0.5020         00.5020    0.5020         00         0    0.50200.5020         0    0.50200    0.5020    0.50200.5020    0.5020    0.50200.2510         0         00.7529         0         00.2510    0.5020         00.7529    0.5020         00.2510         0    0.50200.7529         0    0.50200.2510    0.5020    0.50200.7529    0.5020    0.50200    0.2510         00.5020    0.2510         00    0.7529         00.5020    0.7529         00    0.2510    0.50200.5020    0.2510    0.50200    0.7529    0.50200.5020    0.7529    0.50200.2510    0.2510         00.7529    0.2510         00.2510    0.7529         00.7529    0.7529         00.2510    0.2510    0.50200.7529    0.2510    0.50200.2510    0.7529    0.50200.7529    0.7529    0.50200         0    0.25100.5020         0    0.25100    0.5020    0.25100.5020    0.5020    0.25100         0    0.75290.5020         0    0.75290    0.5020    0.75290.5020    0.5020    0.75290.2510         0    0.25100.7529         0    0.25100.2510    0.5020    0.25100.7529    0.5020    0.25100.2510         0    0.75290.7529         0    0.75290.2510    0.5020    0.75290.7529    0.5020    0.75290    0.2510    0.25100.5020    0.2510    0.25100    0.7529    0.25100.5020    0.7529    0.25100    0.2510    0.75290.5020    0.2510    0.75290    0.7529    0.75290.5020    0.7529    0.75290.2510    0.2510    0.25100.7529    0.2510    0.25100.2510    0.7529    0.25100.7529    0.7529    0.25100.2510    0.2510    0.75290.7529    0.2510    0.75290.2510    0.7529    0.75290.7529    0.7529    0.75290.1255         0         00.6275         0         00.1255    0.5020         00.6275    0.5020         00.1255         0    0.50200.6275         0    0.50200.1255    0.5020    0.50200.6275    0.5020    0.50200.3765         0         00.8784         0         00.3765    0.5020         00.8784    0.5020         00.3765         0    0.50200.8784         0    0.50200.3765    0.5020    0.50200.8784    0.5020    0.50200.1255    0.2510         00.6275    0.2510         00.1255    0.7529         00.6275    0.7529         00.1255    0.2510    0.50200.6275    0.2510    0.50200.1255    0.7529    0.50200.6275    0.7529    0.50200.3765    0.2510         00.8784    0.2510         00.3765    0.7529         00.8784    0.7529         00.3765    0.2510    0.50200.8784    0.2510    0.50200.3765    0.7529    0.50200.8784    0.7529    0.50200.1255         0    0.25100.6275         0    0.25100.1255    0.5020    0.25100.6275    0.5020    0.25100.1255         0    0.75290.6275         0    0.75290.1255    0.5020    0.75290.6275    0.5020    0.75290.3765         0    0.25100.8784         0    0.25100.3765    0.5020    0.25100.8784    0.5020    0.25100.3765         0    0.75290.8784         0    0.75290.3765    0.5020    0.75290.8784    0.5020    0.75290.1255    0.2510    0.25100.6275    0.2510    0.25100.1255    0.7529    0.25100.6275    0.7529    0.25100.1255    0.2510    0.75290.6275    0.2510    0.75290.1255    0.7529    0.75290.6275    0.7529    0.75290.3765    0.2510    0.25100.8784    0.2510    0.25100.3765    0.7529    0.25100.8784    0.7529    0.25100.3765    0.2510    0.75290.8784    0.2510    0.75290.3765    0.7529    0.75290.8784    0.7529    0.75290    0.1255         00.5020    0.1255         00    0.6275         00.5020    0.6275         00    0.1255    0.50200.5020    0.1255    0.50200    0.6275    0.50200.5020    0.6275    0.50200.2510    0.1255         00.7529    0.1255         00.2510    0.6275         00.7529    0.6275         00.2510    0.1255    0.50200.7529    0.1255    0.50200.2510    0.6275    0.50200.7529    0.6275    0.50200    0.3765         00.5020    0.3765         00    0.8784         00.5020    0.8784         00    0.3765    0.50200.5020    0.3765    0.50200    0.8784    0.50200.5020    0.8784    0.50200.2510    0.3765         00.7529    0.3765         00.2510    0.8784         00.7529    0.8784         00.2510    0.3765    0.50200.7529    0.3765    0.50200.2510    0.8784    0.50200.7529    0.8784    0.50200    0.1255    0.25100.5020    0.1255    0.25100    0.6275    0.25100.5020    0.6275    0.25100    0.1255    0.75290.5020    0.1255    0.75290    0.6275    0.75290.5020    0.6275    0.75290.2510    0.1255    0.25100.7529    0.1255    0.25100.2510    0.6275    0.25100.7529    0.6275    0.25100.2510    0.1255    0.75290.7529    0.1255    0.75290.2510    0.6275    0.75290.7529    0.6275    0.75290    0.3765    0.25100.5020    0.3765    0.25100    0.8784    0.25100.5020    0.8784    0.25100    0.3765    0.75290.5020    0.3765    0.75290    0.8784    0.75290.5020    0.8784    0.75290.2510    0.3765    0.25100.7529    0.3765    0.25100.2510    0.8784    0.25100.7529    0.8784    0.25100.2510    0.3765    0.75290.7529    0.3765    0.75290.2510    0.8784    0.75290.7529    0.8784    0.75290.1255    0.1255         00.6275    0.1255         00.1255    0.6275         00.6275    0.6275         00.1255    0.1255    0.50200.6275    0.1255    0.50200.1255    0.6275    0.50200.6275    0.6275    0.50200.3765    0.1255         00.8784    0.1255         00.3765    0.6275         00.8784    0.6275         00.3765    0.1255    0.50200.8784    0.1255    0.50200.3765    0.6275    0.50200.8784    0.6275    0.50200.1255    0.3765         00.6275    0.3765         00.1255    0.8784         00.6275    0.8784         00.1255    0.3765    0.50200.6275    0.3765    0.50200.1255    0.8784    0.50200.6275    0.8784    0.50200.3765    0.3765         00.8784    0.3765         00.3765    0.8784         00.8784    0.8784         00.3765    0.3765    0.50200.8784    0.3765    0.50200.3765    0.8784    0.50200.8784    0.8784    0.50200.1255    0.1255    0.25100.6275    0.1255    0.25100.1255    0.6275    0.25100.6275    0.6275    0.25100.1255    0.1255    0.75290.6275    0.1255    0.75290.1255    0.6275    0.75290.6275    0.6275    0.75290.3765    0.1255    0.25100.8784    0.1255    0.25100.3765    0.6275    0.25100.8784    0.6275    0.25100.3765    0.1255    0.75290.8784    0.1255    0.75290.3765    0.6275    0.75290.8784    0.6275    0.75290.1255    0.3765    0.25100.6275    0.3765    0.25100.1255    0.8784    0.25100.6275    0.8784    0.25100.1255    0.3765    0.75290.6275    0.3765    0.75290.1255    0.8784    0.75290.6275    0.8784    0.75290.3765    0.3765    0.25100.8784    0.3765    0.25100.3765    0.8784    0.25100.8784    0.8784    0.25100.3765    0.3765    0.75290.8784    0.3765    0.75290.3765    0.8784    0.75290.8784    0.8784    0.7529

或者

[im,map]=imread('H:\data\VOCtrainval_11-May-2012\VOCdevkit\VOC2012\SegmentationClass\2007_000346.png');

如果进一步地想要显示索引图像或者转为rgb,可以:

[cdata,map] = imread( filename )         %读索引图像文件
if ~isempty( map )     rgb = ind2rgb( cdata, map );         %将索引图像数据转为RGB图像数据
end 
imshow(rgb )
imshow(cdata,map) %这样读也可以

根据上面显示的map,我们发现与《 FCN-数据篇》的pascal voc的colormap完全一致。
另外需要注意:cdata是从0开始,对应着map的第一行。

自定义数据

根据前面《 FCN-数据篇》 的生成
自定义数据的方法,包括:
1. 使用labelme标注图像,生成灰度图像
2. 将灰度标签图像转化为rgb 24位图像,根据pascal voc的colormap,使用函数label2rgb
3. 将24位png图转换为8位png图。生成索引图像

其中第3步很重要,先前网上的资料有误。之前的代码是:

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

这里也生成了一个map,当时我就很疑惑为什么这里还有一个map呢?
于是试验了一下:

>> im=imread('G:\deeplearning\FCN_train-master\xxx.png');
>>  [a,map2]=rgb2ind(im,256);
>> map2map2 =0         0         00.5020         0         00         0    0.50200.5020         0    0.50200    0.5020         00.5020    0.5020         0

显然这里的map与pascal voc的map不一致了,会导致很严重的问题。
因此正确的是:

>> im=imread('G:\deeplearning\FCN_train-master\xxx.png');
>> map=labelcolormap(256);
>> x=rgb2ind(im,map);
>> imshow(x,map)
>> imwrite(x,map,'test.png','png')

其中第二步就是生成pascal voc的colormap,可以在《 FCN-数据篇》 查找。

二分类标签数据的制作

对于二分类问题而言,但我们标注好了图像语义后,我们常常得到的是黑白灰度图像。比如前景部分用255显示,背景用0显示。而且有可能24位,也可能是8位。

这时我们需要做两件事:
1. 将图像转化为24位
2. 生成8位索引图像
代码如下:

root='H:\data\IrsData\iris_ground-truth\MICHE_subset\';
input_dir=strcat(root,'ground truth\');
output_dir=strcat(root,'temp\');
src_type='tiff';
files = dir([input_dir, '*.', src_type]);
n = length(files);for i = 1:n [filename, type] = strtok(files(i).name, '.');im_src = imread([input_dir, files(i).name]);info=imfinfo([input_dir, files(i).name]);if info.BitDepth==8  %转化为24位rgbim_src=cat(3,im_src,im_src,im_src);end[x,map]=rgb2ind(im_src,2);newname=strcat(output_dir,filename,'.png');imwrite(x,map,newname,'png');end

至此生成的图像时索引图像,二分类,前景为白色,背景为黑色,索引值为0,1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Property Animation动画

3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable animation…

Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)

不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图文详解&#x…

tensorboard使用_colab打不开tensorboard的解决办法

2020.4.1更新:colab现在自带tensorboard的魔术方法了,用这个命令就能展示tensorboard%load_ext tensorboard %tensorboard --logdir ./log/train# 加载一次后,如果要重新加载,就需要使用reload方法 %reload_ext tensorboard %tens…

小程序“自定义关键词”功能的常见问答

我们知道小程序可以通过线下扫码、公众号、好友分享、长按小程序码、搜索小程序名称来找到,现在又多了一个新方式——小程序后台新增自定义关键词功能:已发布小程序的开发者,可提交最多10个与小程序业务相关的关键词,帮助你的小程…

语义分割深度学习方法集锦

转载:https://github.com/handong1587/handong1587.github.io/edit/master/_posts/deep_learning/2015-10-09-segmentation.md Papers Deep Joint Task Learning for Generic Object Extraction intro: NIPS 2014homepage: http://vision.sysu.edu.cn/projects/d…

员工培训与开发实训心得体会_公司新员工培训心得体会800字范文

点击蓝字关注我们培训是一次能够快速提升我们的机会,而每个新员工也是通过培训尽快的融入公司的。因此,我们要更加重视培训一些!下面是小编为大家整理的公司新员工培训心得体会,希望对大家有帮助。公司新员工培训心得体会800字为了让我们新进…

Nginx ab压力测试

20-ab压力测试及nginx性能统计模块 优化的启发,打开的文件太多 Nginx 错误日志显示,打开文件数太多 系统层面 more /proc/sys/net/core/somaxconn 单个Nginx 测试index.html 没优化前 [root/home/www]#ab -c 4000 -n 100000 http://test.demo.com/inde…

Code First02---CodeFirst配置实体与数据库映射的两种方式

Code First有两种配置数据库映射的方式,一种是使用数据属性DataAnnotation,另一种是Fluent API.这两种方式分别是什么呢?下面进行一一解释:DataAnnotation的配置方式需要你给定义实体和值对象的类和类中的属性加上与数据库映射相关…

sigmoid函数的数值稳定性

在深度学习中,我们常常选用sigmoid函数作为激活函数。sigmoid函数的具体形式如下: f(x)11e−xf(x)=\frac{1}{1+e^{-x}}曲线表示为: 再画大一点,取x区间更大一些,则为: 显然从图像上看,sigmoid函…

windows远程连接ubuntu 黑屏_Windows跟Windows远程连接传输文件

关注奕奇科技,学习更多小妙招电脑小知识,值得收藏我们一般在使用windows远程连接时需要传输文件该怎么办?我们可以插入U盘导入导出,但这样很是麻烦而且如果身边暂时没有U盘的情况就要通过社交工具传播文件,大的文件也更…

思维导图分析http之前端组成

思维导图分析http前端组成全文总览本文分为三个部分:前端组成,http协议,http服务器应用程序。http的应用按照我自己的理解分为前端应用以及后端应用,所以我分别写了前端组成以及http服务器应用程序两章,中间穿插了一章…

caffe 关于Deconvolution的初始化注意事项

对于fcn,经常要使用到Deconvolution进行上采样。对于caffe使用者,使用Deconvolution上采样,其参数往往直接给定,不需要通过学习获得。 给定参数的方式很有意思,可以通过两种方式实现,但是这两种方式并非完…

多目标进化优化_SDIM 学术讲座|分解多目标优化与帕累托多任务学习

分解多目标优化与帕累托多任务学习2020年11月4日晚,香港城市大学电脑学系讲座教授、博士生导师、IEEE Fellow张青富教授应我院王振坤教授的邀请,在线举办了一场主题为“分解多目标优化与帕累托多任务学习”的学术讲座。此次讲座采用线上和线下两种渠道&a…

安装oracle-java,并覆盖原先的OpenJDK

Centos默认安装openJDK只安装了java,没有安装javac.如果需要安装javac,需要install the openjdk-8-jdk package。参考:http://openjdk.java.net/install/ 为了完整地安装java,我们转而选择使用oracle-java,由于我们没有root权限&a…

反射创建对象_如何应用Java反射技术灵活地创建程序类的对象实例

软件项目实训及课程设计指导——如何应用Java反射技术灵活地创建程序类的对象实例1、如何应用属性配置文件实现对系统中的配置信息进行读写操作Java中的属性配置文件主要可以作为软件应用系统及项目的配置文件,比如许多J2EE的开源框架系统中都提供了属性配置文件作为…

js回到顶部

2019独角兽企业重金招聘Python工程师标准>>> <html xmlns"http://www.w3.org/1999/xhtml"> <head runat"server"> <title></title> <style type"text/css"> #control_pannel …

OSEK简介

What is OSEKA specification for an RTOS•With standard software interfaces (OS API)•Including intertask & interprocessor communication (COM)•Including network management (NM)•Including the language used to statically declare OS elements used in an a…

门道多:一次MaxCompute PS任务的问题排查之旅

关于PS是什么&#xff0c;可以参考一下以下两个介绍&#xff1a;基于参数服务器的大规模在线学习算法和Parameter Server。更多问题可以咨询玄乐。下面主要总结一下这回遇到一个PS任务跑不起来的问题排查过程。不想看过程的直接看最后一点总结就行。一 为什么要分享一个问题排查…

Volley简单学习使用五—— 源代码分析三

一、Volley工作流程图&#xff1a; 二、Network在NetworkDispatcher中须要处理的网络请求。由以下进行处理&#xff1a;NetworkResponse networkResponse mNetwork.performRequest(request);看一下mNetwork的定义&#xff1a;&#xff08;定义在NetworkDispatcher中&#xff0…

html5 - history 历史管理

参考文章&#xff1a; w3c : http://www.w3.org/html/ig/zh/wiki/HTML5/history 张鑫旭 : http://www.zhangxinxu.com/wordpress/2013/06/html5-history-api-pushstate-replacestate-ajax/ zawa : http://zawa.iteye.com/blog/1271031  Demo : Demo 截图&#xff…