1. บทนำ
ML Kit เป็น SDK สําหรับอุปกรณ์เคลื่อนที่ที่นําความเชี่ยวชาญด้านแมชชีนเลิร์นนิงของ Google มาใช้กับแอป Android และ iOS ในแพ็กเกจที่มีประสิทธิภาพแต่ใช้งานง่าย ไม่ว่าคุณจะเป็นมือใหม่หรือมีประสบการณ์ด้านแมชชีนเลิร์นนิง ก็ติดตั้งใช้งานฟังก์ชันที่ต้องการได้ง่ายๆ ในโค้ดเพียงไม่กี่บรรทัด คุณไม่จำเป็นต้องมีความรู้เชิงลึกเกี่ยวกับโครงข่ายประสาทหรือการเพิ่มประสิทธิภาพโมเดลเพื่อเริ่มต้นใช้งาน
หากพบปัญหา (ข้อบกพร่องของโค้ด ข้อผิดพลาดด้านไวยากรณ์ การใช้คำที่ไม่ชัดเจน ฯลฯ) ขณะดำเนินการใน Codelab โปรดรายงานปัญหาผ่านลิงก์รายงานข้อผิดพลาดที่มุมล่างซ้ายของ Codelab
หลักการทำงาน
ML Kit ช่วยให้การใช้เทคนิค ML ในแอปเป็นเรื่องง่ายด้วยการนำเทคโนโลยี ML ของ Google เช่น Mobile Vision และ TensorFlow Lite มารวมไว้ใน SDK เดียว ไม่ว่าคุณต้องการความสามารถแบบเรียลไทม์ของโมเดลในอุปกรณ์ของ Mobile Vision หรือความยืดหยุ่นของโมเดล TensorFlow Lite ที่กําหนดเอง ML Kit ก็พร้อมให้บริการ
โค้ดแล็บนี้จะแนะนำการสร้างแอป Android ของคุณเองซึ่งสามารถตรวจหาข้อความและลักษณะใบหน้าในรูปภาพได้โดยอัตโนมัติ
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะได้สร้างแอป Android ด้วย ML Kit แอปของคุณจะ
|
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ ML Kit SDK เพื่อเพิ่มความสามารถขั้นสูงของแมชชีนเลิร์นนิง เช่น การจดจำข้อความและการตรวจจับใบหน้าได้อย่างง่ายดาย
สิ่งที่ต้องมี
- Android Studio เวอร์ชันล่าสุด (v3.0 ขึ้นไป)
- โปรแกรมจำลอง Android Studio หรืออุปกรณ์ Android
- โค้ดตัวอย่าง
- ความรู้พื้นฐานเกี่ยวกับการพัฒนาแอป Android ใน Java
- ความเข้าใจขั้นพื้นฐานเกี่ยวกับโมเดลแมชชีนเลิร์นนิง
Codelab นี้มุ่งเน้นที่ ML Kit แนวคิดและบล็อกโค้ดที่ไม่เกี่ยวข้องจะได้รับการอธิบายอย่างคร่าวๆ และให้คุณคัดลอกและวางได้ง่ายๆ
2. การเริ่มตั้งค่า
ดาวน์โหลดโค้ด
คลิกลิงก์ต่อไปนี้เพื่อดาวน์โหลดโค้ดทั้งหมดของ Codelab นี้
แตกไฟล์ ZIP ที่ดาวน์โหลด ซึ่งจะแตกไฟล์โฟลเดอร์รูท (mlkit-android-master
) ที่มีทรัพยากรทั้งหมดที่คุณต้องการ สำหรับ Codelab นี้ คุณจะต้องใช้ทรัพยากรในไดเรกทอรีย่อย vision
เท่านั้น
ไดเรกทอรีย่อย vision
ในที่เก็บ mlkit-android-master
มีไดเรกทอรี 2 รายการ ได้แก่
- starter - โค้ดเริ่มต้นที่คุณนำไปต่อยอดใน Codelab นี้ได้
- final - โค้ดที่สมบูรณ์ของแอปตัวอย่างที่เสร็จสมบูรณ์
3. ตรวจสอบทรัพยากร Dependency ของ ML Kit
ยืนยันการอ้างอิงสำหรับ ML Kit
ควรเพิ่มบรรทัดต่อไปนี้ไว้ที่ท้ายไฟล์ create.gradle ในไดเรกทอรี app
ของโปรเจ็กต์ (ทำเครื่องหมายเพื่อยืนยัน)
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'
}
นี่คือทรัพยากร Dependency ของ ML Kit ที่เฉพาะเจาะจงซึ่งคุณต้องติดตั้งใช้งานฟีเจอร์ใน Codelab นี้
4. เรียกใช้แอปเริ่มต้น
เมื่อนำเข้าโปรเจ็กต์ลงใน Android Studio และตรวจสอบทรัพยากร Dependency ของ ML Kit แล้ว คุณก็พร้อมที่จะเรียกใช้แอปเป็นครั้งแรก เริ่มโปรแกรมจำลอง Android Studio แล้วคลิกเรียกใช้ ( ) ในแถบเครื่องมือของ Android Studio
แอปจะเปิดขึ้นในโปรแกรมจำลอง เมื่อถึงขั้นตอนนี้ คุณควรเห็นเลย์เอาต์พื้นฐานที่มีช่องแบบเลื่อนลงซึ่งให้คุณเลือกรูปภาพได้ 3 รูป ในส่วนถัดไป คุณจะเพิ่มการจดจําข้อความลงในแอปเพื่อระบุข้อความในรูปภาพ
5. เพิ่มการจดจำข้อความในอุปกรณ์
ในขั้นตอนนี้ เราจะเพิ่มฟังก์ชันการทำงานลงในแอปของคุณเพื่อจดจำข้อความในรูปภาพ
ตั้งค่าและเรียกใช้การจดจำข้อความในอุปกรณ์ในรูปภาพ
เพิ่มข้อมูลต่อไปนี้ลงในเมธอด runTextRecognition
ของคลาส MainActivity
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
พร้อมคำตอบ
ประมวลผลการตอบกลับการจดจำข้อความ
เพิ่มโค้ดต่อไปนี้ลงใน processTextRecognitionResult
ในชั้นเรียน MainActivity
เพื่อแยกวิเคราะห์ผลลัพธ์และแสดงในแอปของคุณ
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 เมื่อแอปโหลดแล้ว โปรดเลือก Test Image 1(Text)
ในช่องแบบเลื่อนลงและคลิกปุ่ม FIND TEXT
ตอนนี้แอปของคุณควรมีลักษณะเหมือนรูปภาพด้านล่าง ซึ่งแสดงผลการจดจำข้อความและกล่องขอบเขตที่วางซ้อนกันบนรูปภาพต้นฉบับ
รูปภาพ: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
ยินดีด้วย คุณเพิ่งเพิ่มการจดจำข้อความในอุปกรณ์ลงในแอปโดยใช้ ML Kit การจดจำข้อความในอุปกรณ์เหมาะสําหรับกรณีการใช้งานหลายกรณี เนื่องจากทํางานได้แม้แอปจะไม่ได้เชื่อมต่ออินเทอร์เน็ตและรวดเร็วพอที่จะใช้ในภาพนิ่งและเฟรมวิดีโอสด
6. เพิ่มการตรวจจับรูปทรงใบหน้าในอุปกรณ์
ในขั้นตอนนี้ เราจะเพิ่มฟังก์ชันการทำงานให้กับแอปของคุณเพื่อจดจำโครงร่างของใบหน้าในรูปภาพ
ตั้งค่าและเรียกใช้การตรวจจับโครงหน้าในอุปกรณ์บนรูปภาพ
เพิ่มข้อมูลต่อไปนี้ลงในเมธอด runFaceContourDetection
ของคลาส MainActivity
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
ด้วยคำตอบ
ประมวลผลการตอบสนองการตรวจจับรูปทรงใบหน้า
เพิ่มโค้ดต่อไปนี้ลงใน processFaceContourDetectionResult
ในคลาส MainActivity
เพื่อแยกวิเคราะห์ผลลัพธ์และแสดงในแอป
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 เมื่อแอปโหลดขึ้นแล้ว ให้ตรวจสอบว่าได้เลือก Test Image 2 (Face)
ในช่องเมนูแบบเลื่อนลงแล้ว แล้วคลิกปุ่ม FIND FACE CONTOUR
ตอนนี้แอปของคุณควรมีลักษณะเหมือนภาพด้านล่าง ซึ่งแสดงผลการจับเส้นโครงหน้าและแสดงเส้นโครงของใบหน้าเป็นจุดที่วางซ้อนกันบนรูปภาพต้นฉบับ
ยินดีด้วย คุณเพิ่งเพิ่มการตรวจจับรูปร่างใบหน้าในอุปกรณ์ลงในแอปโดยใช้ ML Kit การตรวจหาโครงหน้าในอุปกรณ์เหมาะสําหรับกรณีการใช้งานหลายกรณี เนื่องจากจะทํางานได้แม้แอปจะไม่มีการเชื่อมต่ออินเทอร์เน็ต และรวดเร็วพอที่จะใช้ในภาพนิ่งและเฟรมวิดีโอสด
7. ยินดีด้วย
คุณใช้ ML Kit เพื่อเพิ่มความสามารถขั้นสูงของแมชชีนเลิร์นนิงลงในแอปเรียบร้อยแล้ว
สิ่งที่เราได้พูดถึง
- วิธีเพิ่ม ML Kit ลงในแอป Android
- วิธีใช้การจดจําข้อความบนอุปกรณ์ใน ML Kit เพื่อค้นหาข้อความในรูปภาพ
- วิธีใช้เส้นโครงหน้าในอุปกรณ์ใน ML Kit เพื่อระบุลักษณะใบหน้าในรูปภาพ
ขั้นตอนถัดไป
- ใช้ ML Kit ในแอป Android ของคุณเอง