Inglés | 中文
Repositorio original: LivePortrait, gracias a los autores por compartir
Nuevas características:
Se logró la ejecución en tiempo real de LivePortrait en la GPU RTX 3090 usando TensorRT, alcanzando velocidades de más de 30 FPS. Esta es la velocidad para renderizar un solo cuadro, incluido el procesamiento previo y posterior, no solo la velocidad de inferencia del modelo.
Se implementó la conversión del modelo LivePortrait al modelo Onnx, logrando una velocidad de inferencia de aproximadamente 70 ms/cuadro (~12 FPS) usando onnxruntime-gpu en RTX 3090, lo que facilitó la implementación multiplataforma.
Soporte perfecto para la aplicación nativa de gradio, con una velocidad varias veces más rápida y soporte para inferencia simultánea en múltiples caras y modelos animales.
Si encuentra útil este proyecto, por favor dele una estrella ✨✨
Registro de cambios
11/08/2024: Se optimizó la velocidad de paste_back y se corrigieron algunos errores.
Se utilizó torchgeometry + cuda para optimizar la función paste_back, mejorando significativamente la velocidad. Ejemplo: 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
Se solucionaron problemas con las operaciones Xpose que causaban errores en algunas GPU y otros errores. Utilice la imagen acoplable más reciente: docker pull shaoguo/faster_liveportrait:v3
07/08/2024: Se agregó soporte para modelos animales y modelos MediaPipe, por lo que ya no tendrá que preocuparse por problemas de derechos de autor.
Para uso web: python app.py --mode trt --mp
o python app.py --mode onnx --mp
Para cámara web local: python run.py --src_image assets/examples/source/s12.jpg --dri_video 0 --cfg configs/trt_mp_infer.yaml
Descargue el archivo animal ONNX: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
y luego conviértalo al formato TRT.
Actualice la imagen de Docker: docker pull shaoguo/faster_liveportrait:v3
. Usando modelo animal: python run.py --src_image assets/examples/source/s39.jpg --dri_video 0 --cfg configs/trt_infer.yaml --realtime --animal
Los usuarios de Windows pueden descargar el último paquete todo en uno de Windows desde la página de lanzamiento, luego descomprimirlo y usarlo.
Tutorial de uso sencillo:
Se agregó soporte para modelos animales.
Usando el modelo MediaPipe para reemplazar InsightFace
24/07/2024: Paquete de integración de Windows, no requiere instalación, ejecución con un solo clic, admite TensorRT y OnnxruntimeGPU. Gracias a @zhanghongyong123456 por su contribución en este número.
Descargue CUDA 12.2, haga doble clic en el archivo ejecutable e instálelo siguiendo la configuración predeterminada paso a paso.
Descargue el archivo zip cuDNN, extráigalo y copie las carpetas lib, bin e include de la carpeta cuDNN a la carpeta CUDA 12.2 (el valor predeterminado es C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2)
[Opcional] Si ya ha instalado CUDA y cuDNN en su computadora con Windows, omita este paso. Solo lo he verificado en CUDA 12.2. Si no ha instalado CUDA o encuentra errores relacionados con CUDA, debe seguir estos pasos:
Descargue el paquete de integración de Windows sin instalación desde la página de lanzamiento y extráigalo.
Ingrese FasterLivePortrait-windows
y haga doble clic en all_onnx2trt.bat
para convertir archivos onnx, lo que llevará algún tiempo.
Para demostración web: haga doble clic en app.bat
, abra la página web: http://localhost:9870/
Para operar la cámara en tiempo real, haga doble clic camera.bat
y presione q
para detener. Si desea cambiar la imagen de destino, ejecute en la línea de comando: camera.bat assets/examples/source/s9.jpg
18/07/2024: Se agregó compatibilidad con macOS (no se necesita Docker, Python es suficiente). Los chips M1/M2 son más rápidos, pero siguen siendo bastante lentos.
Instalar ffmpeg: brew install ffmpeg
Configure un entorno virtual Python 3.10. Recomendar el uso de miniforge: conda create -n flip python=3.10 && conda activate flip
Requisitos de instalación: pip install -r requirements_macos.txt
Descargue archivos ONNX: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
Prueba: python app.py --mode onnx
17/07/2024: Se agregó soporte para el entorno Docker, proporcionando una imagen ejecutable.
Opción 1: Docker (recomendado). Se proporciona una imagen de Docker para eliminar la necesidad de instalar onnxruntime-gpu y TensorRT manualmente.
ventana acoplable ejecutar -it --gpus=all --nombre más rápido_liveportrait -v $FasterLivePortrait_ROOT:/root/FasterLivePortrait --reiniciar=siempre -p 9870:9870 shaoguo/faster_liveportrait:v3 /bin/bash
Instale Docker según su sistema
Descargue la imagen: docker pull shaoguo/faster_liveportrait:v3
Ejecute el comando, reemplace $FasterLivePortrait_ROOT
con el directorio local donde descargó FasterLivePortrait:
Opción 2: cree un nuevo entorno virtual de Python e instale los paquetes de Python necesarios manualmente.
Primero, instale ffmpeg
Ejecute pip install -r requirements.txt
Luego siga los tutoriales a continuación para instalar onnxruntime-gpu o TensorRT. Tenga en cuenta que esto sólo se ha probado en sistemas Linux.
Primero, descargue los archivos del modelo onnx convertidos: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
.
(Se ignora en Docker) Si desea utilizar la inferencia de CPU de onnxruntime, simplemente pip install onnxruntime
. Sin embargo, la inferencia de la CPU es extremadamente lenta y no se recomienda. La última versión de onnxruntime-gpu todavía no es compatible con grid_sample cuda, pero encontré una rama que lo admite. Siga estos pasos para instalar onnxruntime-gpu
desde la fuente:
./build.sh --paralelo --build_shared_lib --use_cuda --cuda_versión 11.8 --cuda_home /usr/local/cuda --cudnn_home /usr/local/cuda/ --config Lanzamiento --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
. ¡Gracias a liqun por la implementación de grid_sample con cuda!
Ejecute los siguientes comandos para compilar, cambiando cuda_version
y CMAKE_CUDA_ARCHITECTURES
según su máquina:
Pruebe la canalización usando onnxruntime:
python run.py --src_image assets/examples/source/s10.jpg --dri_video assets/examples/driving/d14.mp4 --cfg configs/onnx_infer.yaml
(Ignorado en Docker) Instale TensorRT. Recuerde la ruta de instalación de TensorRT.
(Se ignora en Docker) Instale el complemento grid_sample TensorRT, ya que el modelo utiliza una muestra de cuadrícula que requiere entrada 5D, que no es compatible con el operador grid_sample nativo.
git clone https://github.com/SeanWangJS/grid-sample3d-trt-plugin
Modifique la línea 30 en CMakeLists.txt
a: 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
, reemplace $TENSORRT_HOME con su propio directorio raíz de TensorRT.
make
, recuerde la dirección del archivo .so, reemplace /opt/grid-sample3d-trt-plugin/build/libgrid_sample_3d_plugin.so
en scripts/onnx2trt.py
y src/models/predictor.py
con su propia ruta del archivo .so
Descargue archivos de modelo ONNX: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
. Convierta todos los modelos ONNX a TensorRT, ejecute sh scripts/all_onnx2trt.sh
y sh scripts/all_onnx2trt_animal.sh
Pruebe la tubería usando tensorrt:
ejecutar python.py --src_image activos/examples/source/s10.jpg --dri_video activos/ejemplos/conducción/d14.mp4 --cfg configuraciones/trt_infer.yaml
Para ejecutar en tiempo real usando una cámara:
ejecutar python.py --src_image activos/examples/source/s10.jpg --dri_video 0 --cfg configuraciones/trt_infer.yaml --tiempo real
onnxruntime: python app.py --mode onnx
tensorrt: python app.py --mode trt
El puerto predeterminado es 9870. Abra la página web: http://localhost:9870/
Siga mi canal shipinhao para obtener actualizaciones continuas sobre mi contenido AIGC. No dude en enviarme un mensaje para conocer oportunidades de colaboración.