我正在开发一个Android应用程序,我已经在使用OpenCV,我得到了一个模型,这是在onnx从YOLOv 8转换后.下面是它的输出元数据。
- 名称-输出0
- 类型-浮动32 [1,5,8400]
到目前为止,我成功地运行了模型,但最后,我得到的输出,我不能理解。
这是输出中的print语句
第一个月
class Detector(private val context: Context) {
private var net: Net? = null
fun detect(frame: Bitmap) {
// preprocess image
val mat = Mat()
Utils.bitmapToMat(resizedBitmap, mat)
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGBA2RGB)
val inputBlob = Dnn.blobFromImage(mat, 1.0/255.0, Size(640.0, 640.0), Scalar(0.0), true, false)
net?.setInput(inputBlob)
val outputBlob = net?.forward() ?: return
println(outputBlob)
}
fun setupDetector() {
val modelFile = File(context.cacheDir, MODEL_NAME)
if (!modelFile.exists()) {
try {
val inputStream = context.assets.open(MODEL_NAME)
val size = inputStream.available()
val buffer = ByteArray(size)
inputStream.read(buffer)
inputStream.close()
val outputStream = FileOutputStream(modelFile)
outputStream.write(buffer)
outputStream.close()
net = Dnn.readNetFromONNX(modelFile.absolutePath)
} catch (e: Exception) {
throw RuntimeException(e)
}
} else {
net = Dnn.readNetFromONNX(modelFile.absolutePath)
}
}
companion object {
private const val MODEL_NAME = "model.onnx"
private const val TENSOR_WIDTH = 640
private const val TENSOR_HEIGHT = 640
}
}
字符串
获取边界框、置信度得分和类标签的一般方法是什么?如果你有任何解决方案的onnx模型与OpenCV然后你可以提供以及。此外,这个问题并不是针对Android的。
1条答案
按热度按时间ukqbszuj1#
根据我从评论中得到的建议,我深入研究了YOLOv8的文档,这是我提出的解决方案。
个字符