gpt4 book ai didi

ios - 如何使用分割模型输出张量?

转载 作者:行者123 更新时间:2023-12-01 19:39:17 25 4
gpt4 key购买 nike

我正在尝试在 iOS 上运行分段模型,我对如何正确使用输出张量有几个问题。

这是我正在使用的模型的链接:
https://www.tensorflow.org/lite/models/segmentation/overview

当我运行这个模型时,我得到了具有维度的输出张量:
1 x 257 x 257 x 21。
为什么我得到 21 作为最后一个维度?看起来我们正在获得每个像素的类分数。我们是否需要在这里找到 argmax 才能得到正确的类值?

但为什么只有 21 节课?我在想它应该包含更多。在哪里我可以找到哪个值对应于某个类的信息。
在 ImageClassification 示例中,我们有一个包含 1001 个类的 label.txt。

基于 ImageClassification 示例,我尝试解析张量:首先将其转换为大小为 1 387 029 (21 x 257 x 257) 的浮点数组,然后使用以下代码逐像素创建图像:

    // size = 257
// depth = 21
// array - float array of size 1 387 029
for i in 0..<size {
for j in 0..<size {
var scores: [Float] = []
for k in 0..<depth {
let index = i * size * depth + j * depth + k
let score = array[index]
scores.append(score)
}
if let maxScore = scores.max(),
let maxClass = scores.firstIndex(of: maxScore) {
let index = i * size + j

if maxClass == 0 {
pixelBuffer[index] = .blue
} else if maxClass == 12 {
pixelBuffer[index] = .black
} else {
pixelBuffer[index] = .green
}
}
}
}

这是我得到的结果:

enter image description here

你可以看到质量不是很好。我错过了什么?

CoreML( https://developer.apple.com/machine-learning/models/) 的分割模型在同一个例子中效果更好:

enter image description here

最佳答案

您的模型似乎是在 PASCAL VOC 上训练的具有 21 个用于分割的类的数据。
您可以找到类(class)列表 here :

background
aeroplane
bicycle
bird
boat
bottle
bus
car
cat
chair
cow
diningtable
dog
horse
motorbike
person
pottedplant
sheep
sofa
train
tvmonitor

关于ios - 如何使用分割模型输出张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57152525/

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