Руководство по стилизации лица для Android

Задача MediaPipe Face Stylizer позволяет применять стилизацию лиц к лицам на изображении. Вы можете использовать это задание для создания виртуальных аватаров в различных стилях.

Пример кода, описанный в этой инструкции, доступен на GitHub . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .

Пример кода

Пример кода задач MediaPipe — это базовая реализация приложения Face Stylizer для Android. В примере применяется стилизация лица к изображениям, предоставленным приложению.

Вы можете использовать это приложение в качестве отправной точки для своего собственного приложения для Android или обращаться к нему при изменении существующего приложения. Пример кода Face Stylizer размещен на GitHub .

Загрузите код

Следующие инструкции показывают, как создать локальную копию кода примера с помощью инструмента командной строки git .

Чтобы загрузить пример кода:

  1. Клонируйте репозиторий git, используя следующую команду:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. При желании настройте свой экземпляр git на использование разреженной проверки, чтобы у вас были только файлы для примера приложения Face Stylizer:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

После создания локальной версии кода примера вы можете импортировать проект в Android Studio и запустить приложение. Инструкции см. в Руководстве по установке для Android .

Ключевые компоненты

Следующие файлы содержат ключевой код для этого примера приложения стилизации лица:

  • FaceStylizationHelper.kt : Инициализирует стилизатор лица и обрабатывает выбор модели и делегата.
  • MainActivity.kt : предоставляет результаты и выходные данные, а также обрабатывает любые ошибки.

Настраивать

В этом разделе описаны ключевые шаги по настройке среды разработки и проектов кода специально для использования Face Stylizer. Общие сведения о настройке среды разработки для использования задач MediaPipe, включая требования к версии платформы, см. в руководстве по настройке для Android .

Зависимости

Задача Face Stylizer использует библиотеку com.google.mediapipe:tasks-vision . Добавьте эту зависимость в файл build.gradle вашего приложения Android:

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

Модель

Для задачи MediaPipe Face Stylizer требуется пакет обученной модели, совместимый с этой задачей. Дополнительную информацию о доступных обученных моделях для Face Stylizer смотрите в разделе «Модели» обзора задач.

Выберите и загрузите модель и сохраните ее в каталоге вашего проекта:

<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 Face Stylizer использует функцию 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 Устанавливает дополнительный прослушиватель ошибок. N/A Not set

Подготовьте данные

Face Stylizer работает с неподвижными изображениями. Задача выполняет предварительную обработку входных данных, включая изменение размера, поворот и нормализацию значений. Следующий код демонстрирует, как передать данные для обработки.

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)

Обработка и отображение результатов

Face Stylizer возвращает объект FaceStylizerResult , который содержит объект MPImage со стилизацией наиболее заметного лица во входном изображении.

Ниже показан пример выходных данных этой задачи:

Вышеуказанный результат был создан путем применения модели цветного эскиза к следующему входному изображению: