Pada Mei lalu, kami merilis Solusi MediaPipe, seperangkat alat untuk solusi tanpa kode dan kode rendah untuk tugas machine learning umum di perangkat, untuk Android, web, dan Python. Hari ini, kami dengan senang hati mengumumkan bahwa versi awal iOS SDK, ditambah update untuk Python SDK guna mendukung Raspberry Pi, sudah tersedia. Perilisan ini meliputi dukungan untuk klasifikasi audio, deteksi titik wajah, dan berbagai tugas natural language processing. Mari kita lihat bagaimana Anda dapat menggunakan alat ini untuk platform baru.
Selain menyiapkan hardware Raspberry Pi dengan kamera, Anda dapat mulai dengan menginstal dependensi MediaPipe, bersama dengan OpenCV dan NumPy jika belum memilikinya.
python -m pip install mediapipe
Dari sana, Anda dapat membuat file Python baru dan menambahkan impor Anda ke atas.
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
import cv2
import numpy as np
Pastikan juga bahwa Anda memiliki model deteksi objek yang disimpan secara lokal di Raspberry Pi Anda. Demi kenyamanan Anda, kami telah menyediakan model default, EfficientDet-Lite0, yang dapat diambil dengan perintah berikut.
wget -q -O efficientdet.tflite -q https://storage.googleapis.com/mediapipe-models/object_detector/efficientdet_lite0/int8/1/efficientdet_lite0.tflite
Setelah model didownload, Anda dapat mulai membuat ObjectDetector baru, termasuk beberapa kustomisasi, seperti hasil maksimal yang ingin Anda terima, atau batas keyakinan minimum yang harus dilampaui sebelum hasil dapat ditampilkan.
# Initialize the object detection model
base_options = python.BaseOptions(model_asset_path=model)
options = vision.ObjectDetectorOptions(
base_options=base_options,
running_mode=vision.RunningMode.LIVE_STREAM,
max_results=max_results, score_threshold=score_threshold,
result_callback=save_result)
detector = vision.ObjectDetector.create_from_options(options)
Setelah membuat ObjectDetector, Anda harus membuka kamera Raspberry Pi untuk membaca frame berkelanjutan. Ada beberapa langkah prapemrosesan yang akan dihilangkan di sini, tetapi tersedia dalam sampel kami di GitHub.
Dalam loop itu, Anda dapat mengubah gambar kamera yang diproses menjadi MediaPipe.Image baru, lalu menjalankan deteksi pada MediaPipe.Image baru sebelum menampilkan hasil yang diterima di pemroses terkait.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=rgb_image)
detector.detect_async(mp_image, time.time_ns())
Setelah menarik hasil tersebut dan mendeteksi kotak pembatas, Anda akan dapat melihat sesuatu seperti ini:
Anda dapat menemukan contoh Raspberry Pi lengkap yang ditunjukkan di atas di GitHub, atau melihat dokumentasi resminya di sini.
Meskipun klasifikasi teks adalah salah satu contoh langsungnya, gagasan intinya masih akan berlaku untuk sisa Tugas iOS yang tersedia. Serupa dengan Raspberry Pi, Anda akan mulai dengan membuat objek Tugas MediaPipe baru, yang dalam kasus ini adalah TextClassifier.
var textClassifier: TextClassifier?
textClassifier = TextClassifier(modelPath: model.modelPath)
Setelah memiliki TextClassifier
, Anda hanya perlu meneruskan String
ke tugas tersebut untuk mendapatkan TextClassifierResult
.
func classify(text: String) -> TextClassifierResult? {
guard let textClassifier = textClassifier else {
return nil
}
return try? textClassifier.classify(text: text)
}
Anda dapat melakukannya dari tempat lain di aplikasi, seperti ViewController DispatchQueue, sebelum menampilkan hasilnya.
let result = self?.textClassifier.classify(text: inputText)
let categories = result?.classificationResult.classifications.first?.categories?? []
Anda dapat menemukan kode lainnya untuk project ini di GitHub, serta melihat dokumentasi lengkap di developers.google.com/mediapipe.
Untuk mempelajari lebih lanjut, tonton sesi I/O 2023 kami: ML yang mudah di perangkat dengan MediaPipe, Tingkatkan aplikasi web Anda dengan machine learning dan MediaPipe, dan Yang baru di machine learning, serta lihat dokumentasi resminya di developers.google.com/mediapipe.
Kami menantikan semua hal menarik yang akan Anda buat, jadi pastikan untuk membagikannya dengan @googledevs dan komunitas developer Anda!