Я пытаюсь разработать приложение для Android, которое может обнаружить текст в манге, чтобы позже позволить пользователю нажать на текст и получить определение для каждого слова.
Я пытаюсь разработать приложение для Android, которое может обнаружить текст в манге, чтобы позже позволить пользователю нажать на текст и получить определение для каждого слова.[code]object ONNXModelHelper { private fun loadModelFromAssets(context: Context, filename: String): File { val file = File(context.filesDir, filename) if (!file.exists()) { context.assets.open(filename).use { inputStream -> file.outputStream().use { outputStream -> inputStream.copyTo(outputStream) } } } return file }
private fun loadONNXModel(context: Context): OrtSession { val env = OrtEnvironment.getEnvironment() val modelFile = loadModelFromAssets(context, "model2.onnx") val options = OrtSession.SessionOptions() return env.createSession(modelFile.absolutePath, options) }
@Synchronized fun init(context: Context) { if (session == null) { session = loadONNXModel(context) } }
private var session: OrtSession? = null
fun process(bitmap: Bitmap) { val session = session ?: return
// Convert the image to a tensor val inputTensor = convertToTensor(bitmap)
// Create the decoder_input_ids tensor val dummyDecoderInputIds = createDecoderInputIds()
val inputs = mutableMapOf() inputs["pixel_values"] = inputTensor inputs["decoder_input_ids"] = dummyDecoderInputIds
for (pixel in pixels) { val r = (pixel shr 16 and 0xFF) / 255f val g = (pixel shr 8 and 0xFF) / 255f val b = (pixel and 0xFF) / 255f
buffer.put(r) buffer.put(g) buffer.put(b) }
buffer.rewind()
return buffer to longArrayOf(1, channels.toLong(), height.toLong().toLong(), width.toLong()) }
private fun convertToTensor(bitmap: Bitmap): OnnxTensor { val floatArray = preprocessImage(bitmap)
// Create a tensor with shape [1, 3, 384, 384] return OnnxTensor.createTensor( OrtEnvironment.getEnvironment(), floatArray.first, floatArray.second ) } } [/code] Если кто -то уже сделал что -то подобное или знает, как это сделать, не могли бы вы предоставить мне некоторую помощь?