คู่มือการจัดรูปแบบใบหน้าสำหรับ Android

งานสไตไลซ์ใบหน้าของ MediaPipe ช่วยให้คุณใช้การจัดรูปแบบใบหน้ากับใบหน้าในรูปภาพได้ คุณใช้งานนี้เพื่อสร้างรูปโปรไฟล์เสมือนจริงในสไตล์ต่างๆ ได้

ตัวอย่างโค้ดที่อธิบายไว้ในวิธีการเหล่านี้มีอยู่ใน GitHub สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความสามารถ โมเดล และตัวเลือกการกำหนดค่า ของงานนี้ โปรดดูภาพรวม

ตัวอย่างโค้ด

โค้ดตัวอย่างงาน MediaPipe Tasks เป็นการใช้งานพื้นฐานของสไตไลเซอร์ใบหน้า แอปสำหรับ Android ตัวอย่างนี้นำการจัดรูปแบบใบหน้าไปใช้กับรูปภาพที่ให้ไว้กับ แอป

คุณสามารถใช้แอปนี้เป็นจุดเริ่มต้นสำหรับแอป Android ของคุณเอง หรืออ้างอิงถึงแอปนั้น เมื่อแก้ไขแอปที่มีอยู่ โค้ดตัวอย่างสไตไลซ์ใบหน้าโฮสต์อยู่ที่ GitHub

ดาวน์โหลดโค้ด

วิธีการต่อไปนี้แสดงวิธีสร้างสำเนาตัวอย่างในเครื่อง โดยใช้เครื่องมือบรรทัดคำสั่ง git

วิธีดาวน์โหลดโค้ดตัวอย่าง

  1. โคลนที่เก็บ Git โดยใช้คำสั่งต่อไปนี้
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. นอกจากนี้ คุณสามารถกำหนดค่าอินสแตนซ์ Git ให้ใช้การชำระเงินแบบกระจัดกระจายเพื่อให้คุณมี เฉพาะไฟล์สำหรับแอปตัวอย่างสไตไลซ์ใบหน้าเท่านั้น
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

หลังจากสร้างโค้ดตัวอย่างในเวอร์ชันในเครื่องแล้ว คุณจะนำเข้าโปรเจ็กต์ได้ ลงใน Android Studio และเรียกใช้แอป โปรดดูวิธีการในคู่มือการตั้งค่าสำหรับ Android

องค์ประกอบสำคัญ

ไฟล์ต่อไปนี้มีโค้ดที่สำคัญสำหรับตัวอย่างการจัดรูปแบบใบหน้านี้ แอปพลิเคชัน:

  • FaceStylizationHelper.kt เริ่มต้นสไตไลเซอร์ใบหน้าและจัดการโมเดลและมอบสิทธิ์การเลือก
  • MainActivity.kt แสดงผลลัพธ์และเอาต์พุต รวมถึงจัดการกับข้อผิดพลาด

ตั้งค่า

ส่วนนี้จะอธิบายขั้นตอนสำคัญในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ และ โปรเจ็กต์โค้ดเพื่อใช้สไตไลเซอร์ใบหน้าโดยเฉพาะ สำหรับข้อมูลทั่วไปเกี่ยวกับ การตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ของคุณสำหรับการใช้งาน MediaPipe ซึ่งรวมถึง ข้อกำหนดด้านเวอร์ชันของแพลตฟอร์ม โปรดดูคู่มือการตั้งค่าสำหรับ Android

การอ้างอิง

งานสไตไลซ์ใบหน้าใช้ไลบรารี com.google.mediapipe:tasks-vision เพิ่ม จะขึ้นอยู่กับไฟล์ build.gradle ของแอป Android

dependencies {
    implementation 'com.google.mediapipe:tasks-vision:latest.release'
}

รุ่น

งานสไตไลซ์ใบหน้าของ MediaPipe ต้องการแพ็กเกจโมเดลที่ผ่านการฝึกมา ซึ่งสามารถทำงานร่วมกับ งานนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่ผ่านการฝึกอบรมเกี่ยวกับการทำสไตไลซ์ใบหน้า ดูภาพรวมงานส่วนโมเดล

เลือกและดาวน์โหลดโมเดล และเก็บไว้ในไดเรกทอรีโปรเจ็กต์ของคุณ:

<dev-project-root>/src/main/assets

ระบุเส้นทางของโมเดลภายในพารามิเตอร์ ModelAssetPath

val modelName = "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
baseOptionsBuilder.setModelAssetPath(modelName)

สร้างงาน

งานสไตไลซ์ใบหน้าของ MediaPipe จะใช้ฟังก์ชัน createFromOptions() เพื่อตั้งค่า งาน ฟังก์ชัน createFromOptions() จะยอมรับค่าสำหรับการกำหนดค่า ตัวเลือก โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการกําหนดค่าได้ที่การกําหนดค่า ตัวเลือกเพิ่มเติม

val baseOptionsBuilder = BaseOptions.builder().setModelAssetPath(modelName)
val baseOptions = baseOptionBuilder.build()

val optionsBuilder =
    FaceStylizer.FaceStylizerOptions.builder()
        .setBaseOptions(baseOptionsBuilder.build())

val options = optionsBuilder.build()

FaceStylizer =
    FaceStylizer.createFromOptions(context, options)

ตัวเลือกการกำหนดค่า

งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้สำหรับแอป Android

ชื่อตัวเลือก คำอธิบาย ช่วงค่า ค่าเริ่มต้น
errorListener ตั้งค่า Listener ข้อผิดพลาดที่ไม่บังคับ N/A Not set

เตรียมข้อมูล

สไตไลซ์ใบหน้าใช้งานได้กับภาพนิ่ง งานจะจัดการอินพุตข้อมูล การประมวลผลล่วงหน้า ซึ่งรวมถึงการปรับขนาด การหมุน และการปรับค่าให้เป็นมาตรฐาน โค้ดต่อไปนี้แสดงวิธีส่งต่อข้อมูลสำหรับการประมวลผล

import com.google.mediapipe.framework.image.BitmapImageBuilder
import com.google.mediapipe.framework.image.MPImage

// Convert the input Bitmap object to an MPImage object to run inference
val mpImage = BitmapImageBuilder(image).build()

เรียกใช้งาน

ใช้เมธอด FaceStylizer.stylize() กับรูปภาพอินพุตเพื่อเรียกใช้สไตไลเซอร์ ดังนี้

val result = FaceStylizer.stylize(mpImage)

จัดการและแสดงผลลัพธ์

สไตไลเซอร์ใบหน้าจะแสดงออบเจ็กต์ FaceStylizerResult ซึ่งมี วัตถุ MPImage ที่มีการจัดรูปแบบใบหน้าที่โดดเด่นที่สุดในอินพุต รูปภาพ

ตัวอย่างต่อไปนี้แสดงตัวอย่างข้อมูลเอาต์พุตจากงานนี้

เอาต์พุตด้านบนสร้างขึ้นโดยใช้ภาพร่างสี ลงในรูปภาพอินพุตต่อไปนี้