gpt4 book ai didi

python - 对 PIL 图像的 Caffe 分割的输出数组进行整形

转载 作者:行者123 更新时间:2023-11-30 09:07:09 25 4
gpt4 key购买 nike

希望每个人的一天(或夜晚)一切顺利。

我一直在使用我遇到的 Caffe 模型,并且在使用输出数组时遇到了一些问题。我以前没有使用过分割,因此对于对该主题更了解的人来说,这可能是一个简单的修复方法。

模型基于这篇论文Deep Joint Task Learning for Generic Object Extraction 。我已将模型转换为 CoreML 格式。

我遇到的问题是这样的:

当尝试从输出创建 PIL 图像时,我得到了看似随机噪声的东西,我认为这只是 numpy 数组形状错误或像素顺序错误的简单问题。输出数组的形状为 (2500, 1),它应该是 50x50 黑白图像

代码如下所示:

image = Image.open('./1.jpg')
image = image.resize((55, 55), Image.ANTIALIAS)

predictions = model.predict({'data_55': image} , useCPUOnly = False)
predictions = predictions['fc8_seg']

reshape_array = numpy.reshape(predictions, (50,50))
output_image = Image.fromarray(reshape_array, '1')

我已经在 numpy reshape 上尝试了 F 和 C 指令,除了看起来像这样的噪音之外似乎无法得到任何东西 。我正在使用原始存储库中提供的测试图像之一,因此这应该不是问题。附带说明一下,数组中的值如下所示:

[[  4.55798066e-08   5.40980977e-07   2.13476710e-06 ...,   6.66990445e-08
6.81615759e-08 3.21255470e-07]
[ 2.69358861e-05 1.94866928e-07 4.71876803e-07 ..., 1.25911642e-10
3.14572794e-08 1.61371077e-08]

任何想法或答案都将非常感激和有帮助。提前致谢!

最佳答案

看来我能够弄清楚这一点。这不是数组顺序的问题,而是值和数据类型的问题。这是我为了从输出中获取正确图像而编写的代码。

predictions = model.predict({'data_55': image} , useCPUOnly = True) # Run the prediction

map_final = predictions['fc8_seg'][0,0,:,:] # fc8_seg is the output of the neural network
map_final = map_final.reshape((50,50)) # Reshape the output from shape (2500) to (50, 50)
map_final = numpy.flip(map_final, 1) # Flip axis 1 to unmirror the image

# Scale the values in the array to a range between 0 and 255
map_final -= map_final.min()
map_final /= map_final.max()
map_final = numpy.ceil(map_final*255)

map_final_unint8 = map_final.astype(numpy.uint8) # Convert the data type to an uint8
pil_image = Image.fromarray(map_final_unint8, mode = 'L') # Create the PIL image

输出:

And the output

一切看起来都理所应当!

关于python - 对 PIL 图像的 Caffe 分割的输出数组进行整形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com