我必须使用ML套件中的tflite自定义模型来检测带有边界框的对象。下面的代码在FirebaseVisionObject中标识带有边界框的对象,但是如何使用tflite自定义模型标识对象的边界框。
class ObjectDetectorProcessor(options: FirebaseVisionObjectDetectorOptions) :
VisionProcessorBase<List<FirebaseVisionObject>>() {
private val detector: FirebaseVisionObjectDetector
init {
detector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options)
}
override fun stop() {
super.stop()
try {
detector.close()
} catch (e: IOException) {
Log.e(TAG, "Exception thrown while trying to close object detector: $e")
}
}
override fun detectInImage(image: FirebaseVisionImage): Task<List<FirebaseVisionObject>> {
return detector.processImage(image)
}
override fun onSuccess(
originalCameraImage: Bitmap?,
results: List<FirebaseVisionObject>,
frameMetadata: FrameMetadata,
graphicOverlay: GraphicOverlay
) {
graphicOverlay.clear()
if (originalCameraImage != null) {
val imageGraphic = CameraImageGraphic(graphicOverlay, originalCameraImage)
graphicOverlay.add(imageGraphic)
}
for (visionObject in results) {
val objectGraphic = ObjectGraphic(graphicOverlay, visionObject)
graphicOverlay.add(objectGraphic)
}
graphicOverlay.postInvalidate()
}
override fun onFailure(e: Exception) {
Log.e(TAG, "Object detection failed $e")
}
companion object {
private const val TAG = "ObjectDetectorProcessor"
}
}