我从infer.py下载并运行FCN的默认infer.py脚本。
"score"层的输出仅为1通道Mat,不能转换为RGB,我知道分数层的原始输出是[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)发布于 2016-09-15 08:46:38
您得到的输出确实是每像素一个数字(2D而不是3D)。得到的数字是类号(0 =“背景”,1=“飞机”等)。为了将索引输出图像转换为RGB,您需要(手动)将每个类标签映射到一个颜色。你应该有一个索引0.20 -> (R,G,B)的地图。
有关实现此转换的类,请参见voc_helper.py。
发布于 2016-09-14 12:24:23
FCN被训练来执行分段。所以在最后一层,在21个输出的每个像素处,它选择一个具有最大值的像素,并使用该索引来标记该像素。因此我们得到了一个1通道的分割输出。
除非您训练网络从一开始就输出RGB图像(这不是分割),否则不可能获得RGB图像。
https://stackoverflow.com/questions/39482306
复制相似问题