物體檢測是給定圖像或視訊流,物件檢測模型可以識別可能存在一組已知物件中的哪一個,並提供有關它們在圖像中的位置的信息。
來看一下沙拉的物體檢測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://codelabs.developers.google.com/tflite-object-detection-android