2.1.0 (#253)
* Operating system specific installer options * Update dependencies * Sorting before NMS according to the standard * Minor typing fix * Change the wording * Update preview.py (#222) Added a release listener to the preview frame slider, this will update the frame preview with the latest frame * Combine preview slider listener * Remove change listener * Introduce multi source (#223) * Implement multi source * Adjust face enhancer and face debugger to multi source * Implement multi source to UI * Implement multi source to UI part2 * Implement multi source to UI part3 * Implement multi source to UI part4 * Some cleanup * Add face occluder (#225) (#226) * Add face occluder (#225) * add face-occluder (commandline only) * review 1 * Update face_masker.py * Update face_masker.py * Add gui & fix typing * Minor naming cleanup * Minor naming cleanup part2 --------- Co-authored-by: Harisreedhar <46858047+harisreedhar@users.noreply.github.com> * Update usage information * Fix averaged normed_embedding * Remove blur from face occluder, enable accelerators * Switch to RANSAC with 100 threshold * Update face_enhancer.py (#229) * Update face_debugger.py (#230) * Split utilities (#232) * Split utilities * Split utilities part2 * Split utilities part3 * Split utilities part4 * Some cleanup * Implement log level support (#233) * Implement log level support * Fix testing * Implement debug logger * Implement debug logger * Fix alignment offset (#235) * Update face_helper.py * fix 2 * Enforce virtual environment via installer * Enforce virtual environment via installer * Enforce virtual environment via installer * Enforce virtual environment via installer * Feat/multi process reference faces (#239) * Multi processing aware reference faces * First clean up and joining of files * Finalize the face store * Reduce similar face detection to one set, use __name__ for scopes in logger * Rename to face_occluder * Introduce ModelSet type * Improve webcam error handling * Prevent null pointer on is_image() and is_video() * Prevent null pointer on is_image() and is_video() * Fix find similar faces * Fix find similar faces * Fix process_images for face enhancer * Bunch of minor improvements * onnxruntime for ROCM under linux * Improve mask related naming * Fix falsy import * Fix typo * Feat/face parser refactoring (#247) * Face parser update (#244) * face-parser * Update face_masker.py * update debugger * Update globals.py * Update face_masker.py * Refactor code to split occlusion from region * fix (#246) * fix * fix debugger resolution * flip input to horizontal * Clean up UI * Reduce the regions to inside face only * Reduce the regions to inside face only --------- Co-authored-by: Harisreedhar <46858047+harisreedhar@users.noreply.github.com> * Fix enhancer, remove useless dest in add_argument() * Prevent unselect of the face_mask_regions via UI * Prepare next release * Shorten arguments that have choices and nargs * Add missing clear to face debugger --------- Co-authored-by: Mathias <github@feroc.de> Co-authored-by: Harisreedhar <46858047+harisreedhar@users.noreply.github.com>
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
from typing import Dict, Tuple
|
||||
import sys
|
||||
import os
|
||||
import platform
|
||||
import tempfile
|
||||
import subprocess
|
||||
from argparse import ArgumentParser, HelpFormatter
|
||||
|
||||
@@ -11,32 +15,40 @@ from facefusion import metadata, wording
|
||||
TORCH : Dict[str, str] =\
|
||||
{
|
||||
'default': 'default',
|
||||
'cpu': 'cpu',
|
||||
'cuda': 'cu118',
|
||||
'rocm': 'rocm5.6'
|
||||
'cpu': 'cpu'
|
||||
}
|
||||
ONNXRUNTIMES : Dict[str, Tuple[str, str]] =\
|
||||
{
|
||||
'default': ('onnxruntime', '1.16.3'),
|
||||
'cuda': ('onnxruntime-gpu', '1.16.3'),
|
||||
'coreml-legacy': ('onnxruntime-coreml', '1.13.1'),
|
||||
'coreml-silicon': ('onnxruntime-silicon', '1.16.0'),
|
||||
'directml': ('onnxruntime-directml', '1.16.3'),
|
||||
'openvino': ('onnxruntime-openvino', '1.16.0')
|
||||
'default': ('onnxruntime', '1.16.3')
|
||||
}
|
||||
if platform.system().lower() == 'linux' or platform.system().lower() == 'windows':
|
||||
TORCH['cuda'] = 'cu118'
|
||||
ONNXRUNTIMES['cuda'] = ('onnxruntime-gpu', '1.16.3')
|
||||
ONNXRUNTIMES['openvino'] = ('onnxruntime-openvino', '1.16.0')
|
||||
if platform.system().lower() == 'linux':
|
||||
TORCH['rocm'] = 'rocm5.6'
|
||||
ONNXRUNTIMES['directml'] = ('onnxruntime-directml', '1.16.3')
|
||||
ONNXRUNTIMES['rocm'] = ('onnxruntime-rocm', '1.16.3')
|
||||
if platform.system().lower() == 'darwin':
|
||||
ONNXRUNTIMES['coreml-legacy'] = ('onnxruntime-coreml', '1.13.1')
|
||||
ONNXRUNTIMES['coreml-silicon'] = ('onnxruntime-silicon', '1.16.0')
|
||||
|
||||
|
||||
def cli() -> None:
|
||||
program = ArgumentParser(formatter_class = lambda prog: HelpFormatter(prog, max_help_position = 120))
|
||||
program.add_argument('--torch', help = wording.get('install_dependency_help').format(dependency = 'torch'), dest = 'torch', choices = TORCH.keys())
|
||||
program.add_argument('--onnxruntime', help = wording.get('install_dependency_help').format(dependency = 'onnxruntime'), dest = 'onnxruntime', choices = ONNXRUNTIMES.keys())
|
||||
program.add_argument('--torch', help = wording.get('install_dependency_help').format(dependency = 'torch'), choices = TORCH.keys())
|
||||
program.add_argument('--onnxruntime', help = wording.get('install_dependency_help').format(dependency = 'onnxruntime'), choices = ONNXRUNTIMES.keys())
|
||||
program.add_argument('--skip-venv', help = wording.get('skip_venv_help'), action = 'store_true')
|
||||
program.add_argument('-v', '--version', version = metadata.get('name') + ' ' + metadata.get('version'), action = 'version')
|
||||
run(program)
|
||||
|
||||
|
||||
def run(program : ArgumentParser) -> None:
|
||||
args = program.parse_args()
|
||||
python_id = 'cp' + str(sys.version_info.major) + str(sys.version_info.minor)
|
||||
|
||||
if not args.skip_venv:
|
||||
os.environ['PIP_REQUIRE_VIRTUALENV'] = '1'
|
||||
if args.torch and args.onnxruntime:
|
||||
answers =\
|
||||
{
|
||||
@@ -54,10 +66,19 @@ def run(program : ArgumentParser) -> None:
|
||||
torch_wheel = TORCH[torch]
|
||||
onnxruntime = answers['onnxruntime']
|
||||
onnxruntime_name, onnxruntime_version = ONNXRUNTIMES[onnxruntime]
|
||||
subprocess.call([ 'pip', 'uninstall', 'torch', '-y' ])
|
||||
subprocess.call([ 'pip', 'uninstall', 'torch', '-y', '-q' ])
|
||||
if torch_wheel == 'default':
|
||||
subprocess.call([ 'pip', 'install', '-r', 'requirements.txt' ])
|
||||
else:
|
||||
subprocess.call([ 'pip', 'install', '-r', 'requirements.txt', '--extra-index-url', 'https://download.pytorch.org/whl/' + torch_wheel ])
|
||||
subprocess.call([ 'pip', 'uninstall', 'onnxruntime', onnxruntime_name, '-y' ])
|
||||
subprocess.call([ 'pip', 'install', onnxruntime_name + '==' + onnxruntime_version ])
|
||||
if onnxruntime != 'rocm':
|
||||
subprocess.call([ 'pip', 'uninstall', 'onnxruntime', onnxruntime_name, '-y', '-q' ])
|
||||
subprocess.call([ 'pip', 'install', onnxruntime_name + '==' + onnxruntime_version ])
|
||||
elif python_id in [ 'cp39', 'cp310', 'cp311' ]:
|
||||
wheel_name = 'onnxruntime_training-' + onnxruntime_version + '+rocm56-' + python_id + '-' + python_id + '-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'
|
||||
wheel_path = os.path.join(tempfile.gettempdir(), wheel_name)
|
||||
wheel_url = 'https://download.onnxruntime.ai/' + wheel_name
|
||||
subprocess.call([ 'curl', '--silent', '--location', '--continue-at', '-', '--output', wheel_path, wheel_url ])
|
||||
subprocess.call([ 'pip', 'uninstall', wheel_path, '-y', '-q' ])
|
||||
subprocess.call([ 'pip', 'install', wheel_path ])
|
||||
os.remove(wheel_path)
|
||||
|
||||
Reference in New Issue
Block a user