iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Mobile Development

Kotlin Android 30天,從 0 到 ML (Machine Learning)系列 第 27

Kotlin Android 第27天,從 0 到 ML - TensorFlow Lite -物體檢測 (Object detection)

前言:

   物體檢測是給定圖像或視訊流,物件檢測模型可以識別可能存在一組已知物件中的哪一個,並提供有關它們在圖像中的位置的信息。
    

大綱 :

來看一下沙拉的物體檢測codelab的實作

將 TensorFlow Lite 模型添加到assets文件夾

 salad.tflite
 

build.gradle(app)

dependencies {
   implementation 'org.tensorflow:tensorflow-lite-task-vision:0.2.0'}
}

android {
  ...
    aaptOptions {
        noCompress "tflite"
    }
  ...
}

在圖像上設置和運行設備上的物件檢測
只需 3 個簡單的步驟,使用 3 個 API 即可加載和運行物件檢測模型:

準備圖像/流: TensorImage
創建檢測器物件: ObjectDetector
連接上面的2個物件: detect(image)

創建檢測器物件

private fun runObjectDetection(bitmap: Bitmap) {
    // Step 1: 創建圖像物件
****    val image = TensorImage.fromBitmap(bitmap)

    // Step 2: 初始化檢測器
    val options = ObjectDetector.ObjectDetectorOptions.builder()
        .setMaxResults(5)
        .setScoreThreshold(0.3f)
        .build()
    val detector = ObjectDetector.createFromFileAndOptions(
        this,
        "salad.tflite",
        options
    )

    // Step 3: 將圖像饋送到檢測器
    val results = detector.detect(image)

    // Step 4: 檢測結果
    val resultToDisplay = results.map {
        // Get the top-1 category and craft the display text
        val category = it.categories.first()
        val text = "${category.label}, ${category.score.times(100).toInt()}%"

        // Create a data object to display the detection result
        DetectionResult(it.boundingBox, text)
    }
    // Draw the detection result on the bitmap and show it.
    val imgWithResult = drawDetectionResult(bitmap, resultToDisplay)
    runOnUiThread {
        inputImageView.setImageBitmap(imgWithResult)
    }
}

執行結果:
https://ithelp.ithome.com.tw/upload/images/20211002/20121643qPq7A1KHJt.png

參考:

https://codelabs.developers.google.com/tflite-object-detection-android


上一篇
Kotlin Android 第26天,從 0 到 ML - TensorFlow Lite -手寫數字辨識
下一篇
Kotlin Android 第28天,從 0 到 ML - TensorFlow Lite -姿態估計 (Pose estimation)
系列文
Kotlin Android 30天,從 0 到 ML (Machine Learning)30

尚未有邦友留言

立即登入留言