Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98f51b1f6b | ||
|
|
3c6be6306a | ||
|
|
7632ae8b70 | ||
|
|
17b165c319 | ||
|
|
7651cd5360 |
@@ -7,15 +7,19 @@ on:
|
||||
paths:
|
||||
- "pyproject.toml"
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
publish-node:
|
||||
name: Publish Custom Node to registry
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.repository_owner == 'jeffy5' }}
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
- name: Publish Custom Node
|
||||
uses: Comfy-Org/publish-node-action@main
|
||||
uses: Comfy-Org/publish-node-action@v1
|
||||
with:
|
||||
## Add your own personal access token to your Github Repository secrets and reference it here.
|
||||
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
|
||||
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
|
||||
|
||||
@@ -37,7 +37,7 @@ All models is same as facefusion which can be found in [facefusion assets](https
|
||||
|
||||
Now it will use the following models by default. In the future, dynamic model selection will be supported. Please download the model based on the directory structure.
|
||||
|
||||
Put all into directory `CmofyUI/models/faceless`.
|
||||
Put all into directory `ComfyUI/models/faceless`.
|
||||
|
||||
```
|
||||
|-- face_detector
|
||||
@@ -55,7 +55,7 @@ Put all into directory `CmofyUI/models/faceless`.
|
||||
`-- rmbg.pth
|
||||
```
|
||||
|
||||
You can download models by running `download_models.py` script under directory `CmofyUI/custom_nodes/comfyui-faceless-node`.
|
||||
You can download models by running `download_models.py` script under directory `ComfyUI/custom_nodes/comfyui-faceless-node`.
|
||||
|
||||
```bash
|
||||
# Install default required models
|
||||
|
||||
+104
-96
@@ -4,132 +4,140 @@ from urllib.request import urlretrieve
|
||||
|
||||
parser = argparse.ArgumentParser(description="Download faceless models")
|
||||
|
||||
parser.add_argument('--all', action='store_true', help='Download all models, or just download required models', default=False)
|
||||
parser.add_argument(
|
||||
"--all",
|
||||
action="store_true",
|
||||
help="Download all models, or just download required models",
|
||||
default=False,
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
base_path = os.path.dirname(os.path.realpath(__file__))
|
||||
models_dir = os.path.normpath(os.path.join(base_path, "../../models/faceless"))
|
||||
facefusion_assets_url = (
|
||||
"https://github.com/facefusion/facefusion-assets/releases/download/models-3.0.0"
|
||||
)
|
||||
|
||||
# Define the directory structure
|
||||
model_sets = {
|
||||
'face_detector': [
|
||||
"face_detector": [
|
||||
{
|
||||
'name': 'yoloface_8n.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/yoloface_8n.onnx',
|
||||
'required': True
|
||||
"name": "yoloface_8n.onnx",
|
||||
"url": facefusion_assets_url + "/yoloface_8n.onnx",
|
||||
"required": True,
|
||||
}
|
||||
],
|
||||
'face_landmarker': [
|
||||
"face_landmarker": [
|
||||
{
|
||||
'name': '2dfan4.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/2dfan4.onnx',
|
||||
'required': True
|
||||
"name": "2dfan4.onnx",
|
||||
"url": facefusion_assets_url + "/2dfan4.onnx",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
'name': 'face_landmarker_68_5.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/face_landmarker_68_5.onnx',
|
||||
'required': True
|
||||
"name": "face_landmarker_68_5.onnx",
|
||||
"url": facefusion_assets_url + "/face_landmarker_68_5.onnx",
|
||||
"required": True,
|
||||
},
|
||||
],
|
||||
"face_recognizer": [
|
||||
{
|
||||
"name": "arcface_w600k_r50.onnx",
|
||||
"url": facefusion_assets_url + "/arcface_w600k_r50.onnx",
|
||||
"required": True,
|
||||
}
|
||||
],
|
||||
'face_recognizer': [
|
||||
"face_swapper": [
|
||||
{
|
||||
'name': 'arcface_w600k_r50.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/arcface_w600k_r50.onnx',
|
||||
'required': True
|
||||
}
|
||||
"name": "inswapper_128.onnx",
|
||||
"url": facefusion_assets_url + "/inswapper_128.onnx",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
"name": "inswapper_128_fp16.onnx",
|
||||
"url": facefusion_assets_url + "/inswapper_128_fp16.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "simswap_256.onnx",
|
||||
"url": facefusion_assets_url + "/simswap_256.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "simswap_512_unofficial.onnx",
|
||||
"url": facefusion_assets_url + "/simswap_512_unofficial.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "blendswap_256.onnx",
|
||||
"url": facefusion_assets_url + "/blendswap_256.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "uniface_256.onnx",
|
||||
"url": facefusion_assets_url + "/uniface_256.onnx",
|
||||
"required": False,
|
||||
},
|
||||
],
|
||||
'face_swapper': [
|
||||
"face_restoration": [
|
||||
{
|
||||
'name': 'inswapper_128.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx',
|
||||
'required': True
|
||||
"name": "gfpgan_1.2.onnx",
|
||||
"url": facefusion_assets_url + "/gfpgan_1.2.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
'name': 'inswapper_128_fp16.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128_fp16.onnx',
|
||||
'required': False
|
||||
"name": "gfpgan_1.3.onnx",
|
||||
"url": facefusion_assets_url + "/gfpgan_1.3.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
'name': 'simswap_256.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/simswap_256.onnx',
|
||||
'required': False
|
||||
"name": "gfpgan_1.4.onnx",
|
||||
"url": facefusion_assets_url + "/gfpgan_1.4.onnx",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
'name': 'simswap_512_unofficial.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/simswap_512_unofficial.onnx',
|
||||
'required': False
|
||||
"name": "codeformer.onnx",
|
||||
"url": facefusion_assets_url + "/codeformer.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
'name': 'blendswap_256.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/blendswap_256.onnx',
|
||||
'required': False
|
||||
"name": "gpen_bfr_256.onnx",
|
||||
"url": facefusion_assets_url + "/gpen_bfr_256.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
'name': 'uniface_256.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/uniface_256.onnx',
|
||||
'required': False
|
||||
}
|
||||
"name": "gpen_bfr_512.onnx",
|
||||
"url": facefusion_assets_url + "/gpen_bfr_512.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "gpen_bfr_1024.onnx",
|
||||
"url": facefusion_assets_url + "/gpen_bfr_1024.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "gpen_bfr_2048.onnx",
|
||||
"url": facefusion_assets_url + "/gpen_bfr_2048.onnx",
|
||||
"required": False,
|
||||
},
|
||||
{
|
||||
"name": "restoreformer_plus_plus.onnx",
|
||||
"url": facefusion_assets_url + "/restoreformer_plus_plus.onnx",
|
||||
"required": False,
|
||||
},
|
||||
],
|
||||
'face_restoration': [
|
||||
".": [
|
||||
{
|
||||
'name': 'gfpgan_1.2.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gfpgan_1.2.onnx',
|
||||
'required': False
|
||||
"name": "gender_age.onnx",
|
||||
"url": facefusion_assets_url + "/gender_age.onnx",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
'name': 'gfpgan_1.3.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gfpgan_1.3.onnx',
|
||||
'required': False
|
||||
"name": "rmbg.pth",
|
||||
"url": "https://huggingface.co/briaai/RMBG-1.4/resolve/main/model.pth?download=true",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
'name': 'gfpgan_1.4.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gfpgan_1.4.onnx',
|
||||
'required': True
|
||||
},
|
||||
{
|
||||
'name': 'codeformer.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/codeformer.onnx',
|
||||
'required': False
|
||||
},
|
||||
{
|
||||
'name': 'gpen_bfr_256.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gpen_bfr_256.onnx',
|
||||
'required': False
|
||||
},
|
||||
{
|
||||
'name': 'gpen_bfr_512.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gpen_bfr_512.onnx',
|
||||
'required': False
|
||||
},
|
||||
{
|
||||
'name': 'gpen_bfr_1024.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gpen_bfr_1024.onnx',
|
||||
'required': False
|
||||
},
|
||||
{
|
||||
'name': 'gpen_bfr_2048.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gpen_bfr_2048.onnx',
|
||||
'required': False
|
||||
},
|
||||
{
|
||||
'name': 'restoreformer_plus_plus.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/restoreformer_plus_plus.onnx',
|
||||
'required': False
|
||||
}
|
||||
],
|
||||
'.': [
|
||||
{
|
||||
'name': 'gender_age.onnx',
|
||||
'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/gender_age.onnx',
|
||||
'required': True
|
||||
},
|
||||
{
|
||||
'name': 'rmbg.pth',
|
||||
'url': 'https://huggingface.co/briaai/RMBG-1.4/resolve/main/model.pth?download=true',
|
||||
'required': True
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
# Create the directories they don't exist
|
||||
@@ -141,9 +149,9 @@ for model_type in model_sets:
|
||||
# Download and save the models
|
||||
for model_type, models in model_sets.items():
|
||||
for model in models:
|
||||
name = model['name']
|
||||
url = model['url']
|
||||
required = model['required']
|
||||
name = model["name"]
|
||||
url = model["url"]
|
||||
required = model["required"]
|
||||
|
||||
if not args.all and not required:
|
||||
continue
|
||||
@@ -152,6 +160,6 @@ for model_type, models in model_sets.items():
|
||||
if os.path.exists(file_path):
|
||||
continue
|
||||
|
||||
print(f'Start downloading `{name}`')
|
||||
print(f"Start downloading `{name}`")
|
||||
urlretrieve(url, file_path)
|
||||
print(f'Downloaded `{name}`')
|
||||
print(f"Downloaded `{name}`")
|
||||
|
||||
Reference in New Issue
Block a user