1. 簡介
ML Kit 是一套行動 SDK,可將 Google 的機器學習專業知識導入 Android 和 iOS 應用程式,功能強大且易於使用。無論您是機器學習新手還是經驗豐富的開發人員,都能輕鬆導入所需功能,只需幾行程式碼即可。您不需要深入瞭解類神經網路或模型最佳化,即可開始使用。
進行本程式碼研究室時,如果你遇到任何問題 (例如程式碼錯誤、文法錯誤或用詞不明確等),請透過程式碼研究室左下角的「回報錯誤」連結回報問題。
運作方式
ML Kit 將 Google 的機器學習技術 (例如 Mobile Vision 和 TensorFlow Lite) 整合至單一 SDK 中,方便您輕鬆將機器學習技術運用在自家應用程式中。無論您需要 Mobile Vision 裝置端模型的即時功能,還是自訂 TensorFlow Lite 模型的彈性,ML Kit 都能滿足需求。
本程式碼研究室將逐步說明如何建立自己的 Android 應用程式,自動偵測圖片中的文字和臉部特徵。
建構目標
在本程式碼研究室中,您將使用 ML Kit 建構 Android 應用程式。您的應用程式將會:
|
|
課程內容
- 如何使用 ML Kit SDK 輕鬆新增進階機器學習功能,例如文字辨識和臉部特徵偵測
軟硬體需求
- 最新版 Android Studio (3.0 以上版本)
- Android Studio 模擬器或實體 Android 裝置
- 範例程式碼
- 具備 Java Android 開發的基本知識
- 對機器學習模型有基本瞭解
本程式碼研究室著重於機器學習套件,我們不會對與主題無關的概念和程式碼多做介紹,但會事先準備好這些程式碼區塊,屆時您只要複製及貼上即可。
2. 開始設定
下載程式碼
點選下方連結即可下載這個程式碼研究室的所有程式碼:
將下載的 ZIP 檔案解壓縮。這會解壓縮根資料夾 (mlkit-android-master),其中包含您需要的所有資源。在本程式碼研究室中,您只需要 vision 子目錄中的資源。
mlkit-android-master 存放區中的 vision 子目錄包含兩個目錄:
starter:本程式碼研究室的範例程式碼。
final:完成的範例應用程式程式碼。
3. 檢查 ML Kit 的依附元件
驗證機器學習套件的依附元件
下列幾行程式碼應已加入專案 app 目錄的 build.gradle 檔案結尾 (請檢查確認):
build.gradle
dependencies {
// Face features
implementation 'com.google.mlkit:face-detection:16.0.0'
// Text features
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}
這些是實作本程式碼研究室功能時所需的特定 ML Kit 依附元件。
4. 執行範例應用程式
現在您已將專案匯入 Android Studio,並檢查 ML Kit 的依附元件,可以首次執行應用程式。啟動 Android Studio 模擬器,然後按一下 Android Studio 工具列中的「Run」 (
)。
應用程式應會在模擬器上啟動。此時,您應該會看到基本版面配置,其中包含下拉式欄位,可供您在 3 張圖片之間選取。在下一節中,您將在應用程式中新增文字辨識功能,以便辨識圖片中的文字。
5. 新增裝置端文字辨識功能
在這個步驟中,我們會在應用程式中新增功能,辨識圖片中的文字。
設定及執行圖片的裝置端文字辨識
在 MainActivity 類別的 runTextRecognition 方法中新增下列內容:
MainActivity.java
private void runTextRecognition() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
TextRecognizer recognizer = TextRecognition.getClient();
mTextButton.setEnabled(false);
recognizer.process(image)
.addOnSuccessListener(
new OnSuccessListener<Text>() {
@Override
public void onSuccess(Text texts) {
mTextButton.setEnabled(true);
processTextRecognitionResult(texts);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mTextButton.setEnabled(true);
e.printStackTrace();
}
});
}
上述程式碼會設定文字辨識偵測器,並使用回應呼叫 processTextRecognitionResult 函式。
處理文字辨識回應
在 MainActivity 類別中將下列程式碼新增至 processTextRecognitionResult,即可剖析結果並在應用程式中顯示。
MainActivity.java
private void processTextRecognitionResult(Text texts) {
List<Text.TextBlock> blocks = texts.getTextBlocks();
if (blocks.size() == 0) {
showToast("No text found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < blocks.size(); i++) {
List<Text.Line> lines = blocks.get(i).getLines();
for (int j = 0; j < lines.size(); j++) {
List<Text.Element> elements = lines.get(j).getElements();
for (int k = 0; k < elements.size(); k++) {
Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
mGraphicOverlay.add(textGraphic);
}
}
}
}
在模擬器上執行應用程式
現在請按一下 Android Studio 工具列中的「Run」圖示 (
)。應用程式載入後,請確認下拉式欄位中已選取 Test Image 1(Text),然後按一下 FIND TEXT 按鈕。
現在,應用程式看起來會如下圖所示,在原始圖片上疊加顯示文字辨識結果和周框。

相片:Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
恭喜!您已使用 ML Kit,在應用程式中新增裝置端文字辨識功能。裝置端文字辨識功能適用於許多用途,即使應用程式沒有網路連線也能運作,而且速度夠快,可辨識靜態圖片和即時影片畫面中的文字。
6. 新增裝置端臉部輪廓偵測功能
在這個步驟中,我們會在應用程式中新增功能,以便辨識圖片中的臉部輪廓。
在圖片上設定及執行裝置端臉部輪廓偵測
在 MainActivity 類別的 runFaceContourDetection 方法中新增下列內容:
MainActivity.java
private void runFaceContourDetection() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
FaceDetectorOptions options =
new FaceDetectorOptions.Builder()
.setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
.setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
.build();
mFaceButton.setEnabled(false);
FaceDetector detector = FaceDetection.getClient(options);
detector.process(image)
.addOnSuccessListener(
new OnSuccessListener<List<Face>>() {
@Override
public void onSuccess(List<Face> faces) {
mFaceButton.setEnabled(true);
processFaceContourDetectionResult(faces);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mFaceButton.setEnabled(true);
e.printStackTrace();
}
});
}
上述程式碼會設定臉部輪廓偵測器,並使用回應呼叫 processFaceContourDetectionResult 函式。
處理臉部輪廓偵測回應
在 MainActivity 類別中將下列程式碼新增至 processFaceContourDetectionResult,即可剖析結果並顯示在應用程式中。
MainActivity.java
private void processFaceContourDetectionResult(List<Face> faces) {
// Task completed successfully
if (faces.size() == 0) {
showToast("No face found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < faces.size(); ++i) {
Face face = faces.get(i);
FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
mGraphicOverlay.add(faceGraphic);
faceGraphic.updateFace(face);
}
}
在模擬器上執行應用程式
現在請按一下 Android Studio 工具列中的「Run」圖示 (
)。應用程式載入後,請確認下拉式欄位中已選取 Test Image 2 (Face),然後按一下 FIND FACE CONTOUR 按鈕。
現在,應用程式看起來會如下圖所示,顯示臉部輪廓偵測結果,並將臉部輪廓以點的形式疊加在原始圖片上。

恭喜!您已使用 ML Kit,在應用程式中新增裝置端臉部輪廓偵測功能。裝置端臉部輪廓偵測功能適用於許多用途,即使應用程式沒有網路連線也能運作,而且速度夠快,可用於靜態圖片和即時影片畫面。
7. 恭喜!
您已成功使用 ML Kit,輕鬆在應用程式中新增進階機器學習功能。
涵蓋內容
- 如何將 ML Kit 新增至 Android 應用程式
- 如何使用 ML Kit 的裝置端文字辨識功能,找出圖片中的文字
- 如何使用 ML Kit 的裝置端臉部輪廓功能,識別圖片中的臉部特徵
後續步驟
- 在自己的 Android 應用程式中使用 ML Kit!