Задача MediaPipe Face Stylizer позволяет применять стилизацию лиц к лицам на изображении. Вы можете использовать это задание для создания виртуальных аватаров в различных стилях.
Пример кода, описанный в этой инструкции, доступен на GitHub . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Пример кода
Пример кода задач MediaPipe — это базовая реализация приложения Face Stylizer для Android. В примере применяется стилизация лица к изображениям, предоставленным приложению.
Вы можете использовать это приложение в качестве отправной точки для своего собственного приложения для Android или обращаться к нему при изменении существующего приложения. Пример кода Face Stylizer размещен на GitHub .
Загрузите код
Следующие инструкции показывают, как создать локальную копию кода примера с помощью инструмента командной строки git .
Чтобы загрузить пример кода:
- Клонируйте репозиторий git, используя следующую команду:
git clone https://github.com/google-ai-edge/mediapipe-samples
- При желании настройте свой экземпляр 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
со стилизацией наиболее заметного лица во входном изображении.
Ниже показан пример выходных данных этой задачи:
Вышеуказанный результат был создан путем применения модели цветного эскиза к следующему входному изображению: