английский | 中文
Оригинальный репозиторий: LivePortrait, авторам спасибо за обмен
Новые возможности:
Обеспечен запуск LivePortrait в режиме реального времени на графическом процессоре RTX 3090 с использованием TensorRT, достигнув скорости 30+ кадров в секунду. Это скорость рендеринга одного кадра, включая предварительную и постобработку, а не только скорость вывода модели.
Реализовано преобразование модели LivePortrait в модель Onnx, обеспечивающее скорость вывода около 70 мс/кадр (~ 12 кадров в секунду) с использованием onnxruntime-gpu на RTX 3090, что облегчает кросс-платформенное развертывание.
Полная поддержка встроенного приложения Gradio с в несколько раз более высокой скоростью и поддержкой одновременного вывода по нескольким лицам и модели животных.
Если вы считаете этот проект полезным, поставьте ему звездочку ✨✨
Журнал изменений
11.08.2024: Оптимизирована скорость вставки_обратно и исправлены некоторые ошибки.
Использовано torchgeometry + cuda для оптимизации функции Paste_back, что значительно повышает скорость. Пример: python run.py --src_image assets/examples/source/s39.jpg --dri_video assets/examples/driving/d0.mp4 --cfg configs/trt_infer.yaml --paste_back --animal
Исправлены проблемы с операциями Xpose, вызывающие ошибки на некоторых графических процессорах и другие ошибки. Используйте последний образ Docker: docker pull shaoguo/faster_liveportrait:v3
07.08.2024: Добавлена поддержка моделей животных и моделей MediaPipe, поэтому вам больше не нужно беспокоиться о проблемах с авторскими правами.
Для использования в Интернете: python app.py --mode trt --mp
или python app.py --mode onnx --mp
Для локальной веб-камеры: python run.py --src_image assets/examples/source/s12.jpg --dri_video 0 --cfg configs/trt_mp_infer.yaml
Загрузите файл ONNX животного: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
, затем преобразуйте его в формат TRT.
Обновите образ Docker: docker pull shaoguo/faster_liveportrait:v3
. Использование модели животного: python run.py --src_image assets/examples/source/s39.jpg --dri_video 0 --cfg configs/trt_infer.yaml --realtime --animal
Пользователи Windows могут загрузить последнюю версию универсального пакета Windows со страницы выпуска, затем распаковать его и использовать.
Простое руководство по использованию:
Добавлена поддержка моделей животных.
Использование модели MediaPipe для замены InsightFace
24.07.2024: Пакет интеграции с Windows, установка не требуется, запуск одним щелчком мыши, поддержка TensorRT и OnnxruntimeGPU. Спасибо @zhanghongyong123456 за вклад в этот выпуск.
Загрузите CUDA 12.2, дважды щелкните exe-файл и установите его, шаг за шагом следуя настройкам по умолчанию.
Загрузите zip-файл cuDNN, распакуйте его и скопируйте папки lib, bin и include из папки cuDNN в папку CUDA 12.2 (по умолчанию — C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2).
[Необязательно] Если вы уже установили CUDA и cuDNN на свой компьютер с Windows, пропустите этот шаг. Я проверил только на CUDA 12.2. Если вы не установили CUDA или столкнулись с ошибками, связанными с CUDA, вам необходимо выполнить следующие действия:
Загрузите не требующий установки пакет интеграции Windows со страницы выпуска и извлеките его.
Войдите в FasterLivePortrait-windows
и дважды щелкните all_onnx2trt.bat
чтобы преобразовать файлы onnx, что займет некоторое время.
Для веб-демо: дважды щелкните app.bat
, откройте веб-страницу: http://localhost:9870/
Для работы камеры в режиме реального времени дважды щелкните camera.bat
и нажмите q
, чтобы остановить. Если вы хотите изменить целевое изображение, запустите в командной строке: camera.bat assets/examples/source/s9.jpg
18.07.2024: добавлена поддержка macOS (Docker не нужен, достаточно Python). Чипы M1/M2 быстрее, но все равно довольно медленные?
Установите ffmpeg: brew install ffmpeg
Настройте виртуальную среду Python 3.10. Рекомендуется использовать miniforge: conda create -n flip python=3.10 && conda activate flip
Требования для установки: pip install -r requirements_macos.txt
Загрузите файлы ONNX: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
Тест: python app.py --mode onnx
17.07.2024: Добавлена поддержка среды Docker, обеспечивающая работоспособный образ.
Вариант 1: Docker (рекомендуется). Образ Docker предоставляется для устранения необходимости устанавливать onnxruntime-gpu и TensorRT вручную.
докер запустить -it --gpus=all --name fast_liveportrait -v $FasterLivePortrait_ROOT:/root/FasterLivePortrait --restart=всегда -p 9870:9870 Шаого/faster_liveportrait:v3 /бин/баш
Установите Docker в соответствии с вашей системой.
Загрузите изображение: docker pull shaoguo/faster_liveportrait:v3
Выполните команду, замените $FasterLivePortrait_ROOT
на локальный каталог, в который вы загрузили FasterLivePortrait:
Вариант 2. Создайте новую виртуальную среду Python и вручную установите необходимые пакеты Python.
Сначала установите ffmpeg
Запустите pip install -r requirements.txt
Затем следуйте инструкциям ниже, чтобы установить onnxruntime-gpu или TensorRT. Обратите внимание, что это тестировалось только в системах Linux.
Сначала загрузите преобразованные файлы модели onnx: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
.
(Игнорируется в Docker). Если вы хотите использовать вывод процессора onnxruntime, просто pip install onnxruntime
. Однако вывод процессора работает очень медленно и не рекомендуется. Последняя версия onnxruntime-gpu по-прежнему не поддерживает Grid_sample cuda, но я нашел ветку, которая ее поддерживает. Выполните следующие действия, чтобы установить onnxruntime-gpu
из исходного кода:
./build.sh --параллельно --build_shared_lib --use_cuda --cuda_version 11.8 --cuda_home /usr/local/cuda --cudnn_home /usr/local/cuda/ --config Релиз --build_wheel --skip_tests --cmake_extra_defines CMAKE_CUDA_ARCHITECTURES="60;70;75;80;86" --cmake_extra_defines CMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc --disable_contrib_ops --allow_running_as_root
pip install build/Linux/Release/dist/onnxruntime_gpu-1.17.0-cp310-cp310-linux_x86_64.whl
git clone https://github.com/microsoft/onnxruntime
git checkout liqun/ImageDecoder-cuda
. Спасибо liqun за Grid_sample с реализацией cuda!
Выполните следующие команды для компиляции, изменив cuda_version
и CMAKE_CUDA_ARCHITECTURES
в соответствии с вашей машиной:
Протестируйте конвейер, используя onnxruntime:
python run.py --src_image assets/examples/source/s10.jpg --dri_video assets/examples/driving/d14.mp4 --cfg configs/onnx_infer.yaml
(Игнорируется в Docker) Установите TensorRT. Запомните путь установки TensorRT.
(Игнорируется в Docker) Установите плагин TensorRTgrid_sample, так как модель использует образец сетки, требующий ввода 5D, который не поддерживается собственным операторомgrid_sample.
git clone https://github.com/SeanWangJS/grid-sample3d-trt-plugin
Измените строку 30 в CMakeLists.txt
на: set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_ARCHITECTURES "60;70;75;80;86")
export PATH=/usr/local/cuda/bin:$PATH
mkdir build && cd build
cmake .. -DTensorRT_ROOT=$TENSORRT_HOME
замените $TENSORRT_HOME собственным корневым каталогом TensorRT.
make
, запомните адрес файла .so, замените /opt/grid-sample3d-trt-plugin/build/libgrid_sample_3d_plugin.so
в scripts/onnx2trt.py
и src/models/predictor.py
на свой собственный путь к файлу .so
Загрузите файлы модели ONNX: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
. Конвертируйте все модели ONNX в TensorRT, запустите sh scripts/all_onnx2trt.sh
и sh scripts/all_onnx2trt_animal.sh
Протестируйте конвейер с помощью tensorrt:
python run.py --src_image assets/examples/source/s10.jpg --dri_video активы/примеры/вождение/d14.mp4 --cfg конфиги/trt_infer.yaml
Чтобы работать в режиме реального времени с помощью камеры:
python run.py --src_image assets/examples/source/s10.jpg --dri_video 0 --cfg конфиги/trt_infer.yaml --в реальном времени
onnxruntime: python app.py --mode onnx
tensorrt: python app.py --mode trt
Порт по умолчанию — 9870. Откройте веб-страницу: http://localhost:9870/
Следите за моим каналом Shipinhao, чтобы получать постоянные обновления моего контента AIGC. Не стесняйтесь писать мне о возможностях сотрудничества.