我从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)
答案 0 :(得分:0)
训练FCN进行分割。因此,在最后一层中,在21个输出的每个像素处,它选择具有最大值的那个像素,并使用该索引来标记像素。因此我们得到1通道分段输出。
除非您从开始训练网络到输出RGB图像(不是分割),否则无法获取RGB图像。
答案 1 :(得分:0)
你得到的输出确实是每个像素一个数字(2D而不是3D)。你得到的数字是班级编号(0 =“背景”,1 =“飞机”等)。要将索引输出图像转换为RGB,您需要将每个类标签映射(手动)为一种颜色。你应该有索引0..20的地图 - > (R,G,B)。
有关实现此转化的类,请参阅voc_helper.py
。