为什么默认的FCN infer.py脚本只输出1通道Mat,如何获得RGB输出?

时间:2016-09-14 04:01:49

标签: neural-network rgb deep-learning caffe image-segmentation

我从github下载并运行FCN的默认infer.py脚本。

"score"图层的输出只是1通道Mat并且无法转换为RGB img,我知道得分图层的原始输出blob是[1, 21, W, H],但我怎么能得到3 - 通道RGB输出而不是1通道img?
我尝试将输入数据层从[1,3,W,H]更改为[3,3,W,H]并使用PIL.Image.convert('RGB'),但是,两者都失败了。

我是图像分割的初学者,任何建议都很有帮助,非常感谢〜

infer.py中的源代码,out.shape = [W, H](即1通道不是3):

out = net.blobs['score'].data[0].argmax(axis=0)

2 个答案:

答案 0 :(得分:0)

训练FCN进行分割。因此,在最后一层中,在21个输出的每个像素处,它选择具有最大值的那个像素,并使用该索引来标记像素。因此我们得到1通道分段输出。

除非您从开始训练网络到输出RGB图像(不是分割),否则无法获取RGB图像。

答案 1 :(得分:0)

你得到的输出确实是每个像素一个数字(2D而不是3D)。你得到的数字是班级编号(0 =“背景”,1 =“飞机”等)。要将索引输出图像转换为RGB,您需要将每个类标签映射(手动)为一种颜色。你应该有索引0..20的地图 - > (R,G,B)。

有关实现此转化的类,请参阅voc_helper.py