5 Commits
Author SHA1 Message Date
Jeffrey Wu 98f51b1f6b Merge pull request #14 from jberube/patch-1
Fix typos in README.md
2026-04-03 10:14:56 +08:00
Julien Bérubé 3c6be6306a Fix typos in README.md 2025-05-17 11:10:24 -04:00
Jeffrey Wu 7632ae8b70 Merge pull request #13 from ComfyNodePRs/update-publish-yaml
Update Github Action for Publishing to Comfy Registry
2025-04-07 10:19:37 +08:00
Jeffrey Wu 17b165c319 fix: update facefusion assets url 2025-02-12 11:31:05 +08:00
snomiao 7651cd5360 chore(publish): update GitHub Actions workflow for node publishing
- Add permissions for writing issues
- Update action version to v1 for publish-node-action
- Add condition to run job only for 'jeffy5' repository owner
2025-01-20 21:30:02 +00:00
3 changed files with 112 additions and 100 deletions
+6 -2
View File
@@ -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 }}
+2 -2
View File
@@ -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
View File
@@ -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}`")