Skip to content

Commit

Permalink
Merge pull request facefusion#10 from facefusion/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
henryruhs authored Aug 21, 2023
2 parents 3d850da + bead4a6 commit 2de53c5
Show file tree
Hide file tree
Showing 9 changed files with 66 additions and 24 deletions.
15 changes: 3 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ jobs:
python-version: '3.10'
- run: pip install flake8
- run: pip install mypy
- run: flake8 run.py facefusion
- run: mypy run.py facefusion
- run: flake8 run.py facefusion tests
- run: mypy run.py facefusion tests
test:
strategy:
matrix:
Expand All @@ -31,13 +31,4 @@ jobs:
with:
python-version: '3.10'
- run: pip install -r requirements-ci.txt
- run: curl --create-dirs --output .assets/examples/source.jpg https://huggingface.co/facefusion/examples/resolve/main/source.jpg
- run: curl --create-dirs --output .assets/examples/target-240p.mp4 https://huggingface.co/facefusion/examples/resolve/main/target-240p.mp4
- run: python run.py --source .assets/examples/source.jpg --target .assets/examples/target-240p.mp4 --output .assets/examples --trim-frame-end 24
if: matrix.os != 'windows-latest'
- run: python run.py --source .assets\examples\source.jpg --target .assets\examples\target-240p.mp4 --output .assets\examples --trim-frame-end 24
if: matrix.os == 'windows-latest'
- run: ffprobe -show_format -show_streams .assets/examples/source-target-240p.mp4
if: matrix.os != 'windows-latest'
- run: ffprobe -show_format -show_streams .assets\examples\source-target-240p.mp4
if: matrix.os == 'windows-latest'
- run: pytest
2 changes: 1 addition & 1 deletion facefusion/processors/frame/modules/face_enhancer.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def clear_frame_processor() -> None:

def pre_check() -> bool:
download_directory_path = resolve_relative_path('../.assets/models')
conditional_download(download_directory_path, ['https://huggingface.co/facefusion/models/resolve/main/GFPGANv1.4.pth'])
conditional_download(download_directory_path, ['https://github.com/facefusion/facefusion-assets/releases/download/models/GFPGANv1.4.pth'])
return True


Expand Down
2 changes: 1 addition & 1 deletion facefusion/processors/frame/modules/face_swapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def clear_frame_processor() -> None:

def pre_check() -> bool:
download_directory_path = resolve_relative_path('../.assets/models')
conditional_download(download_directory_path, ['https://huggingface.co/facefusion/models/resolve/main/inswapper_128.onnx'])
conditional_download(download_directory_path, ['https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx'])
return True


Expand Down
2 changes: 1 addition & 1 deletion facefusion/processors/frame/modules/frame_enhancer.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def clear_frame_processor() -> None:

def pre_check() -> bool:
download_directory_path = resolve_relative_path('../.assets/models')
conditional_download(download_directory_path, ['https://huggingface.co/facefusion/models/resolve/main/RealESRGAN_x4plus.pth'])
conditional_download(download_directory_path, ['https://github.com/facefusion/facefusion-assets/releases/download/models/RealESRGAN_x4plus.pth'])
return True


Expand Down
16 changes: 8 additions & 8 deletions facefusion/uis/layouts/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
def pre_check() -> bool:
conditional_download('.assets/examples',
[
'https://huggingface.co/facefusion/examples/resolve/main/source.jpg',
'https://huggingface.co/facefusion/examples/resolve/main/target-240p.mp4',
'https://huggingface.co/facefusion/examples/resolve/main/target-360p.mp4',
'https://huggingface.co/facefusion/examples/resolve/main/target-540p.mp4',
'https://huggingface.co/facefusion/examples/resolve/main/target-720p.mp4',
'https://huggingface.co/facefusion/examples/resolve/main/target-1080p.mp4',
'https://huggingface.co/facefusion/examples/resolve/main/target-1440p.mp4',
'https://huggingface.co/facefusion/examples/resolve/main/target-2160p.mp4'
'https://github.com/facefusion/facefusion-assets/releases/download/examples/source.jpg',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-240p.mp4',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-360p.mp4',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-540p.mp4',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-720p.mp4',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-1080p.mp4',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-1440p.mp4',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-2160p.mp4'
])
return True

Expand Down
3 changes: 2 additions & 1 deletion requirements-ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ onnxruntime==1.15.1
opencv-python==4.8.0.74
opennsfw2==0.10.2
protobuf==4.23.4
pytest==7.4.0
psutil==5.9.5
tensorflow==2.13.0
tqdm==4.65.0
tqdm==4.65.0
Empty file added tests/__init__.py
Empty file.
29 changes: 29 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import subprocess
import pytest

from facefusion import wording
from facefusion.utilities import conditional_download


@pytest.fixture(scope = 'module', autouse = True)
def setup() -> None:
conditional_download('.assets/examples',
[
'https://github.com/facefusion/facefusion-assets/releases/download/examples/source.jpg',
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-1080p.mp4'
])
subprocess.run([ 'ffmpeg', '-i', '.assets/examples/target-1080p.mp4', '-vframes', '1', '.assets/examples/target-1080p.jpg' ])


def test_image_to_image() -> None:
commands = [ 'python', 'run.py', '-s', '.assets/examples/source.jpg', '-t', '.assets/examples/target-1080p.jpg', '-o', '.assets/examples' ]
run = subprocess.run(commands, stdout = subprocess.PIPE)
assert run.returncode == 0
assert wording.get('processing_image_succeed') in run.stdout.decode()


def test_image_to_video() -> None:
commands = [ 'python', 'run.py', '-s', '.assets/examples/source.jpg', '-t', '.assets/examples/target-1080p.mp4', '-o', '.assets/examples', '--trim-frame-end', '10' ]
run = subprocess.run(commands, stdout = subprocess.PIPE)
assert run.returncode == 0
assert wording.get('processing_video_succeed') in run.stdout.decode()
21 changes: 21 additions & 0 deletions tests/test_utilities.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import subprocess
import pytest

from facefusion.utilities import conditional_download, detect_fps


@pytest.fixture(scope = 'module', autouse = True)
def setup() -> None:
conditional_download('.assets/examples',
[
'https://github.com/facefusion/facefusion-assets/releases/download/examples/target-1080p.mp4'
])
subprocess.run([ 'ffmpeg', '-i', '.assets/examples/target-1080p.mp4', '-vf', 'fps=25', '.assets/examples/target-1080p-25fps.mp4' ])
subprocess.run([ 'ffmpeg', '-i', '.assets/examples/target-1080p.mp4', '-vf', 'fps=30', '.assets/examples/target-1080p-30fps.mp4' ])
subprocess.run([ 'ffmpeg', '-i', '.assets/examples/target-1080p.mp4', '-vf', 'fps=60', '.assets/examples/target-1080p-60fps.mp4' ])


def test_detect_fps() -> None:
assert detect_fps('.assets/examples/target-1080p-25fps.mp4') == 25.0
assert detect_fps('.assets/examples/target-1080p-30fps.mp4') == 30.0
assert detect_fps('.assets/examples/target-1080p-60fps.mp4') == 60.0

0 comments on commit 2de53c5

Please sign in to comment.