首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么默认的FCN infer.py脚本只输出一个1通道Mat,如何获得一个RGB输出?

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

Stack Overflow用户
提问于 2016-09-14 04:01:49
回答 2查看 320关注 0票数 2

我从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):

代码语言:javascript
运行
复制
out = net.blobs['score'].data[0].argmax(axis=0)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-15 08:46:38

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

有关实现此转换的类,请参见voc_helper.py

票数 0
EN

Stack Overflow用户

发布于 2016-09-14 12:24:23

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

除非您训练网络从一开始就输出RGB图像(这不是分割),否则不可能获得RGB图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39482306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档