@@ -19,15 +19,10 @@ import org.tensorflow.lite.task.vision.detector.ObjectDetector
1919* */
2020
2121class ObjectDetectorHelper (
22- var threshold : Float = 0.5f ,
23- var numThreads : Int = 2 ,
24- var maxResults : Int = 3 ,
25- var currentDelegate : Int = 0 ,
26- var currentModel : Int = 0 ,
2722 val context : Context ,
2823 val objectDetectorListener : DetectorListener ?
2924) {
30- private var objectDetector: ObjectDetector ? = null
25+ private var objectDetector: Yolov5TFLiteDetector ? = null
3126
3227 init {
3328 setupObjectDetector()
@@ -38,37 +33,14 @@ class ObjectDetectorHelper(
3833 }
3934
4035 fun setupObjectDetector () {
41- val optionsBuilder = ObjectDetector .ObjectDetectorOptions .builder().setScoreThreshold(threshold).setMaxResults(maxResults)
42-
43- val baseOptionsBuilder = BaseOptions .builder().setNumThreads(numThreads)
44-
45- when (currentDelegate) {
46- DELEGATE_CPU -> {}
47- DELEGATE_GPU -> {
48- if (CompatibilityList ().isDelegateSupportedOnThisDevice) {
49- baseOptionsBuilder.useGpu()
50- } else {
51- objectDetectorListener?.onError(" GPU is not supported on this device" )
52- }
53- }
54- DELEGATE_NNAPI -> {
55- baseOptionsBuilder.useNnapi()
56- }
57- }
58-
59- optionsBuilder.setBaseOptions(baseOptionsBuilder.build())
60-
61- // Model selection
62-
63- val modelName = when (currentModel) {
64- MODEL_MOBILENETV1 -> " mobilenetv1.tflite"
65- else -> " mobilenetv1.tflite"
66- }
67-
6836 try {
69- objectDetector = ObjectDetector .createFromFileAndOptions(context, modelName, optionsBuilder.build())
37+ val yolov5TFLiteDetector = Yolov5TFLiteDetector ()
38+ yolov5TFLiteDetector.modelFile = " hand-fp16.tflite"
39+ yolov5TFLiteDetector.addGPUDelegate()
40+ yolov5TFLiteDetector.initialModel(context)
41+ objectDetector = yolov5TFLiteDetector
42+
7043 } catch (e: IllegalStateException ) {
71- objectDetectorListener?.onError(" Object detector failed to initialize. See error logs for details" )
7244 Log .e(" NLI-Classification" , " TFLite failed to load model with error: " + e.message)
7345 }
7446 }
@@ -80,12 +52,11 @@ class ObjectDetectorHelper(
8052
8153 var inferenceTime = SystemClock .uptimeMillis()
8254
83- // Image Preprocessing
8455 val imageProcessor = ImageProcessor .Builder ().add(Rot90Op (- imageRotation / 90 )).build()
85-
8656 val tensorImage = imageProcessor.process(TensorImage .fromBitmap(image))
8757
88- val results = objectDetector?.detect(tensorImage)
58+ val results = objectDetector?.detect(tensorImage.bitmap)
59+
8960 inferenceTime = SystemClock .uptimeMillis() - inferenceTime
9061 objectDetectorListener?.onResults(results, inferenceTime, tensorImage.height, tensorImage.width)
9162 }
0 commit comments