feat: init
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +2 -0
- code-5090/.DS_Store +0 -0
- code-5090/5090_依赖.txt +112 -0
- code-5090/Dockerfile +14 -0
- code-5090/README.md +15 -0
- code-5090/README_with_dev.md +47 -0
- code-5090/README_with_internal.md +105 -0
- code-5090/README_with_outer.md +231 -0
- python38.tar.gz → code-5090/aaa.jpg +2 -2
- code-5090/app.c +0 -0
- code-5090/app.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/app.py +244 -0
- code-5090/app_local.c +0 -0
- code-5090/app_local.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/app_local.py +247 -0
- code-5090/app_local_interval.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/batch.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/config/config.ini +23 -0
- code-5090/data/log/dh.log +21 -0
- code-5090/docker-compose.yml +22 -0
- code-5090/face_attr_detect/__init__.py +1 -0
- code-5090/face_attr_detect/face_attr.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_attr_detect/face_attr_epoch_12_220318.onnx +3 -0
- code-5090/face_detect_utils/.DS_Store +0 -0
- code-5090/face_detect_utils/__init__.py +0 -0
- code-5090/face_detect_utils/face_detect.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_detect_utils/head_pose.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_detect_utils/resources/pfpld_robust_sim_bs1_8003.onnx +3 -0
- code-5090/face_detect_utils/resources/scrfd_500m_bnkps_shape640x640.onnx +3 -0
- code-5090/face_detect_utils/scrfd.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_lib/__init__.py +0 -0
- code-5090/face_lib/face_detect_and_align/__init__.py +3 -0
- code-5090/face_lib/face_detect_and_align/face_align_5_landmarks.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_lib/face_detect_and_align/face_align_utils.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_lib/face_detect_and_align/scrfd_insightface/__init__.py +5 -0
- code-5090/face_lib/face_detect_and_align/scrfd_insightface/scrfd.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_lib/face_parsing/__init__.py +6 -0
- code-5090/face_lib/face_parsing/face_parsing_api.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_lib/face_restore/__init__.py +2 -0
- code-5090/face_lib/face_restore/gfpgan_onnx/gfpgan_onnx_api.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_restore_gfpgan_thread_cam_pipeline.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/face_restore_gfpgan_thread_pipeline.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/h_utils/__init__.py +9 -0
- code-5090/h_utils/custom.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/h_utils/obs_client.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/h_utils/request_utils.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/h_utils/sweep_bot.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/h_utils/zip_utils.cpython-39-x86_64-linux-gnu.so +3 -0
- code-5090/http_req/http-client.env.json +14 -0
- code-5090/http_req/http_api.http +18 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.so filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
code-5090/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
code-5090/5090_依赖.txt
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
albucore==0.0.23
|
| 2 |
+
albumentations==2.0.5
|
| 3 |
+
annotated-types==0.7.0
|
| 4 |
+
audioread==3.0.1
|
| 5 |
+
Brotli==1.0.9
|
| 6 |
+
certifi==2025.1.31
|
| 7 |
+
cffi==1.17.1
|
| 8 |
+
charset-normalizer==3.3.2
|
| 9 |
+
coloredlogs==15.0.1
|
| 10 |
+
#contourpy==1.3.1
|
| 11 |
+
cupy-cuda12x==13.4.1
|
| 12 |
+
cycler==0.12.1
|
| 13 |
+
Cython==3.0.12
|
| 14 |
+
decorator==5.2.1
|
| 15 |
+
dominate==2.9.1
|
| 16 |
+
easydict==1.13
|
| 17 |
+
einops==0.8.1
|
| 18 |
+
fastrlock==0.8.3
|
| 19 |
+
ffmpeg==1.4
|
| 20 |
+
filelock==3.13.1
|
| 21 |
+
flatbuffers==25.2.10
|
| 22 |
+
fonttools==4.57.0
|
| 23 |
+
fsspec==2025.3.2
|
| 24 |
+
gmpy2==2.2.1
|
| 25 |
+
huggingface-hub==0.30.2
|
| 26 |
+
humanfriendly==10.0
|
| 27 |
+
idna==3.7
|
| 28 |
+
imageio==2.37.0
|
| 29 |
+
imageio-ffmpeg==0.5.1
|
| 30 |
+
insightface==0.7.3
|
| 31 |
+
Jinja2==3.1.6
|
| 32 |
+
joblib==1.4.2
|
| 33 |
+
kiwisolver==1.4.7
|
| 34 |
+
kornia==0.8.0
|
| 35 |
+
kornia_rs==0.1.8
|
| 36 |
+
lazy_loader==0.4
|
| 37 |
+
librosa==0.11.0
|
| 38 |
+
llvmlite==0.43.0
|
| 39 |
+
lmdb==1.6.2
|
| 40 |
+
MarkupSafe==3.0.2
|
| 41 |
+
matplotlib==3.9.4
|
| 42 |
+
mkl-fft==1.3.1
|
| 43 |
+
mkl-random==1.2.2
|
| 44 |
+
mkl-service==2.4.0
|
| 45 |
+
mpmath==1.3.0
|
| 46 |
+
msgpack==1.1.0
|
| 47 |
+
#networkx==3.2.1
|
| 48 |
+
#numba==0.61.2
|
| 49 |
+
#numpy==2.2.4
|
| 50 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 51 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 52 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 53 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 54 |
+
nvidia-cudnn-cu12==9.8.0.87
|
| 55 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 56 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 57 |
+
nvidia-curand-cu12==10.3.9.55
|
| 58 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 59 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 60 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 61 |
+
nvidia-nccl-cu12==2.26.2
|
| 62 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 63 |
+
nvidia-nvtx-cu12==12.8.55
|
| 64 |
+
onnx==1.17.0
|
| 65 |
+
#onnxruntime-gpu==1.21.0
|
| 66 |
+
opencv-python==4.11.0.86
|
| 67 |
+
opencv-python-headless==4.11.0.86
|
| 68 |
+
packaging==24.2
|
| 69 |
+
pillow==11.1.0
|
| 70 |
+
pip==25.0
|
| 71 |
+
platformdirs==4.3.7
|
| 72 |
+
pooch==1.8.2
|
| 73 |
+
prettytable==3.16.0
|
| 74 |
+
protobuf==6.30.2
|
| 75 |
+
pycparser==2.22
|
| 76 |
+
pydantic==2.11.3
|
| 77 |
+
pydantic_core==2.33.1
|
| 78 |
+
pyparsing==3.2.3
|
| 79 |
+
PySocks==1.7.1
|
| 80 |
+
python-dateutil==2.9.0.post0
|
| 81 |
+
#pytorch-triton==3.3.0+git96316ce5
|
| 82 |
+
PyYAML==6.0.2
|
| 83 |
+
regex==2024.11.6
|
| 84 |
+
requests==2.32.3
|
| 85 |
+
safetensors==0.5.3
|
| 86 |
+
#scikit-image==0.25.2
|
| 87 |
+
scikit-learn==1.6.1
|
| 88 |
+
#scipy==1.15.2
|
| 89 |
+
setuptools==75.8.0
|
| 90 |
+
simsimd==6.2.1
|
| 91 |
+
six==1.16.0
|
| 92 |
+
soundfile==0.13.1
|
| 93 |
+
soxr==0.5.0.post1
|
| 94 |
+
stringzilla==3.12.3
|
| 95 |
+
sympy==1.13.3
|
| 96 |
+
threadpoolctl==3.6.0
|
| 97 |
+
#tifffile==2025.3.30
|
| 98 |
+
timm==1.0.15
|
| 99 |
+
tokenizers==0.20.3
|
| 100 |
+
#torch==2.8.0.dev20250408+cu128
|
| 101 |
+
#torchaudio==2.6.0.dev20250408+cu128
|
| 102 |
+
#torchvision==0.22.0.dev20250408+cu128
|
| 103 |
+
tqdm==4.67.1
|
| 104 |
+
transformers==4.46.2
|
| 105 |
+
triton==3.1.0
|
| 106 |
+
typeguard==2.13.3
|
| 107 |
+
typing_extensions==4.12.2
|
| 108 |
+
typing-inspection==0.4.0
|
| 109 |
+
urllib3==2.3.0
|
| 110 |
+
wcwidth==0.2.13
|
| 111 |
+
wheel==0.45.1
|
| 112 |
+
xformers==0.0.30.dev1005
|
code-5090/Dockerfile
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM nvidia/cuda:11.6.1-base-ubuntu20.04
|
| 2 |
+
|
| 3 |
+
# 还需要一个chk.tar.gz
|
| 4 |
+
WORKDIR /code
|
| 5 |
+
COPY . /code
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
RUN pip install --upgrade -r /code/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ --timeout 600
|
| 9 |
+
|
| 10 |
+
# 6、运行服务
|
| 11 |
+
#CMD ["uvicorn", "http_api2:app", "--host", "0.0.0.0", "--port", "80"]
|
| 12 |
+
EXPOSE 22
|
| 13 |
+
EXPOSE 80
|
| 14 |
+
CMD /usr/sbin/sshd -D
|
code-5090/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## 表情驱动
|
| 2 |
+
|
| 3 |
+
#1.入口
|
| 4 |
+
main.py
|
| 5 |
+
|
| 6 |
+
# 安装1.虚拟环境
|
| 7 |
+
conda env create -f requirements.yaml
|
| 8 |
+
# 安装2.nvdiffrast,进入项目根目录
|
| 9 |
+
cd Deep3DFaceRecon_pytorch/nvdiffrast_bk
|
| 10 |
+
|
| 11 |
+
python setup.py install
|
| 12 |
+
# 测试流程
|
| 13 |
+
python main.py
|
| 14 |
+
# 输出目录
|
| 15 |
+
test_data/output
|
code-5090/README_with_dev.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
##1.提交镜像并push到服务器上
|
| 2 |
+
### sdk
|
| 3 |
+
<pre><code>
|
| 4 |
+
原始镜像: face2face_train:0.0.1_origin_sdk(12.1G)
|
| 5 |
+
镜像保存为tar文件: docker save -o face2faceweb.tar bedcce862ec3
|
| 6 |
+
从当前容器生成镜像:
|
| 7 |
+
docker commit -m="facesdk init" -a="jc" <containerId> face2facesdk:<version>
|
| 8 |
+
将新镜像推到docker服务器上:
|
| 9 |
+
# 1. 先把本地镜像名称和tag改成公司仓库的名称
|
| 10 |
+
docker tag face2facesdk:<version> base.image.docker:5000/python/face2face_train:<version>_sdk
|
| 11 |
+
# 2. 推送修改后的镜像到公司仓库
|
| 12 |
+
docker push base.image.docker:5000/python/face2face_train:<version>_sdk
|
| 13 |
+
|
| 14 |
+
base.image.docker:5000/python/face2face_train:0.0.3_sdk 13.1G
|
| 15 |
+
python app_local.py
|
| 16 |
+
</code></pre>
|
| 17 |
+
### sdk slim
|
| 18 |
+
从源镜像到slim:
|
| 19 |
+
1.pip install Cython -i https://pypi.tuna.tsinghua.edu.cn/simple
|
| 20 |
+
2.执行package: https://digital-public.obs.cn-east-3.myhuaweicloud.com/vpp/1batchSynth/2/packaging_script.py
|
| 21 |
+
3. 删除build下面的临时so包
|
| 22 |
+
<pre><code
|
| 23 |
+
docker commit -m="facesdk_slim init" -a="jc" <containerId> face2facesdk_slim:<version>
|
| 24 |
+
docker tag face2facesdk_slim:<version> base.image.docker:5000/python/face2face_train:<version>_sdk_slim
|
| 25 |
+
docker push base.image.docker:5000/python/face2face_train:<version>_sdk_slim
|
| 26 |
+
</code></pre>
|
| 27 |
+
### web
|
| 28 |
+
<pre><code>
|
| 29 |
+
docker commit -m="faceweb init" -a="jc" <containerId> face2faceweb:<version>
|
| 30 |
+
docker tag face2faceweb:<version> base.image.docker:5000/python/face2face_train:<version>_web
|
| 31 |
+
docker push base.image.docker:5000/python/face2face_train:<version>_web 550M
|
| 32 |
+
python -m gradio_web.gradio_test
|
| 33 |
+
</code></pre>
|
| 34 |
+
|
| 35 |
+
## 2.依赖项
|
| 36 |
+
```shell script
|
| 37 |
+
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
|
| 38 |
+
pip install opencv-python-headless opencv-contrib-python-headless librosa onnxruntime-gpu einops cv2box -i https://mirrors.aliyun.com/pypi/simple
|
| 39 |
+
pip install scikit-image matplotlib pyyaml apstone numexpr flask -i https://mirrors.aliyun.com/pypi/simple
|
| 40 |
+
pip install typeguard==2.13.3 -i https://mirrors.aliyun.com/pypi/simple
|
| 41 |
+
|
| 42 |
+
365 248 275 7h4no3 GJ20230901
|
| 43 |
+
guiji123
|
| 44 |
+
180.96.14.117 base.image.docker
|
| 45 |
+
docker login base.image.docker:5000
|
| 46 |
+
admin/Guiji@123!
|
| 47 |
+
```
|
code-5090/README_with_internal.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## Build And Deploy
|
| 2 |
+
|
| 3 |
+
###1.环境要求
|
| 4 |
+
需要docker
|
| 5 |
+
|
| 6 |
+
###2.拉取镜像
|
| 7 |
+
算法镜像(13.1G): ```sudo docker pull base.image.docker:5000/python/face2face_train:0.0.2_sdk```
|
| 8 |
+
算法镜像(13.9G): ```sudo docker pull base.image.docker:5000/python/face2face_train:0.0.1_sdk_slim```
|
| 9 |
+
web镜像(550M): ```sudo docker pull base.image.docker:5000/python/face2face_train:0.0.2_web```
|
| 10 |
+
|
| 11 |
+
###3.创建共享目录及配置
|
| 12 |
+
####1.创建共享目录
|
| 13 |
+
sudo mkdir -p /data/face2face/web /data/face2face/sdk
|
| 14 |
+
####2.web配置: /data/face2face/web/config.ini
|
| 15 |
+
<pre><code>
|
| 16 |
+
[path]
|
| 17 |
+
log=/code/data/log
|
| 18 |
+
temp=/code/data/temp
|
| 19 |
+
file_name=face2face_web.log
|
| 20 |
+
|
| 21 |
+
[face2face]
|
| 22 |
+
submit_url=http://<实际宿主机>:8383/easy/submit
|
| 23 |
+
query_url=http://<实际宿主机>:8383/easy/query
|
| 24 |
+
</code></pre>
|
| 25 |
+
####3.sdk配置: /data/face2face/sdk/config.ini
|
| 26 |
+
<pre><code>
|
| 27 |
+
[log]
|
| 28 |
+
log_dir = /code/data/log
|
| 29 |
+
log_file = dh.log
|
| 30 |
+
|
| 31 |
+
[http_server]
|
| 32 |
+
server_ip = 0.0.0.0
|
| 33 |
+
server_port = 8383
|
| 34 |
+
|
| 35 |
+
[temp]
|
| 36 |
+
temp_dir = /code/data/temp
|
| 37 |
+
clean_switch = 1
|
| 38 |
+
|
| 39 |
+
[result]
|
| 40 |
+
result_dir = /code/data/result
|
| 41 |
+
clean_switch = 0
|
| 42 |
+
|
| 43 |
+
[digital]
|
| 44 |
+
batch_size = 4
|
| 45 |
+
|
| 46 |
+
</code></pre>
|
| 47 |
+
|
| 48 |
+
###4.启动镜像
|
| 49 |
+
算法镜像:
|
| 50 |
+
<pre><code>
|
| 51 |
+
sudo docker run -v /data/face2face:/code/data -v /data/face2face/sdk/config.ini:/code/config/config.ini -e PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 \
|
| 52 |
+
--gpus all --shm-size 8G -itd --name facesdk -p 8383:8383 \
|
| 53 |
+
base.image.docker:5000/python/face2face_train:0.0.3_sdk python /code/app_local.py
|
| 54 |
+
</code></pre>
|
| 55 |
+
算法slim镜像:
|
| 56 |
+
<pre><code>
|
| 57 |
+
sudo docker run -v /data/face2face:/code/data -v /data/face2face/sdk/config.ini:/code/config/config.ini -e PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 \
|
| 58 |
+
--gpus all --shm-size 8G -itd --name facesdk -p 8383:8383 \
|
| 59 |
+
base.image.docker:5000/python/face2face_train:0.0.1_sdk_slim python /code/app_local.py
|
| 60 |
+
</code></pre>
|
| 61 |
+
web镜像:
|
| 62 |
+
<pre><code>
|
| 63 |
+
docker run -v /data/face2face:/code/data -v /data/face2face/web/config.ini:/code/config.ini \
|
| 64 |
+
-itd --name faceweb -p 7862:7862 \
|
| 65 |
+
base.image.docker:5000/python/face2face_train:0.0.2_web python -m gradio_web.gradio_test
|
| 66 |
+
</code></pre>
|
| 67 |
+
###5.验证
|
| 68 |
+
打开浏览器,输入 http://127.0.0.1:7862 即可打开合成页面
|
| 69 |
+
###6.输出目录
|
| 70 |
+
/data/face2face/result
|
| 71 |
+
页面也可以直接下载
|
| 72 |
+
###7.停止服务
|
| 73 |
+
sudo docker stop faceweb && sudo docker rm faceweb
|
| 74 |
+
sudo docker stop facesdk && sudo docker rm facesdk
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
## 遇到的问题及解决方案
|
| 78 |
+
Q:docker run 提示 libnvidia-ml.so.1:file exists: unknown
|
| 79 |
+
A:需要把cuda相关数据删除:
|
| 80 |
+
a.删除/etc/docker/daemon.json中与nvidia相关的内容,其中删除default-runtime和runtimes两个key对应的数据
|
| 81 |
+
<pre><code>
|
| 82 |
+
{
|
| 83 |
+
"default-runtime": "nvidia", # 需要删除
|
| 84 |
+
"runtimes": { # 需要删除
|
| 85 |
+
"nvidia": { # 需要删除
|
| 86 |
+
"path": "nvidia-container-runtime", # 需要删除
|
| 87 |
+
"runtimeArgs": [] # 需要删除
|
| 88 |
+
} # 需要删除
|
| 89 |
+
}, # 需要删除
|
| 90 |
+
"registry-mirrors": ["https://nq12ot3x.mirror.aliyuncs.com"],
|
| 91 |
+
"insecure-registries":["base.image.docker:5080","base.image.docker:5000"],
|
| 92 |
+
"data-root": "/home/docker",
|
| 93 |
+
"log-driver":"json-file",
|
| 94 |
+
"log-opts":{ "max-size" :"100m","max-file":"10"}
|
| 95 |
+
}
|
| 96 |
+
</code></pre>
|
| 97 |
+
b.从当前image中构建新image同时删除libnvidia-ml.so.1、libcuda.so.1和libcudadebugger.so.1三个文件
|
| 98 |
+
<pre><code>
|
| 99 |
+
FROM <当前imageId>
|
| 100 |
+
RUN rm -rf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcudadebugger.so.1
|
| 101 |
+
</code></pre>
|
| 102 |
+
|
| 103 |
+
|
| 104 |
+
|
| 105 |
+
|
code-5090/README_with_outer.md
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<a name="top"></a>
|
| 2 |
+
## build on window with wsl and ubuntu
|
| 3 |
+
文档总共分为以下几个部分:
|
| 4 |
+
1.[安装、部署及卸载](#first)
|
| 5 |
+
2.[测试效果、效率、资源损耗](#second)
|
| 6 |
+
3.[web页面使用说明](#third)
|
| 7 |
+
4.[本地SDK调用](#fourth)
|
| 8 |
+
|
| 9 |
+
<a name="first"></a>
|
| 10 |
+
## 安装、部署及卸载
|
| 11 |
+
### 一.环境要求及授权
|
| 12 |
+
a.带nvidia显卡的操作系统,显卡型号3080及以上(其他nvidia显卡也可以,效率上会受影响),显存最小8G,cuda11.6及以上
|
| 13 |
+
b.docker需要的环境:
|
| 14 |
+
- 虚拟ubuntu环境:
|
| 15 |
+
- 可以是通过wsl安装的ubuntu,也可以是通过vmware安装的
|
| 16 |
+
- 安装docker: [Install Docker Engine on Ubuntu ](https://docs.docker.com/engine/install/ubuntu/)
|
| 17 |
+
- 验证docker: ```sudo docker ps ```
|
| 18 |
+
- 安装nvidia-container-runtime: [install the nvidia-container-runtime](https://nvidia.github.io/nvidia-container-runtime/)
|
| 19 |
+
- 验证nvidia-container-runtime: ```sudo nvidia-container-runtime --vesion```
|
| 20 |
+
- 完整性验证: ```sudo docker run -it --rm --gpus all hello-world```
|
| 21 |
+
- powershell环境:
|
| 22 |
+
- 安装docker: [Install Docker Desktop on Windows] (https://docs.docker.com/desktop/install/windows-install/) 安装之后会重启操作系统
|
| 23 |
+
- 安装nvidia-container-runtime: [Installing CUDA Development Tools](https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/#download-the-nvidia-cuda-toolkit)
|
| 24 |
+
- 完整性验证: ``` docker run -it --rm --gpus all hello-world```
|
| 25 |
+
|
| 26 |
+
c.授权license(咨询服务联系人):服务启动时需要指定license.txt文件, 请提供mac地址、显卡id
|
| 27 |
+
注:服务首次启动时,必须连接外网进行首次激活,激活地址见sdk得配置文件
|
| 28 |
+
### 二.拉取镜像
|
| 29 |
+
算法镜像(13.4G): ```sudo docker pull base.image.docker:5000/python/face2face_train:0.0.7_sdk_slim```
|
| 30 |
+
web镜像(550M): ```sudo docker pull base.image.docker:5000/python/face2face_train:0.0.4_web```
|
| 31 |
+
powershell 环境: ```sudo```命令可以不要,直接执行docker及其后面的命令即可
|
| 32 |
+
|
| 33 |
+
### 三.创建共享目录及配置
|
| 34 |
+
#### 1.创建共享目录
|
| 35 |
+
sudo mkdir -p /data/face2face/web /data/face2face/sdk
|
| 36 |
+
on powershell: 创建共享目录 F:\var\f2f\web、F:\var\f2f\sdk
|
| 37 |
+
#### 2.web配置: /data/face2face/web/config.ini
|
| 38 |
+
<pre><code>
|
| 39 |
+
[path]
|
| 40 |
+
log=/code/data/log
|
| 41 |
+
temp=/code/data/temp
|
| 42 |
+
file_name=face2face_web.log
|
| 43 |
+
|
| 44 |
+
[face2face]
|
| 45 |
+
submit_url=http://<实际宿主机ip>:8383/easy/submit
|
| 46 |
+
query_url=http://<实际宿主机ip>:8383/easy/query
|
| 47 |
+
</code></pre>
|
| 48 |
+
#### 3.sdk配置: /data/face2face/sdk/config.ini
|
| 49 |
+
<pre><code>
|
| 50 |
+
[log]
|
| 51 |
+
log_dir = /code/data/log
|
| 52 |
+
log_file = dh.log
|
| 53 |
+
|
| 54 |
+
[http_server]
|
| 55 |
+
server_ip = 0.0.0.0
|
| 56 |
+
server_port = 8383
|
| 57 |
+
|
| 58 |
+
[temp]
|
| 59 |
+
temp_dir = /code/data/temp
|
| 60 |
+
clean_switch = 1
|
| 61 |
+
|
| 62 |
+
[result]
|
| 63 |
+
result_dir = /code/data/result
|
| 64 |
+
clean_switch = 0
|
| 65 |
+
|
| 66 |
+
[digital]
|
| 67 |
+
batch_size = 4
|
| 68 |
+
|
| 69 |
+
[register]
|
| 70 |
+
url = http://172.16.160.51:12120
|
| 71 |
+
|
| 72 |
+
</code></pre>
|
| 73 |
+
#### 4.license.txt: /data/face2face/sdk/config.ini
|
| 74 |
+
将license.txt放到共享目录: /data/face2face/sdk
|
| 75 |
+
on powershell: F:\var\f2f\sdk
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
### 四.启动镜像
|
| 79 |
+
算法镜像:
|
| 80 |
+
- on ubuntu :
|
| 81 |
+
<pre><code>
|
| 82 |
+
sudo docker run -v /data/face2face:/code/data -v /data/face2face/sdk/config.ini:/code/config/config.ini -v /data/face2face/sdk/license.txt:/code/license.txt -e PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 \
|
| 83 |
+
--gpus all --shm-size 8G -itd --name facesdk -p 8383:8383 \
|
| 84 |
+
base.image.docker:5000/python/face2face_train:0.0.5_sdk_slim python /code/app_local.py
|
| 85 |
+
</code></pre>
|
| 86 |
+
- on powershell :
|
| 87 |
+
```shell script
|
| 88 |
+
docker run -v F:\var\f2f:/code/data -v F:\var\f2f\sdk/config.ini:/code/config/config.ini -v F:\var\f2f\sdk/license.txt:/code/license.txt -e PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 \
|
| 89 |
+
--gpus all --shm-size 8G -itd --name facesdk -p 8383:8383 \
|
| 90 |
+
base.image.docker:5000/python/face2face_train:0.0.5_sdk_slim python /code/app_local.py
|
| 91 |
+
```
|
| 92 |
+
web镜像 :
|
| 93 |
+
- on ubuntu:
|
| 94 |
+
<pre><code>
|
| 95 |
+
sudo docker run -v /data/face2face:/code/data -v /data/face2face/web/config.ini:/code/config.ini \
|
| 96 |
+
-itd --name faceweb -p 7862:7862 \
|
| 97 |
+
base.image.docker:5000/python/face2face_train:0.0.4_web python -m gradio_web.gradio_test
|
| 98 |
+
</code></pre>
|
| 99 |
+
- on powershell
|
| 100 |
+
<pre><code>
|
| 101 |
+
docker run -v F:\var\f2f:/code/data -v F:\var\f2f\sdk/config.ini:/code/config.ini \
|
| 102 |
+
-itd --name faceweb -p 7862:7862 \
|
| 103 |
+
base.image.docker:5000/python/face2face_train:0.0.4_web python -m gradio_web.gradio_test
|
| 104 |
+
</code></pre>
|
| 105 |
+
|
| 106 |
+
### 五.验证
|
| 107 |
+
打开浏览器,输入 http://127.0.0.1:7862 即可打开合成页面
|
| 108 |
+
### 六.输出目录
|
| 109 |
+
/data/face2face/result
|
| 110 |
+
on powershell: F:\var\f2f\result
|
| 111 |
+
### 七.停止服务
|
| 112 |
+
sudo docker stop faceweb && sudo docker rm faceweb
|
| 113 |
+
sudo docker stop facesdk && sudo docker rm facesdk
|
| 114 |
+
powershell 环境: ```sudo```命令可以不要,直接执行docker及其后面的命令即可
|
| 115 |
+
<a name="second"></a>
|
| 116 |
+
## 测试效果、效率、资源损耗
|
| 117 |
+
1.测试环境
|
| 118 |
+
显卡:NVIDIA Geforce RTX 3090 24G cuda:12.0
|
| 119 |
+
cpu:Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz
|
| 120 |
+
内存:251G
|
| 121 |
+
2.测试耗时如下:
|
| 122 |
+
|
| 123 |
+
| 视频 | 音频| 超分 |合成耗时 | 耗时比例(音频时长:耗时) |
|
| 124 |
+
| --- | --- | --- | --- | --- |
|
| 125 |
+
| 124s 25fps 1920*1080 10049kbps | 10s 44.1khz pcm_s161e stereo 1411kb/s | 否 | 36.569s | 1:3.657 |
|
| 126 |
+
| 124s 25fps 1920*1080 10049kbps | 30s 44.1khz pcm_s161e stereo 1411kb/s | 否 | 83.434s | 1:2.781 |
|
| 127 |
+
| 124s 25fps 1920*1080 10049kbps | 60s 44.1khz pcm_s161e stereo 1411kb/s | 否 | 125.672s | 1:2.094 |
|
| 128 |
+
| 124s 25fps 1920*1080 10116kbps | 10s 44.1khz pcm_s161e stereo 1411kb/s | 是 | 41.870s | 1:4.187 |
|
| 129 |
+
| 124s 25fps 1920*1080 10116kbps | 30s 44.1khz pcm_s161e stereo 1411kb/s | 是 | 99.241s | 1:3.308 |
|
| 130 |
+
| 124s 50fps 1920*1080 10049kbps | 10s 44.1khz pcm_s161e stereo 1411kb/s | 否 | 54.575s | 1:5.457 |
|
| 131 |
+
| 124s 50fps 1920*1080 10049kbps | 30s 44.1khz pcm_s161e stereo 1411kb/s | 否 | 126.264s | 1:4.208 |
|
| 132 |
+
| 124s 50fps 1920*1080 10116kbps | 10s 44.1khz pcm_s161e stereo 1411kb/s | 是 | 72.791s | 1:7.279 |
|
| 133 |
+
| 124s 50fps 1920*1080 10116kbps | 30s 44.1khz pcm_s161e stereo 1411kb/s | 是 | 188.021s | 1:6.267 |
|
| 134 |
+
|
| 135 |
+
3.测试结论:
|
| 136 |
+
a.资源损耗:
|
| 137 |
+
- 显存: sdk启动时,需要加载模型,显存最高到达10.4G;稳定运行时显存不超过7G
|
| 138 |
+
- 内存: 最大4G
|
| 139 |
+
- cpu: 最大16c
|
| 140 |
+
|
| 141 |
+
b.合成效率:影响合成效率的因素主要有原始视频是否清晰、原始视频的帧率、音频时长
|
| 142 |
+
|
| 143 |
+
<a name="third"></a>
|
| 144 |
+
## web页面使用说明
|
| 145 |
+

|
| 146 |
+
|
| 147 |
+
页面使用简单,主要分为左右两个模块,左侧上传模块和右侧结果模块,合成主要分为三个步骤:
|
| 148 |
+
1.上传模块中需要用户点击上传视频和音频:
|
| 149 |
+
- 视频支持mp4格式、360p~4K、H264编码,同时建议上传正面、单人脸、无遮挡视频
|
| 150 |
+
- 音频支持wav格式,建议音频为实际说话人声,无背景音,不然会影响最终的口型效果
|
| 151 |
+
|
| 152 |
+
2.点击submit按钮,即可进入合成中。
|
| 153 |
+
3.只需要等待一会,合成结束后结果会在右侧展示,支持结果下载与预览
|
| 154 |
+
<a name="fourth"></a>
|
| 155 |
+
## 本地SDK调用
|
| 156 |
+
前提:本地成功部署了base.image.docker:5000/python/face2face_train:0.0.4_sdk_slim并启动成功
|
| 157 |
+
### Submit a task
|
| 158 |
+
request:
|
| 159 |
+
其中audio_url和video_url对于链接和本地文件均支持,本地文件时将文件放置在sdk的共享目录即可
|
| 160 |
+
<pre><code>
|
| 161 |
+
POST http://127.0.0.1:8383/easy/submit
|
| 162 |
+
Content-Type: application/json
|
| 163 |
+
|
| 164 |
+
{
|
| 165 |
+
"audio_url": "https://digital-public.obs.cn-east-3.myhuaweicloud.com/vpp/1batchSynth/2/10s.wav",
|
| 166 |
+
"video_url": "https://digital-public.obs.cn-east-3.myhuaweicloud.com/vpp/1batchSynth/2/leader_nv.mp4",
|
| 167 |
+
"code": "146"
|
| 168 |
+
}
|
| 169 |
+
</code></pre>
|
| 170 |
+
|
| 171 |
+
response:
|
| 172 |
+
<pre><code>
|
| 173 |
+
{
|
| 174 |
+
"code": 10000,
|
| 175 |
+
"data": {},
|
| 176 |
+
"msg": 10000,
|
| 177 |
+
"success": true
|
| 178 |
+
}
|
| 179 |
+
</code></pre>
|
| 180 |
+
|
| 181 |
+
### Qeury a task by code
|
| 182 |
+
request:
|
| 183 |
+
<pre><code>
|
| 184 |
+
GET http://127.0.0.1:8383/easy/query?code=146
|
| 185 |
+
</code></pre>
|
| 186 |
+
response:
|
| 187 |
+
查询结果总共分为三个阶段,建议轮询结果
|
| 188 |
+
当progress为100并且存在result时,则表示结果正确
|
| 189 |
+
<pre><code>
|
| 190 |
+
{
|
| 191 |
+
"code": 10000,
|
| 192 |
+
"data": {
|
| 193 |
+
"code": "146",
|
| 194 |
+
"msg": "文件下载完成",
|
| 195 |
+
"progress": 10,
|
| 196 |
+
"result": "",
|
| 197 |
+
"status": 1
|
| 198 |
+
},
|
| 199 |
+
"msg": "",
|
| 200 |
+
"success": true
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
{
|
| 204 |
+
"code": 10000,
|
| 205 |
+
"data": {
|
| 206 |
+
"code": "146",
|
| 207 |
+
"msg": "音频特征提取完成",
|
| 208 |
+
"progress": 20,
|
| 209 |
+
"result": "",
|
| 210 |
+
"status": 1
|
| 211 |
+
},
|
| 212 |
+
"msg": "",
|
| 213 |
+
"success": true
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
{
|
| 217 |
+
"code": 10000,
|
| 218 |
+
"data": {
|
| 219 |
+
"code": "146",
|
| 220 |
+
"msg": "任务完成",
|
| 221 |
+
"progress": 100,
|
| 222 |
+
"result": "/code/data/result/146-r.mp4",
|
| 223 |
+
"status": 2
|
| 224 |
+
},
|
| 225 |
+
"msg": "",
|
| 226 |
+
"success": true
|
| 227 |
+
}
|
| 228 |
+
</code></pre>
|
| 229 |
+
|
| 230 |
+
[回到顶部](#top)
|
| 231 |
+
|
python38.tar.gz → code-5090/aaa.jpg
RENAMED
|
File without changes
|
code-5090/app.c
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
code-5090/app.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bbd105b591693e9a22ad37a0605382f963d619cefd0cf113606e4f9cf110f453
|
| 3 |
+
size 1435288
|
code-5090/app.py
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/user/bin/env python
|
| 2 |
+
# coding=utf-8
|
| 3 |
+
"""
|
| 4 |
+
@project : face2face_train
|
| 5 |
+
@author : huyi
|
| 6 |
+
@file : app.py
|
| 7 |
+
@ide : PyCharm
|
| 8 |
+
@time : 2023-12-06 19:04:21
|
| 9 |
+
"""
|
| 10 |
+
import os
|
| 11 |
+
|
| 12 |
+
os.chdir('/code')
|
| 13 |
+
import time
|
| 14 |
+
import traceback
|
| 15 |
+
from enum import Enum
|
| 16 |
+
|
| 17 |
+
from h_utils.custom import CustomError
|
| 18 |
+
from y_utils.logger import logger
|
| 19 |
+
from flask import Flask, request
|
| 20 |
+
from y_utils.config import GlobalConfig
|
| 21 |
+
from service.trans_dh_service import TransDhTask, Status
|
| 22 |
+
|
| 23 |
+
import json
|
| 24 |
+
import uuid
|
| 25 |
+
import threading
|
| 26 |
+
import gc
|
| 27 |
+
|
| 28 |
+
app = Flask(__name__)
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
class EasyResponse:
|
| 32 |
+
def __init__(
|
| 33 |
+
self,
|
| 34 |
+
code,
|
| 35 |
+
success,
|
| 36 |
+
msg, data: dict):
|
| 37 |
+
self.code = code
|
| 38 |
+
self.success = success
|
| 39 |
+
self.msg = msg
|
| 40 |
+
self.data = data
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
class ResponseCode(Enum):
|
| 44 |
+
system_error = [9999, '系统异常']
|
| 45 |
+
success = [10000, '成功']
|
| 46 |
+
busy = [10001, '忙碌中']
|
| 47 |
+
error1 = [10002, '参数异常']
|
| 48 |
+
error2 = [10003, '获取锁异常']
|
| 49 |
+
error3 = [10004, '任务不存在']
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
@app.route('/easy/submit', methods=['POST'])
|
| 53 |
+
def easy_submit():
|
| 54 |
+
request_data = json.loads(request.data)
|
| 55 |
+
try:
|
| 56 |
+
if 'audio_url' not in request_data or request_data['audio_url'] == '':
|
| 57 |
+
return json.dumps(
|
| 58 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'audio_url参数缺失', {}),
|
| 59 |
+
default=lambda obj: obj.__dict__,
|
| 60 |
+
sort_keys=True, ensure_ascii=False,
|
| 61 |
+
indent=4)
|
| 62 |
+
if 'video_url' not in request_data or request_data['video_url'] == '':
|
| 63 |
+
return json.dumps(
|
| 64 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'video_url参数缺失', {}),
|
| 65 |
+
default=lambda obj: obj.__dict__,
|
| 66 |
+
sort_keys=True, ensure_ascii=False,
|
| 67 |
+
indent=4)
|
| 68 |
+
if 'code' not in request_data or request_data['code'] == '':
|
| 69 |
+
return json.dumps(
|
| 70 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'code参数缺失', {}),
|
| 71 |
+
default=lambda obj: obj.__dict__,
|
| 72 |
+
sort_keys=True, ensure_ascii=False,
|
| 73 |
+
indent=4)
|
| 74 |
+
_audio_url = request_data['audio_url']
|
| 75 |
+
_video_url = request_data['video_url']
|
| 76 |
+
_code = request_data['code']
|
| 77 |
+
if 'watermark_switch' not in request_data or request_data['watermark_switch'] == '':
|
| 78 |
+
_watermark_switch = 0
|
| 79 |
+
else:
|
| 80 |
+
if str(request_data['watermark_switch']) == '1':
|
| 81 |
+
_watermark_switch = 1
|
| 82 |
+
else:
|
| 83 |
+
_watermark_switch = 0
|
| 84 |
+
if 'digital_auth' not in request_data or request_data['digital_auth'] == '':
|
| 85 |
+
_digital_auth = 0
|
| 86 |
+
else:
|
| 87 |
+
if str(request_data['digital_auth']) == '1':
|
| 88 |
+
_digital_auth = 1
|
| 89 |
+
else:
|
| 90 |
+
_digital_auth = 0
|
| 91 |
+
if 'chaofen' not in request_data or request_data['chaofen'] == '':
|
| 92 |
+
_chaofen = 0
|
| 93 |
+
else:
|
| 94 |
+
if str(request_data['chaofen']) == '1':
|
| 95 |
+
_chaofen = 1
|
| 96 |
+
else:
|
| 97 |
+
_chaofen = 0
|
| 98 |
+
if TransDhTask.instance().run_flag:
|
| 99 |
+
return json.dumps(
|
| 100 |
+
EasyResponse(ResponseCode.busy.value[0], True, ResponseCode.busy.value[1], {}),
|
| 101 |
+
default=lambda obj: obj.__dict__,
|
| 102 |
+
sort_keys=True, ensure_ascii=False,
|
| 103 |
+
indent=4)
|
| 104 |
+
if 'pn' not in request_data or request_data['pn'] == '':
|
| 105 |
+
_pn = 0
|
| 106 |
+
else:
|
| 107 |
+
if str(request_data['pn']) == '1':
|
| 108 |
+
_pn = 1
|
| 109 |
+
else:
|
| 110 |
+
_pn = 0
|
| 111 |
+
if TransDhTask.instance().run_flag:
|
| 112 |
+
return json.dumps(
|
| 113 |
+
EasyResponse(ResponseCode.busy.value[0], True, ResponseCode.busy.value[1], {}),
|
| 114 |
+
default=lambda obj: obj.__dict__,
|
| 115 |
+
sort_keys=True, ensure_ascii=False,
|
| 116 |
+
indent=4)
|
| 117 |
+
else:
|
| 118 |
+
try:
|
| 119 |
+
TransDhTask.instance().run_lock.acquire()
|
| 120 |
+
TransDhTask.instance().run_flag = True
|
| 121 |
+
TransDhTask.instance().task_dic[_code] = (Status.run, 0, '', '')
|
| 122 |
+
except Exception as e:
|
| 123 |
+
traceback.print_exc()
|
| 124 |
+
return json.dumps(
|
| 125 |
+
EasyResponse(ResponseCode.error2.value[0], False, ResponseCode.error2.value[1], {}),
|
| 126 |
+
default=lambda obj: obj.__dict__,
|
| 127 |
+
sort_keys=True, ensure_ascii=False,
|
| 128 |
+
indent=4)
|
| 129 |
+
finally:
|
| 130 |
+
TransDhTask.instance().run_lock.release()
|
| 131 |
+
threading.Thread(
|
| 132 |
+
target=TransDhTask.instance().work,
|
| 133 |
+
args=(_audio_url, _video_url, _code, _watermark_switch, _digital_auth, _chaofen, _pn)).start()
|
| 134 |
+
return json.dumps(
|
| 135 |
+
EasyResponse(ResponseCode.success.value[0], True, ResponseCode.success.value[0], {}),
|
| 136 |
+
default=lambda obj: obj.__dict__,
|
| 137 |
+
sort_keys=True, ensure_ascii=False,
|
| 138 |
+
indent=4)
|
| 139 |
+
except Exception as e:
|
| 140 |
+
traceback.print_exc()
|
| 141 |
+
return json.dumps(
|
| 142 |
+
EasyResponse(ResponseCode.system_error.value[0], False, ResponseCode.system_error.value[1], {}),
|
| 143 |
+
default=lambda obj: obj.__dict__,
|
| 144 |
+
sort_keys=True, ensure_ascii=False,
|
| 145 |
+
indent=4)
|
| 146 |
+
finally:
|
| 147 |
+
gc.collect()
|
| 148 |
+
|
| 149 |
+
|
| 150 |
+
@app.route('/easy/query', methods=['GET'])
|
| 151 |
+
def easy_query():
|
| 152 |
+
del_flag = False
|
| 153 |
+
get_data = request.args.to_dict()
|
| 154 |
+
try:
|
| 155 |
+
if get_data.get('code') is None and get_data.get('code') == '':
|
| 156 |
+
return json.dumps(
|
| 157 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'code参数缺失', {}),
|
| 158 |
+
default=lambda obj: obj.__dict__,
|
| 159 |
+
sort_keys=True, ensure_ascii=False,
|
| 160 |
+
indent=4)
|
| 161 |
+
_code = get_data.get('code')
|
| 162 |
+
if _code in TransDhTask.instance().task_dic:
|
| 163 |
+
_status, _progress, _result, _msg = TransDhTask.instance().task_dic[_code]
|
| 164 |
+
if _status == Status.run:
|
| 165 |
+
return json.dumps(
|
| 166 |
+
EasyResponse(ResponseCode.success.value[0], True, '', {
|
| 167 |
+
'code': _code,
|
| 168 |
+
'status': _status.value,
|
| 169 |
+
'progress': _progress,
|
| 170 |
+
'result': _result,
|
| 171 |
+
'msg': _msg
|
| 172 |
+
}),
|
| 173 |
+
default=lambda obj: obj.__dict__,
|
| 174 |
+
sort_keys=True, ensure_ascii=False,
|
| 175 |
+
indent=4)
|
| 176 |
+
elif _status == Status.success:
|
| 177 |
+
del_flag = True
|
| 178 |
+
return json.dumps(
|
| 179 |
+
EasyResponse(ResponseCode.success.value[0], True, '', {
|
| 180 |
+
'code': _code,
|
| 181 |
+
'status': _status.value,
|
| 182 |
+
'progress': _progress,
|
| 183 |
+
'result': _result,
|
| 184 |
+
'msg': _msg
|
| 185 |
+
}),
|
| 186 |
+
default=lambda obj: obj.__dict__,
|
| 187 |
+
sort_keys=True, ensure_ascii=False,
|
| 188 |
+
indent=4)
|
| 189 |
+
elif _status == Status.error:
|
| 190 |
+
del_flag = True
|
| 191 |
+
return json.dumps(
|
| 192 |
+
EasyResponse(ResponseCode.success.value[0], True, '', {
|
| 193 |
+
'code': _code,
|
| 194 |
+
'status': _status.value,
|
| 195 |
+
'progress': _progress,
|
| 196 |
+
'result': _result,
|
| 197 |
+
'msg': _msg
|
| 198 |
+
}),
|
| 199 |
+
default=lambda obj: obj.__dict__,
|
| 200 |
+
sort_keys=True, ensure_ascii=False, indent=4)
|
| 201 |
+
else:
|
| 202 |
+
return json.dumps(
|
| 203 |
+
EasyResponse(ResponseCode.error3.value[0], True, ResponseCode.error3.value[1], {}),
|
| 204 |
+
default=lambda obj: obj.__dict__,
|
| 205 |
+
sort_keys=True, ensure_ascii=False,
|
| 206 |
+
indent=4)
|
| 207 |
+
except Exception as e:
|
| 208 |
+
traceback.print_exc()
|
| 209 |
+
return json.dumps(
|
| 210 |
+
EasyResponse(ResponseCode.system_error.value[0], False, ResponseCode.system_error.value[1], {}),
|
| 211 |
+
default=lambda obj: obj.__dict__,
|
| 212 |
+
sort_keys=True, ensure_ascii=False,
|
| 213 |
+
indent=4)
|
| 214 |
+
finally:
|
| 215 |
+
if del_flag:
|
| 216 |
+
try:
|
| 217 |
+
TransDhTask.instance().run_lock.acquire()
|
| 218 |
+
del TransDhTask.instance().task_dic[_code]
|
| 219 |
+
TransDhTask.instance().run_lock.release()
|
| 220 |
+
except Exception as e:
|
| 221 |
+
traceback.print_exc()
|
| 222 |
+
return json.dumps(
|
| 223 |
+
EasyResponse(ResponseCode.error3.value[0], True, ResponseCode.error3.value[1], {}),
|
| 224 |
+
default=lambda obj: obj.__dict__,
|
| 225 |
+
sort_keys=True, ensure_ascii=False,
|
| 226 |
+
indent=4)
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
if __name__ == '__main__':
|
| 230 |
+
TransDhTask.instance()
|
| 231 |
+
time.sleep(15)
|
| 232 |
+
logger.info("******************* TransDhServer服务启动 *******************")
|
| 233 |
+
if not os.path.exists(GlobalConfig.instance().temp_dir):
|
| 234 |
+
logger.info("创建临时目录")
|
| 235 |
+
os.makedirs(GlobalConfig.instance().temp_dir)
|
| 236 |
+
if not os.path.exists(GlobalConfig.instance().result_dir):
|
| 237 |
+
logger.info("创建结果目录")
|
| 238 |
+
os.makedirs(GlobalConfig.instance().result_dir)
|
| 239 |
+
|
| 240 |
+
app.run(
|
| 241 |
+
host=str(GlobalConfig.instance().server_ip),
|
| 242 |
+
port=int(GlobalConfig.instance().server_port),
|
| 243 |
+
debug=False,
|
| 244 |
+
threaded=False)
|
code-5090/app_local.c
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
code-5090/app_local.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:42f511515f7623b0b030c26ae8956702963f6e33fc215f9fbd6fe1c32219f4ec
|
| 3 |
+
size 1434488
|
code-5090/app_local.py
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/user/bin/env python
|
| 2 |
+
# coding=utf-8
|
| 3 |
+
"""
|
| 4 |
+
@project : face2face_train
|
| 5 |
+
@author : huyi
|
| 6 |
+
@file : app.py
|
| 7 |
+
@ide : PyCharm
|
| 8 |
+
@time : 2023-12-06 19:04:21
|
| 9 |
+
"""
|
| 10 |
+
import spaces
|
| 11 |
+
import os
|
| 12 |
+
|
| 13 |
+
os.chdir('/code')
|
| 14 |
+
import time
|
| 15 |
+
import traceback
|
| 16 |
+
from enum import Enum
|
| 17 |
+
|
| 18 |
+
from y_utils.logger import logger
|
| 19 |
+
from flask import Flask, request
|
| 20 |
+
from y_utils.config import GlobalConfig
|
| 21 |
+
from service.trans_dh_service import TransDhTask, Status,a
|
| 22 |
+
|
| 23 |
+
import json
|
| 24 |
+
import threading
|
| 25 |
+
import gc
|
| 26 |
+
import cv2
|
| 27 |
+
|
| 28 |
+
app = Flask(__name__)
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
class EasyResponse:
|
| 32 |
+
def __init__(
|
| 33 |
+
self,
|
| 34 |
+
code,
|
| 35 |
+
success,
|
| 36 |
+
msg, data: dict):
|
| 37 |
+
self.code = code
|
| 38 |
+
self.success = success
|
| 39 |
+
self.msg = msg
|
| 40 |
+
self.data = data
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
class ResponseCode(Enum):
|
| 44 |
+
system_error = [9999, '系统异常']
|
| 45 |
+
success = [10000, '成功']
|
| 46 |
+
busy = [10001, '忙碌中']
|
| 47 |
+
error1 = [10002, '参数异常']
|
| 48 |
+
error2 = [10003, '获取锁异常']
|
| 49 |
+
error3 = [10004, '任务不存在']
|
| 50 |
+
|
| 51 |
+
@app.route('/easy/submit', methods=['POST'])
|
| 52 |
+
@spaces.GPU
|
| 53 |
+
def easy_submit():
|
| 54 |
+
request_data = json.loads(request.data)
|
| 55 |
+
try:
|
| 56 |
+
if 'audio_url' not in request_data or request_data['audio_url'] == '':
|
| 57 |
+
return json.dumps(
|
| 58 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'audio_url参数缺失', {}),
|
| 59 |
+
default=lambda obj: obj.__dict__,
|
| 60 |
+
sort_keys=True, ensure_ascii=False,
|
| 61 |
+
indent=4)
|
| 62 |
+
if 'video_url' not in request_data or request_data['video_url'] == '':
|
| 63 |
+
return json.dumps(
|
| 64 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'video_url参数缺失', {}),
|
| 65 |
+
default=lambda obj: obj.__dict__,
|
| 66 |
+
sort_keys=True, ensure_ascii=False,
|
| 67 |
+
indent=4)
|
| 68 |
+
if 'code' not in request_data or request_data['code'] == '':
|
| 69 |
+
return json.dumps(
|
| 70 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'code参数缺失', {}),
|
| 71 |
+
default=lambda obj: obj.__dict__,
|
| 72 |
+
sort_keys=True, ensure_ascii=False,
|
| 73 |
+
indent=4)
|
| 74 |
+
_audio_url = request_data['audio_url']
|
| 75 |
+
_video_url = request_data['video_url']
|
| 76 |
+
_code = request_data['code']
|
| 77 |
+
|
| 78 |
+
if 'watermark_switch' not in request_data or request_data['watermark_switch'] == '':
|
| 79 |
+
_watermark_switch = 0
|
| 80 |
+
else:
|
| 81 |
+
if str(request_data['watermark_switch']) == '1':
|
| 82 |
+
_watermark_switch = 1
|
| 83 |
+
else:
|
| 84 |
+
_watermark_switch = 0
|
| 85 |
+
if 'digital_auth' not in request_data or request_data['digital_auth'] == '':
|
| 86 |
+
_digital_auth = 0
|
| 87 |
+
else:
|
| 88 |
+
if str(request_data['digital_auth']) == '1':
|
| 89 |
+
_digital_auth = 1
|
| 90 |
+
else:
|
| 91 |
+
_digital_auth = 0
|
| 92 |
+
if 'chaofen' not in request_data or request_data['chaofen'] == '':
|
| 93 |
+
_chaofen = 0
|
| 94 |
+
else:
|
| 95 |
+
if str(request_data['chaofen']) == '1':
|
| 96 |
+
_chaofen = 1
|
| 97 |
+
else:
|
| 98 |
+
_chaofen = 0
|
| 99 |
+
if TransDhTask.instance().run_flag:
|
| 100 |
+
return json.dumps(
|
| 101 |
+
EasyResponse(ResponseCode.busy.value[0], True, ResponseCode.busy.value[1], {}),
|
| 102 |
+
default=lambda obj: obj.__dict__,
|
| 103 |
+
sort_keys=True, ensure_ascii=False,
|
| 104 |
+
indent=4)
|
| 105 |
+
if 'pn' not in request_data or request_data['pn'] == '':
|
| 106 |
+
_pn = 1
|
| 107 |
+
else:
|
| 108 |
+
if str(request_data['pn']) == '1':
|
| 109 |
+
_pn = 1
|
| 110 |
+
else:
|
| 111 |
+
_pn = 0
|
| 112 |
+
if TransDhTask.instance().run_flag:
|
| 113 |
+
return json.dumps(
|
| 114 |
+
EasyResponse(ResponseCode.busy.value[0], True, ResponseCode.busy.value[1], {}),
|
| 115 |
+
default=lambda obj: obj.__dict__,
|
| 116 |
+
sort_keys=True, ensure_ascii=False,
|
| 117 |
+
indent=4)
|
| 118 |
+
else:
|
| 119 |
+
try:
|
| 120 |
+
TransDhTask.instance().run_lock.acquire()
|
| 121 |
+
TransDhTask.instance().run_flag = True
|
| 122 |
+
TransDhTask.instance().task_dic[_code] = (Status.run, 0, '', '')
|
| 123 |
+
except Exception as e:
|
| 124 |
+
traceback.print_exc()
|
| 125 |
+
return json.dumps(
|
| 126 |
+
EasyResponse(ResponseCode.error2.value[0], False, ResponseCode.error2.value[1], {}),
|
| 127 |
+
default=lambda obj: obj.__dict__,
|
| 128 |
+
sort_keys=True, ensure_ascii=False,
|
| 129 |
+
indent=4)
|
| 130 |
+
finally:
|
| 131 |
+
TransDhTask.instance().run_lock.release()
|
| 132 |
+
|
| 133 |
+
threading.Thread(
|
| 134 |
+
target=TransDhTask.instance().work,
|
| 135 |
+
args=(_audio_url, _video_url, _code, _watermark_switch, _digital_auth, _chaofen, _pn)).start()
|
| 136 |
+
return json.dumps(
|
| 137 |
+
EasyResponse(ResponseCode.success.value[0], True, ResponseCode.success.value[0], {}),
|
| 138 |
+
default=lambda obj: obj.__dict__,
|
| 139 |
+
sort_keys=True, ensure_ascii=False,
|
| 140 |
+
indent=4)
|
| 141 |
+
except Exception as e:
|
| 142 |
+
traceback.print_exc()
|
| 143 |
+
return json.dumps(
|
| 144 |
+
EasyResponse(ResponseCode.system_error.value[0], False, ResponseCode.system_error.value[1], {}),
|
| 145 |
+
default=lambda obj: obj.__dict__,
|
| 146 |
+
sort_keys=True, ensure_ascii=False,
|
| 147 |
+
indent=4)
|
| 148 |
+
finally:
|
| 149 |
+
gc.collect()
|
| 150 |
+
|
| 151 |
+
|
| 152 |
+
@app.route('/easy/query', methods=['GET'])
|
| 153 |
+
def easy_query():
|
| 154 |
+
del_flag = False
|
| 155 |
+
get_data = request.args.to_dict()
|
| 156 |
+
try:
|
| 157 |
+
if get_data.get('code') is None and get_data.get('code') == '':
|
| 158 |
+
return json.dumps(
|
| 159 |
+
EasyResponse(ResponseCode.error1.value[0], False, 'code参数缺失', {}),
|
| 160 |
+
default=lambda obj: obj.__dict__,
|
| 161 |
+
sort_keys=True, ensure_ascii=False,
|
| 162 |
+
indent=4)
|
| 163 |
+
_code = get_data.get('code')
|
| 164 |
+
if _code in TransDhTask.instance().task_dic:
|
| 165 |
+
_status, _progress, _result, _msg = TransDhTask.instance().task_dic[_code]
|
| 166 |
+
if _status == Status.run:
|
| 167 |
+
return json.dumps(
|
| 168 |
+
EasyResponse(ResponseCode.success.value[0], True, '', {
|
| 169 |
+
'code': _code,
|
| 170 |
+
'status': _status.value,
|
| 171 |
+
'progress': _progress,
|
| 172 |
+
'result': _result,
|
| 173 |
+
'msg': _msg
|
| 174 |
+
}),
|
| 175 |
+
default=lambda obj: obj.__dict__,
|
| 176 |
+
sort_keys=True, ensure_ascii=False,
|
| 177 |
+
indent=4)
|
| 178 |
+
elif _status == Status.success:
|
| 179 |
+
del_flag = True
|
| 180 |
+
return json.dumps(
|
| 181 |
+
EasyResponse(ResponseCode.success.value[0], True, '', {
|
| 182 |
+
'code': _code,
|
| 183 |
+
'status': _status.value,
|
| 184 |
+
'progress': _progress,
|
| 185 |
+
'result': _result,
|
| 186 |
+
'msg': _msg
|
| 187 |
+
}),
|
| 188 |
+
default=lambda obj: obj.__dict__,
|
| 189 |
+
sort_keys=True, ensure_ascii=False,
|
| 190 |
+
indent=4)
|
| 191 |
+
elif _status == Status.error:
|
| 192 |
+
del_flag = True
|
| 193 |
+
return json.dumps(
|
| 194 |
+
EasyResponse(ResponseCode.success.value[0], True, '', {
|
| 195 |
+
'code': _code,
|
| 196 |
+
'status': _status.value,
|
| 197 |
+
'progress': _progress,
|
| 198 |
+
'result': _result,
|
| 199 |
+
'msg': _msg
|
| 200 |
+
}),
|
| 201 |
+
default=lambda obj: obj.__dict__,
|
| 202 |
+
sort_keys=True, ensure_ascii=False, indent=4)
|
| 203 |
+
else:
|
| 204 |
+
return json.dumps(
|
| 205 |
+
EasyResponse(ResponseCode.error3.value[0], True, ResponseCode.error3.value[1], {}),
|
| 206 |
+
default=lambda obj: obj.__dict__,
|
| 207 |
+
sort_keys=True, ensure_ascii=False,
|
| 208 |
+
indent=4)
|
| 209 |
+
except Exception as e:
|
| 210 |
+
traceback.print_exc()
|
| 211 |
+
return json.dumps(
|
| 212 |
+
EasyResponse(ResponseCode.system_error.value[0], False, ResponseCode.system_error.value[1], {}),
|
| 213 |
+
default=lambda obj: obj.__dict__,
|
| 214 |
+
sort_keys=True, ensure_ascii=False,
|
| 215 |
+
indent=4)
|
| 216 |
+
finally:
|
| 217 |
+
if del_flag:
|
| 218 |
+
try:
|
| 219 |
+
TransDhTask.instance().run_lock.acquire()
|
| 220 |
+
del TransDhTask.instance().task_dic[_code]
|
| 221 |
+
TransDhTask.instance().run_lock.release()
|
| 222 |
+
except Exception as e:
|
| 223 |
+
traceback.print_exc()
|
| 224 |
+
return json.dumps(
|
| 225 |
+
EasyResponse(ResponseCode.error3.value[0], True, ResponseCode.error3.value[1], {}),
|
| 226 |
+
default=lambda obj: obj.__dict__,
|
| 227 |
+
sort_keys=True, ensure_ascii=False,
|
| 228 |
+
indent=4)
|
| 229 |
+
|
| 230 |
+
|
| 231 |
+
if __name__ == '__main__':
|
| 232 |
+
a()
|
| 233 |
+
TransDhTask.instance()
|
| 234 |
+
time.sleep(15)
|
| 235 |
+
logger.info("******************* TransDhServer服务启动 *******************")
|
| 236 |
+
if not os.path.exists(GlobalConfig.instance().temp_dir):
|
| 237 |
+
logger.info("创建临时目录")
|
| 238 |
+
os.makedirs(GlobalConfig.instance().temp_dir)
|
| 239 |
+
if not os.path.exists(GlobalConfig.instance().result_dir):
|
| 240 |
+
logger.info("创建结果目录")
|
| 241 |
+
os.makedirs(GlobalConfig.instance().result_dir)
|
| 242 |
+
|
| 243 |
+
app.run(
|
| 244 |
+
host=str(GlobalConfig.instance().server_ip),
|
| 245 |
+
port=int(GlobalConfig.instance().server_port),
|
| 246 |
+
debug=False,
|
| 247 |
+
threaded=False)
|
code-5090/app_local_interval.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a9bcb76f5fcf7df65b5f04a4ad51aefa4fa99d48f35750d95c29e02243041b2f
|
| 3 |
+
size 1398152
|
code-5090/batch.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:52127076ba3fb906d7af85964d07492d6b80966e5ee208e5ecd5e38658cf2d63
|
| 3 |
+
size 108568
|
code-5090/config/config.ini
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[log]
|
| 2 |
+
log_dir = /code/data/log
|
| 3 |
+
log_file = dh.log
|
| 4 |
+
|
| 5 |
+
[http_server]
|
| 6 |
+
server_ip = 0.0.0.0
|
| 7 |
+
server_port = 8383
|
| 8 |
+
|
| 9 |
+
[temp]
|
| 10 |
+
temp_dir = /code/data/temp
|
| 11 |
+
clean_switch = 1
|
| 12 |
+
|
| 13 |
+
[result]
|
| 14 |
+
result_dir = /code/data/result
|
| 15 |
+
clean_switch = 0
|
| 16 |
+
|
| 17 |
+
[digital]
|
| 18 |
+
batch_size = 30
|
| 19 |
+
|
| 20 |
+
[register]
|
| 21 |
+
url = http://172.16.160.51:12120
|
| 22 |
+
report_interval = 30
|
| 23 |
+
enable=0
|
code-5090/data/log/dh.log
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[2025-05-12 16:18:22,333] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 2 |
+
[2025-05-12 16:18:34,084] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 3 |
+
[2025-05-12 16:18:34,084] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
| 4 |
+
[2025-05-12 16:18:45,230] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 5 |
+
[2025-05-12 16:18:47,909] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 6 |
+
[2025-05-12 16:18:47,909] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
| 7 |
+
[2025-05-12 16:18:55,037] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 8 |
+
[2025-05-12 16:18:57,325] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 9 |
+
[2025-05-12 16:18:57,325] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
| 10 |
+
[2025-05-12 16:19:04,834] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 11 |
+
[2025-05-12 16:19:07,502] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 12 |
+
[2025-05-12 16:19:07,502] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
| 13 |
+
[2025-05-12 16:19:14,675] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 14 |
+
[2025-05-12 16:19:17,393] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 15 |
+
[2025-05-12 16:19:17,393] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
| 16 |
+
[2025-05-12 16:19:25,850] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 17 |
+
[2025-05-12 16:19:28,075] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 18 |
+
[2025-05-12 16:19:28,075] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
| 19 |
+
[2025-05-12 16:19:36,846] [cv_logging.py[line:27]] [INFO] [Use default multi mode: multi-thread, or you can set env 'CV_MULTI_MODE' to multi-process/torch-process]
|
| 20 |
+
[2025-05-12 16:19:39,085] [app_local.py[line:230]] [WARNING] [ -> 服务不进行注册]
|
| 21 |
+
[2025-05-12 16:19:39,085] [app_local.py[line:231]] [INFO] [TransDhTask init]
|
code-5090/docker-compose.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: '3.8'
|
| 2 |
+
|
| 3 |
+
services:
|
| 4 |
+
facesdk:
|
| 5 |
+
image: base.image.docker:5000/python/face2face_train:0.0.7_sdk_slim
|
| 6 |
+
container_name: facesdk
|
| 7 |
+
privileged: true
|
| 8 |
+
volumes:
|
| 9 |
+
- d:\face2face:/code/data
|
| 10 |
+
- d:\face2face\sdk/config.ini:/code/config/config.ini
|
| 11 |
+
- d:\face2face\sdk/license.txt:/code/license.txt
|
| 12 |
+
environment:
|
| 13 |
+
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
|
| 14 |
+
deploy:
|
| 15 |
+
resources:
|
| 16 |
+
reservations:
|
| 17 |
+
devices:
|
| 18 |
+
- capabilities: [gpu]
|
| 19 |
+
shm_size: '8g'
|
| 20 |
+
ports:
|
| 21 |
+
- "8383:8383"
|
| 22 |
+
command: python /code/app_local.py
|
code-5090/face_attr_detect/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
from .face_attr import FaceAttr
|
code-5090/face_attr_detect/face_attr.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6d933036233cd826611f94e6b4bf9c51ef18755340410af071f03b0fd036cd21
|
| 3 |
+
size 400880
|
code-5090/face_attr_detect/face_attr_epoch_12_220318.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0fa6604beacd1e560ffc4cae6fa1537591d5f1a765a9f55473a295a1d22da3af
|
| 3 |
+
size 3723167
|
code-5090/face_detect_utils/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
code-5090/face_detect_utils/__init__.py
ADDED
|
File without changes
|
code-5090/face_detect_utils/face_detect.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c0d142a32d76b9bb1afd186bed048ee8264bf5a817d0396f0a4ce26156c6c7b3
|
| 3 |
+
size 799576
|
code-5090/face_detect_utils/head_pose.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f901a9aa4321eb949398ffb6b2390a7b7068b8de9017310ee216bfc9c28169b8
|
| 3 |
+
size 679216
|
code-5090/face_detect_utils/resources/pfpld_robust_sim_bs1_8003.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8bd9913817152831562cccde7e51ed431d1cf4547d8f21e0876b58a0d82baa55
|
| 3 |
+
size 6889235
|
code-5090/face_detect_utils/resources/scrfd_500m_bnkps_shape640x640.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b467f878e26ff1e7ee05cd9936fdff63fa2a5af5d732ed17ee231f2dd5cc07ae
|
| 3 |
+
size 2524648
|
code-5090/face_detect_utils/scrfd.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4a29cf69c9d3df4c669fea04ba2d3320814ba9ba98df93995043754c6d0f34b0
|
| 3 |
+
size 1723736
|
code-5090/face_lib/__init__.py
ADDED
|
File without changes
|
code-5090/face_lib/face_detect_and_align/__init__.py
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .face_align_5_landmarks import FaceDetect5Landmarks
|
| 2 |
+
from .face_align_utils import estimate_norm
|
| 3 |
+
|
code-5090/face_lib/face_detect_and_align/face_align_5_landmarks.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d70fed7a4a31fc89fa39e96ebafb162d04c01d841b6f4da9b59a390fe8951d18
|
| 3 |
+
size 972896
|
code-5090/face_lib/face_detect_and_align/face_align_utils.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:398f7f7202392de6b25f35b7f6b3f6bea32ee780bb019082fa8eb1c0bcdc5d4c
|
| 3 |
+
size 967256
|
code-5090/face_lib/face_detect_and_align/scrfd_insightface/__init__.py
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# -- coding: utf-8 --
|
| 2 |
+
# @Time : 2021/11/10
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
from .scrfd import SCRFD
|
code-5090/face_lib/face_detect_and_align/scrfd_insightface/scrfd.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2d825dfa47071e0e667511b3330d0ee158d876b04dd99e1c623f267dfd13a9c2
|
| 3 |
+
size 1467080
|
code-5090/face_lib/face_parsing/__init__.py
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# -- coding: utf-8 --
|
| 2 |
+
# @Time : 2022/3/29
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
from .face_parsing_api import FaceParsing
|
| 6 |
+
# from .dfl_xseg_net import XsegNet
|
code-5090/face_lib/face_parsing/face_parsing_api.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b3d88775fc6918c3e4b58d8f2c7e0a947bb7f146807f10454f5de8e6d3e17e1b
|
| 3 |
+
size 797232
|
code-5090/face_lib/face_restore/__init__.py
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
from .gfpgan_onnx.gfpgan_onnx_api import GFPGAN
|
code-5090/face_lib/face_restore/gfpgan_onnx/gfpgan_onnx_api.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5f4a19e5d38750f84dbf30e8b987ffe1d607f9f1a01e6913f2ce46efd8a27bff
|
| 3 |
+
size 451848
|
code-5090/face_restore_gfpgan_thread_cam_pipeline.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:71b09f10f21e484574372fbd29eb67175d2b2748f384d2e8e92c4e0fb7737010
|
| 3 |
+
size 1008208
|
code-5090/face_restore_gfpgan_thread_pipeline.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4042f268595dbd52c597d01c07a10802cd852139f13a017800af92035ad7be6c
|
| 3 |
+
size 1176184
|
code-5090/h_utils/__init__.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/user/bin/env python
|
| 2 |
+
# coding=utf-8
|
| 3 |
+
"""
|
| 4 |
+
@project : dhp-service
|
| 5 |
+
@author : huyi
|
| 6 |
+
@file : __init__.py.py
|
| 7 |
+
@ide : PyCharm
|
| 8 |
+
@time : 2021-08-18 15:45:13
|
| 9 |
+
"""
|
code-5090/h_utils/custom.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:51479d9416a2e85154784fc03661f0712e9e9384530c5a58c7610f8e0823e3aa
|
| 3 |
+
size 249168
|
code-5090/h_utils/obs_client.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8bbd2b9c6680513b38f4682c150aa1328c07d5bab463f6a5ba74aab9641a1c12
|
| 3 |
+
size 763368
|
code-5090/h_utils/request_utils.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9c08cfb2a8511c84a6f38cab9b5f98531c0ccbbe8e4443ceb769005d455a0023
|
| 3 |
+
size 793992
|
code-5090/h_utils/sweep_bot.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f84280033bdff79999642a7c9d4d429d0cac8c0681f52260baf43deedca66a80
|
| 3 |
+
size 471384
|
code-5090/h_utils/zip_utils.cpython-39-x86_64-linux-gnu.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f2a037e78bd3def7e7cb45ea2ef08b06e407f9d135b9b63e2d81cbae4f4f15fb
|
| 3 |
+
size 539808
|
code-5090/http_req/http-client.env.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"local": {
|
| 3 |
+
"host": "127.0.0.1",
|
| 4 |
+
"port": 8081
|
| 5 |
+
},
|
| 6 |
+
"192.168.4.42": {
|
| 7 |
+
"host": "192.168.4.42",
|
| 8 |
+
"port": 10058
|
| 9 |
+
},
|
| 10 |
+
"172.16.103.26": {
|
| 11 |
+
"host": "172.16.103.26",
|
| 12 |
+
"port": 8000
|
| 13 |
+
}
|
| 14 |
+
}
|
code-5090/http_req/http_api.http
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### 查询任务
|
| 2 |
+
#GET http://10.2.3.51:10066/easy/query?code=146
|
| 3 |
+
GET http://10.2.3.51:8383/easy/query?code=147
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
### 提交任务
|
| 7 |
+
#POST http://10.2.3.51:10066/easy/submit
|
| 8 |
+
POST http://10.2.3.51:8383/easy/submit
|
| 9 |
+
Content-Type: application/json
|
| 10 |
+
|
| 11 |
+
{
|
| 12 |
+
"audio_url": "https://digital-public.obs.cn-east-3.myhuaweicloud.com/dh_news/wave/20240227165902_bd_tts_request_1709024766569.wav",
|
| 13 |
+
"video_url": "https://digital-public.obs.cn-east-3.myhuaweicloud.com/vpp/1batchSynth/2/cut_1080.mp4",
|
| 14 |
+
"code": "147"
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
###
|
| 18 |
+
|