Untuk apa layanan ML Kit? Masalah apa yang bisa dipecahkannya selama pengembangan?
Hari ini saya sampaikan kepada Anda salah satu fungsi terpenting ML Kit - pengenalan wajah.
Ikhtisar pengenalan wajah

Fitur ini dapat mengenali orientasi wajah, ekspresi wajah (kegembiraan, jijik, terkejut, sedih, dan marah), tanda (jenis kelamin, usia, pakaian dan aksesori), dan apakah mata terbuka atau tertutup. Itu juga dapat menentukan koordinat hidung, mata, bibir dan alis, dan bahkan mengidentifikasi kelompok wajah pada saat yang bersamaan.
Dan yang terpenting, fitur pengenalan wajah benar-benar gratis dan berfungsi di semua ponsel Android.
Mengembangkan fungsi pemotretan senyum otomatis untuk sekelompok orang
Saya akan memandu Anda tentang cara menggunakan fitur yang dijelaskan di atas untuk membuat demo fitur Pengambilan Senyuman Otomatis. Anda dapat mengunduh kode sumber demo di github.com/HMS-Core/hms-ml-demo .
1. Persiapan
Saat mengintegrasikan alat pengembangan Inti HMS apa pun, proses persiapannya hampir sama. Anda hanya perlu menambahkan repositori Maven dan mengimpor SDK.
1.1 Tambahkan repositori Maven yang disediakan oleh Huawei ke file build.gradle tingkat proyek Anda
Tambahkan alamat repositori Maven:
buildscript {
repositories {
maven {url 'http://developer.huawei.com/repo/'}
} }allprojects {
repositories {
maven { url 'http://developer.huawei.com/repo/'}
}}
1.2 Tambahkan dependensi SDK ke file build.gradle di tingkat aplikasi
Impor SDK pengenalan wajah dan SDK inti:
dependencies{
// import the basic SDK
implementation 'com.huawei.hms:ml-computer-vision:1.0.2.300'
// Import the face detection SDK
implementation 'com.huawei.hms:ml-computer-vision-face-recognition-model:1.0.2.300'
}
1.3 Tambahkan fungsi pemuatan model otomatis ke file AndroidManifest.xml
Fungsi ini terutama digunakan untuk memperbarui model. Model dapat diunduh secara otomatis dan diperbarui di perangkat seluler berdasarkan algoritme yang dioptimalkan.
<manifest
<application
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value= "face"/>
</application></manifest>
1.4 Kirimkan permintaan untuk akses ke kamera dan memori di file AndroidManifest.xml
<!--Camera permission--><uses-permission android:name="android.permission.CAMERA" /><!--Storage permission--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2. Pengembangan kode
2.1 Membuat penganalisis wajah untuk mengambil foto saat senyuman terdeteksi
Pertama, untuk mengkonfigurasi pengambilan foto deteksi senyum, ikuti langkah-langkah berikut:
(1) Konfigurasi pengaturan penganalisis.
(2) Mentransfer parameter ke penganalisis.
(3) Ganti transactResult di analyzer.setTransacto untuk menangani konten yang dikembalikan oleh pengenalan wajah. Secara khusus, tingkat kepercayaan (bahwa ada senyuman di wajah) dikembalikan. Saat tingkat kepercayaan mencapai ambang yang ditetapkan, kamera secara otomatis mengambil foto.
private MLFaceAnalyzer analyzer;private void createFaceAnalyzer() {
MLFaceAnalyzerSetting setting =
new MLFaceAnalyzerSetting.Factory()
.setFeatureType(MLFaceAnalyzerSetting.TYPE_FEATURES)
.setKeyPointType(MLFaceAnalyzerSetting.TYPE_UNSUPPORT_KEYPOINTS)
.setMinFaceProportion(0.1f)
.setTracingAllowed(true)
.create();
this.analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer(setting);
this.analyzer.setTransactor(new MLAnalyzer.MLTransactor<MLFace>() {
@Override public void destroy() {
}
@Override public void transactResult(MLAnalyzer.Result<MLFace> result) {
SparseArray<MLFace> faceSparseArray = result.getAnalyseList();
int flag = 0;
for (int i = 0; i < faceSparseArray.size(); i++) {
MLFaceEmotion emotion = faceSparseArray.valueAt(i).getEmotions();
if (emotion.getSmilingProbability() > smilingPossibility) {
flag++;
}
}
if (flag > faceSparseArray.size() * smilingRate && safeToTakePicture) {
safeToTakePicture = false;
mHandler.sendEmptyMessage(TAKE_PHOTO);
}
}
});}
Kedua, kami ingin menyimpan foto ini:
private void takePhoto() {
this.mLensEngine.photograph(null,
new LensEngine.PhotographListener() {
@Override public void takenPhotograph(byte[] bytes) {
mHandler.sendEmptyMessage(STOP_PREVIEW);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
saveBitmapToDisk(bitmap);
}
});}
2.2 Membuat instance LensEngine untuk menangkap aliran kamera dinamis dan meneruskan aliran ke penganalisis
private void createLensEngine() {
Context context = this.getApplicationContext();
// Create LensEngine
this.mLensEngine = new LensEngine.Creator(context, this.analyzer).setLensType(this.lensType)
.applyDisplayDimension(640, 480)
.applyFps(25.0f)
.enableAutomaticFocus(true)
.create();}
2.3 Mengirimkan aplikasi untuk hak mengakses aliran dinamis dan melampirkan kode untuk membuat penganalisis dan LensEngine
@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_live_face_analyse);
if (savedInstanceState != null) {
this.lensType = savedInstanceState.getInt("lensType");
}
this.mPreview = this.findViewById(R.id.preview);
this.createFaceAnalyzer();
this.findViewById(R.id.facingSwitch).setOnClickListener(this);
// Checking Camera Permissions
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
this.createLensEngine();
} else {
this.requestCameraPermission();
}}
private void requestCameraPermission() {
final String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
ActivityCompat.requestPermissions(this, permissions, LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE);
return;
}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode != LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
return;
}
if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
this.createLensEngine();
return;
}}
Tindakan selanjutnya
Cukup sederhana, bukan? Meskipun Anda tidak terbiasa dengan proses pengembangan, Anda masih dapat membuat fitur baru yang berguna hanya dalam setengah jam! Sekarang mari kita lihat apa fungsi fungsi ini.
Ambil foto satu orang sambil tersenyum:

Ambil foto beberapa orang sambil tersenyum:

Bagaimana lagi Anda bisa menggunakan pengenalan wajah? Berikut beberapa opsinya:
1. Mempercantik fitur wajah Anda.
2. Buat efek yang menarik dengan melebih-lebihkan atau mengubah kontur dan fitur wajah.
3. Buat fungsi penentuan usia yang akan mencegah anak-anak mengakses konten yang tidak pantas.
4. Rancang fungsi pelindung mata dengan menentukan lamanya waktu pengguna melihat layar.
5. Tentukan apakah seseorang masih hidup di depan kamera menggunakan perintah acak (misalnya menggelengkan kepala, berkedip, buka mulut).
6. Merekomendasikan produk kepada pengguna sesuai dengan usia dan jenis kelamin mereka.
Untuk lebih jelasnya, kunjungi situs web kami:developer.huawei.com/consumer/en/doc/development/HMS-Guides/ml-introduction-4
Kami akan membagikan cara lain untuk menggunakan HUAWEI ML Kit. Tetap disini!