งานสไตไลซ์ใบหน้าของ MediaPipe ช่วยให้คุณใช้การจัดรูปแบบใบหน้ากับใบหน้าในรูปภาพได้ คุณใช้งานนี้เพื่อสร้างรูปโปรไฟล์เสมือนจริงในสไตล์ต่างๆ ได้
ตัวอย่างโค้ดที่อธิบายไว้ในวิธีการเหล่านี้มีอยู่ใน GitHub สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความสามารถ โมเดล และตัวเลือกการกำหนดค่า ของงานนี้ โปรดดูภาพรวม
ตัวอย่างโค้ด
โค้ดตัวอย่างงาน MediaPipe Tasks เป็นการใช้งานพื้นฐานของสไตไลเซอร์ใบหน้า แอปสำหรับ Android ตัวอย่างนี้นำการจัดรูปแบบใบหน้าไปใช้กับรูปภาพที่ให้ไว้กับ แอป
คุณสามารถใช้แอปนี้เป็นจุดเริ่มต้นสำหรับแอป Android ของคุณเอง หรืออ้างอิงถึงแอปนั้น เมื่อแก้ไขแอปที่มีอยู่ โค้ดตัวอย่างสไตไลซ์ใบหน้าโฮสต์อยู่ที่ GitHub
ดาวน์โหลดโค้ด
วิธีการต่อไปนี้แสดงวิธีสร้างสำเนาตัวอย่างในเครื่อง โดยใช้เครื่องมือบรรทัดคำสั่ง git
วิธีดาวน์โหลดโค้ดตัวอย่าง
- โคลนที่เก็บ Git โดยใช้คำสั่งต่อไปนี้
git clone https://github.com/google-ai-edge/mediapipe-samples
- นอกจากนี้ คุณสามารถกำหนดค่าอินสแตนซ์ 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
ที่มีการจัดรูปแบบใบหน้าที่โดดเด่นที่สุดในอินพุต
รูปภาพ
ตัวอย่างต่อไปนี้แสดงตัวอย่างข้อมูลเอาต์พุตจากงานนี้
เอาต์พุตด้านบนสร้างขึ้นโดยใช้ภาพร่างสี ลงในรูปภาพอินพุตต่อไปนี้