{ "manifestVersion": 2, "imageVersion": "2.0.0", "pythonVersion": { "amd64": "3.12", "arm64": "3.11" }, "basePackages": [ "numpy==1.26.4", "Pillow==12.3.0", "opencv-python-headless==4.10.0.84", "huggingface-hub[hf_xet,hf_transfer]==0.36.2" ], "constraints": [ "numpy==1.26.4", "scipy==1.12.0", "scikit-learn==1.4.2", "scikit-image==0.24.0", "pandas==2.2.2" ], "bundleRepo": "deepsafe/feature-bundles", "bundles": { "background-removal": { "name": "Background Removal", "description": "Remove image backgrounds with AI", "estimatedSize": "4-5 GB", "archives": { "amd64-gpu": { "file": "v2.0.0/background-removal-amd64-gpu.tar.gz", "sha256": "a1dfbdd5862fd32c7719ca79b0c7e4b76a327330a5991ddad98a2761abca10cb", "compressedSize": 4808242472, "extractedSize": 0 }, "arm64-cpu": { "file": "v2.0.0/background-removal-arm64-cpu.tar.gz", "sha256": "cbb570b81bfd740dd05e265dd8c93ade53a9f41fdd30cc8b3fbc47a8daa824af", "compressedSize": 4631430295, "extractedSize": 0 } }, "packages": { "common": ["rembg==2.0.62"], "amd64": ["onnxruntime-gpu==1.20.1", "mediapipe>=0.10.21"], "arm64": ["onnxruntime==1.20.1", "mediapipe>=0.10.18"] }, "pipFlags": {}, "postInstall": [], "models": [ { "id": "rembg-u2net", "downloadFn": "rembg_session", "args": ["u2net"], "sha256": "8d10d2f3bb75ae3b6d527c77944fc5e7dcd94b29809d47a739a7a728a912b491" }, { "id": "rembg-isnet-general-use", "downloadFn": "rembg_session", "args": ["isnet-general-use"], "sha256": "60920e99c45464f2ba57bee2ad08c919a52bbf852739e96947fbb4358c0d964a" }, { "id": "rembg-bria-rmbg", "downloadFn": "rembg_session", "args": ["bria-rmbg"], "sha256": "5b486f08200f513f460da46dd701db5fbb47d79b4be4b708a19444bcd4e79958" }, { "id": "rembg-birefnet-general-lite", "downloadFn": "rembg_session", "args": ["birefnet-general-lite"], "sha256": "5600024376f572a557870a5eb0afb1e5961636bef4e1e22132025467d0f03333" }, { "id": "rembg-birefnet-portrait", "downloadFn": "rembg_session", "args": ["birefnet-portrait"], "sha256": "1ba1c8ff5a7bbfadc8d8d13fb11d7be793f91f23d9d466549e37a854f6668f99" }, { "id": "rembg-birefnet-general", "downloadFn": "rembg_session", "args": ["birefnet-general"], "sha256": "58f621f00f5d756097615970a88a791584600dcf7c45b18a0a6267535a1ebd3c" }, { "id": "rembg-birefnet-matting", "downloadFn": "rembg_session", "args": ["birefnet-matting"], "sha256": "6065d27c615ea27308f5b88598dd8db116eb07436c7a323ca40d13b2866c309e" }, { "id": "rembg-birefnet-hr-matting", "downloadFn": "rembg_session", "args": ["birefnet-hr-matting"], "sha256": "45b7d92ce0e2e75e1c8a564a9e84c87ac9da7f4315d2deeef3674864e809aef3" } ], "smokeImports": ["rembg", "onnxruntime"], "enablesTools": [ "remove-background", "remove-gif-background", "passport-photo", "transparency-fixer", "background-replace", "blur-background" ] }, "face-detection": { "name": "Face Detection", "description": "Detect and blur faces, fix red-eye, smart crop", "estimatedSize": "200-300 MB", "archives": { "amd64-gpu": { "file": "v2.0.0/face-detection-amd64-gpu.tar.gz", "sha256": "0ee28b86dac88c60e005604ba0595746f455ec97f08d0c8307ba9b57e131bc7f", "compressedSize": 75358868, "extractedSize": 209838080 }, "arm64-cpu": { "file": "v2.0.0/face-detection-arm64-cpu.tar.gz", "sha256": "8ad922514aba1721de154d370f9335f78c5ce5aceade5b19515e0192d4367909", "compressedSize": 222878753, "extractedSize": 704276480 } }, "packages": { "common": [], "amd64": ["mediapipe>=0.10.21"], "arm64": ["mediapipe>=0.10.18"] }, "pipFlags": {}, "postInstall": [], "models": [ { "id": "mediapipe-face-detector", "url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite", "sha256": "b4578f35940bf5a1a655214a1cce5cab13eba73c1297cd78e1a04c2380b0152f", "path": "mediapipe/blaze_face_short_range.tflite", "minSize": 100000 }, { "id": "mediapipe-face-landmarker", "url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task", "sha256": "64184e229b263107bc2b804c6625db1341ff2bb731874b0bcc2fe6544e0bc9ff", "path": "mediapipe/face_landmarker.task", "minSize": 1000000 } ], "smokeImports": ["mediapipe"], "enablesTools": ["blur-faces", "red-eye-removal", "smart-crop"] }, "object-eraser-colorize": { "name": "Object Eraser & Colorize", "description": "Erase objects from photos and colorize B&W images", "estimatedSize": "1-2 GB", "archives": { "amd64-gpu": { "file": "v2.0.0/object-eraser-colorize-amd64-gpu.tar.gz", "sha256": "a3f6cd2eca9e5dd907497d0d58ca5f6532887bb748e4062de0f4fb9815782c31", "compressedSize": 1545472964, "extractedSize": 2249379840 }, "arm64-cpu": { "file": "v2.0.0/object-eraser-colorize-arm64-cpu.tar.gz", "sha256": "252c0b4fc4ca6f807b2b93038a98469323d906d5c4d75df88e9f47497d30e67c", "compressedSize": 1263259968, "extractedSize": 1464884023 } }, "packages": { "common": ["huggingface-hub[hf_xet]==0.36.2"], "amd64": ["onnxruntime-gpu==1.20.1"], "arm64": ["onnxruntime==1.20.1", "protobuf>=4.25.3,<5"] }, "pipFlags": {}, "postInstall": [], "models": [ { "id": "lama-onnx", "downloadFn": "hf_snapshot", "args": ["Carve/LaMa-ONNX", "lama"], "revision": "c3c0c9e468934d62e79c329e35d82dd09ff8c444", "file": "lama_fp32.onnx", "path": "lama/lama_fp32.onnx", "minSize": 100000000 }, { "id": "ddcolor-onnx", "downloadFn": "hf_snapshot", "args": ["facefusion/models-3.0.0", "ddcolor"], "revision": "728b9659bd9691bf32cbf7f61af478d94b7ba81e", "file": "ddcolor.onnx", "path": "ddcolor/ddcolor.onnx", "minSize": 50000000 }, { "id": "opencv-colorize-prototxt", "url": "https://raw.githubusercontent.com/richzhang/colorization/caffe/colorization/models/colorization_deploy_v2.prototxt", "sha256": "d16418cef8df4ccd703a55ae0ef3960861d5010418f77c90d0a47689998a7169", "path": "colorize-opencv/colorization_deploy_v2.prototxt", "minSize": 0 }, { "id": "opencv-colorize-caffemodel", "downloadFn": "hf_snapshot", "args": ["BilalSardar/Black-N-White-To-Color", "colorize-opencv"], "revision": "41c04215906bbd3d8e2a09c07b3e76f42f0cd65e", "file": "colorization_release_v2.caffemodel", "path": "colorize-opencv/colorization_release_v2.caffemodel", "minSize": 100000000, "repoType": "space" }, { "id": "opencv-colorize-points", "url": "https://raw.githubusercontent.com/richzhang/colorization/caffe/colorization/resources/pts_in_hull.npy", "sha256": "b5dec01315c34f43f1c8c089e84c45ae35d1838d8e77ed0e7ca930f79ffa450e", "path": "colorize-opencv/pts_in_hull.npy", "minSize": 0 } ], "smokeImports": ["onnxruntime"], "enablesTools": ["erase-object", "colorize", "ai-canvas-expand"] }, "inpaint-hq": { "name": "High-Quality Inpainting", "description": "Diffusion-based object removal for large objects and detailed textures", "estimatedSize": "5-7 GB", "archives": { "amd64-gpu": { "file": "v2.0.0/inpaint-hq-amd64-gpu.tar.gz", "sha256": "da65c2b7e678b50815c7c2d8ae4594ad7bbf4c1e84682bfc91b46948cdff71de", "compressedSize": 7283076233, "extractedSize": 10745029298 }, "arm64-cpu": { "file": "v2.0.0/inpaint-hq-arm64-cpu.tar.gz", "sha256": "b854b101a6190dde94d9d0039129941122c62df7c9a6429d425231cf4fa4630f", "compressedSize": 5130985609, "extractedSize": 7159491153 } }, "packages": { "common": [ "diffusers==0.31.0", "transformers==4.46.3", "accelerate==1.2.1", "safetensors==0.4.5", "huggingface-hub[hf_xet]==0.36.2" ], "amd64": [ "torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126" ], "arm64": [ "torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cpu" ] }, "pipFlags": {}, "postInstall": [], "models": [ { "id": "sd15-inpainting", "downloadFn": "hf_snapshot", "args": ["stable-diffusion-v1-5/stable-diffusion-inpainting", "sd15-inpainting"], "revision": "8a4288a76071f7280aedbdb3253bdb9e9d5d84bb", "allowPatterns": ["*.json", "*.txt", "tokenizer/*", "*.fp16.safetensors"], "path": "sd15-inpainting/unet/diffusion_pytorch_model.fp16.safetensors", "minSize": 1000000000 } ], "smokeImports": ["diffusers", "torch", "transformers"], "enablesTools": ["erase-object"] }, "upscale-enhance": { "name": "Upscale & Enhance", "description": "AI upscaling, face enhancement, and noise removal", "estimatedSize": "4-5 GB", "archives": { "amd64-gpu": { "file": "v2.0.0/upscale-enhance-amd64-gpu.tar.gz", "sha256": "b725a0b18a8295cb87e15f79b31c294f1de98101dedd76389728300a8d377a15", "compressedSize": 5358573124, "extractedSize": 8406943960 }, "arm64-cpu": { "file": "v2.0.0/upscale-enhance-arm64-cpu.tar.gz", "sha256": "bfb25ff1468d426ba6a125632beabece11e1afebfa6a3adefc64f7b81d7bf469", "compressedSize": 2319501276, "extractedSize": 3661453942 } }, "packages": { "common": [ "codeformer-pip==0.0.4", "huggingface-hub[hf_xet]==0.36.2", "einops", "setuptools<75" ], "amd64": [ "torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126", "lpips", "basicsr==1.4.2", "realesrgan==0.3.0", "mediapipe>=0.10.21" ], "arm64": [ "torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cpu", "lpips", "basicsr==1.4.2", "realesrgan==0.3.0", "mediapipe>=0.10.18" ] }, "pipFlags": { "codeformer-pip==0.0.4": "--no-deps", "basicsr==1.4.2": "--no-build-isolation" }, "postInstall": ["numpy==1.26.4"], "models": [ { "id": "realesrgan-x4plus", "url": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth", "sha256": "4fa0d38905f75ac06eb49a7951b426670021be3018265fd191d2125df9d682f1", "path": "realesrgan/RealESRGAN_x4plus.pth", "minSize": 60000000 }, { "id": "realesrgan-x2plus", "url": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth", "sha256": "49fafd45f8fd7aa8d31ab2a22d14d91b536c34494a5cfe31eb5d89c2fa266abb", "path": "realesrgan/RealESRGAN_x2plus.pth", "minSize": 60000000 }, { "id": "gfpgan-v1.3", "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth", "sha256": "c953a88f2727c85c3d9ae72e2bd4846bbaf59fe6972ad94130e23e7017524a70", "path": "gfpgan/GFPGANv1.3.pth", "minSize": 300000000 }, { "id": "codeformer-pth", "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth", "sha256": "1009e537e0c2a07d4cabce6355f53cb66767cd4b4297ec7a4a64ca4b8a5684b7", "path": "codeformer/codeformer.pth", "minSize": 350000000 }, { "id": "codeformer-onnx", "downloadFn": "hf_snapshot", "args": ["facefusion/models-3.0.0", "codeformer"], "revision": "728b9659bd9691bf32cbf7f61af478d94b7ba81e", "file": "codeformer.onnx", "path": "codeformer/codeformer.onnx", "minSize": 100000000 }, { "id": "facexlib-detection", "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth", "sha256": "6d1de9c2944f2ccddca5f5e010ea5ae64a39845a86311af6fdf30841b0a5a16d", "path": "gfpgan/facelib/detection_Resnet50_Final.pth", "minSize": 100000000 }, { "id": "facexlib-parsing", "url": "https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth", "sha256": "3d558d8d0e42c20224f13cf5a29c79eba2d59913419f945545d8cf7b72920de2", "path": "gfpgan/facelib/parsing_parsenet.pth", "minSize": 80000000 }, { "id": "scunet-color-real", "url": "https://github.com/cszn/KAIR/releases/download/v1.0/scunet_color_real_psnr.pth", "sha256": "fa78899ba2caec9d235a900e91d96c689da71c42029230c2028b00f09f809c2e", "path": "scunet/scunet_color_real_psnr.pth", "minSize": 3000000 }, { "id": "nafnet-sidd", "downloadFn": "hf_snapshot", "args": ["mikestealth/nafnet-models", "nafnet"], "revision": "cd3a91ddc41c9c3a53ee809b3ddd5263c9e94e51", "file": "NAFNet-SIDD-width64.pth", "path": "nafnet/NAFNet-SIDD-width64.pth", "minSize": 60000000 } ], "patches": [ { "file": "basicsr/data/degradations.py", "search": "from torchvision.transforms.functional_tensor import rgb_to_grayscale", "replace": "from torchvision.transforms.functional import rgb_to_grayscale" } ], "smokeImports": ["torch", "torchvision"], "enablesTools": ["upscale", "enhance-faces", "noise-removal"] }, "photo-restoration": { "name": "Photo Restoration", "description": "Restore old or damaged photos", "estimatedSize": "800 MB - 1 GB", "archives": { "amd64-gpu": { "file": "v2.0.0/photo-restoration-amd64-gpu.tar.gz", "sha256": "4747953db35c71b83db19ce12cc6c591730f0cb9f64621f239db17ae3e3563fd", "compressedSize": 4680254837, "extractedSize": 8172949791 }, "arm64-cpu": { "file": "v2.0.0/photo-restoration-arm64-cpu.tar.gz", "sha256": "261a27a176b9f3e76d8cd92576b73a1c014b19e87b4f16e58ed46d17c77697c0", "compressedSize": 1361837793, "extractedSize": 2584214411 } }, "packages": { "common": ["codeformer-pip==0.0.4", "huggingface-hub[hf_xet]==0.36.2", "setuptools<75"], "amd64": [ "onnxruntime-gpu==1.20.1", "mediapipe>=0.10.21", "torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126", "lpips", "basicsr==1.4.2", "realesrgan==0.3.0" ], "arm64": [ "torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cpu", "onnxruntime==1.20.1", "mediapipe>=0.10.18", "lpips", "basicsr==1.4.2", "realesrgan==0.3.0" ] }, "pipFlags": { "codeformer-pip==0.0.4": "--no-deps", "basicsr==1.4.2": "--no-build-isolation" }, "postInstall": ["numpy==1.26.4"], "models": [ { "id": "lama-onnx", "downloadFn": "hf_snapshot", "args": ["Carve/LaMa-ONNX", "lama"], "revision": "c3c0c9e468934d62e79c329e35d82dd09ff8c444", "file": "lama_fp32.onnx", "path": "lama/lama_fp32.onnx", "minSize": 100000000 }, { "id": "codeformer-onnx", "downloadFn": "hf_snapshot", "args": ["facefusion/models-3.0.0", "codeformer"], "revision": "728b9659bd9691bf32cbf7f61af478d94b7ba81e", "file": "codeformer.onnx", "path": "codeformer/codeformer.onnx", "minSize": 100000000 }, { "id": "realesrgan-x4plus", "url": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth", "sha256": "4fa0d38905f75ac06eb49a7951b426670021be3018265fd191d2125df9d682f1", "path": "realesrgan/RealESRGAN_x4plus.pth", "minSize": 60000000 }, { "id": "facexlib-detection", "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth", "sha256": "6d1de9c2944f2ccddca5f5e010ea5ae64a39845a86311af6fdf30841b0a5a16d", "path": "gfpgan/facelib/detection_Resnet50_Final.pth", "minSize": 100000000 }, { "id": "facexlib-parsing", "url": "https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth", "sha256": "3d558d8d0e42c20224f13cf5a29c79eba2d59913419f945545d8cf7b72920de2", "path": "gfpgan/facelib/parsing_parsenet.pth", "minSize": 80000000 }, { "id": "mediapipe-face-detector", "url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite", "sha256": "b4578f35940bf5a1a655214a1cce5cab13eba73c1297cd78e1a04c2380b0152f", "path": "mediapipe/blaze_face_short_range.tflite", "minSize": 100000 }, { "id": "mediapipe-face-landmarker", "url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task", "sha256": "64184e229b263107bc2b804c6625db1341ff2bb731874b0bcc2fe6544e0bc9ff", "path": "mediapipe/face_landmarker.task", "minSize": 1000000 }, { "id": "scunet-color-real", "url": "https://github.com/cszn/KAIR/releases/download/v1.0/scunet_color_real_psnr.pth", "sha256": "fa78899ba2caec9d235a900e91d96c689da71c42029230c2028b00f09f809c2e", "path": "scunet/scunet_color_real_psnr.pth", "minSize": 3000000 } ], "patches": [ { "file": "basicsr/data/degradations.py", "search": "from torchvision.transforms.functional_tensor import rgb_to_grayscale", "replace": "from torchvision.transforms.functional import rgb_to_grayscale" } ], "smokeImports": ["onnxruntime", "torch", "mediapipe"], "enablesTools": ["restore-photo"] }, "ocr": { "name": "OCR", "description": "High-accuracy local OCR for images and PDFs", "estimatedSize": "~208-234 MiB download / ~409-488 MiB installed", "runtimeFormatVersion": 3, "runtimeFamily": "ocr", "modelManifest": "docker/ocr-runtime-models.json", "targets": { "linux-amd64-cpu-py312": { "file": "v3/ocr-linux-amd64-cpu-py312.tar.gz", "compressedSizeEstimate": 244622462, "extractedSizeEstimate": 510762511, "sizeKind": "measured-estimate", "minimumMemoryBytes": 4294967296, "requirements": "docker/ocr-runtime-requirements-amd64.txt" }, "linux-arm64-cpu-py311": { "file": "v3/ocr-linux-arm64-cpu-py311.tar.gz", "compressedSizeEstimate": 218031562, "extractedSizeEstimate": 428565655, "sizeKind": "measured-estimate", "minimumMemoryBytes": 4294967296, "requirements": "docker/ocr-runtime-requirements-arm64.txt" } }, "packages": { "common": ["rapidocr==3.9.1", "onnxruntime==1.20.1"], "amd64": [], "arm64": [] }, "pipFlags": {}, "postInstall": [], "models": [], "smokeImports": ["rapidocr", "onnxruntime"], "enablesTools": ["ocr", "ocr-pdf"] }, "transcription": { "name": "Transcription", "description": "Speech to text for audio and video (subtitles)", "estimatedSize": "~600 MB", "archives": { "amd64-gpu": { "file": "v2.0.0/transcription-amd64-gpu.tar.gz", "sha256": "3033d480c6183df66855d78c355233dbc86a754d07414e544e1df1038337c9e1", "compressedSize": 559189061, "extractedSize": 845987840 }, "arm64-cpu": { "file": "v2.0.0/transcription-arm64-cpu.tar.gz", "sha256": "07088951300dec14b80f4723a3d5bd968574ce2650259be3fd487e7abb47e120", "compressedSize": 528491203, "extractedSize": 741534382 } }, "packages": { "common": ["faster-whisper>=1.0.0"], "amd64": [], "arm64": ["protobuf>=4.25.3,<5"] }, "pipFlags": {}, "postInstall": [], "models": [ { "id": "faster-whisper-small", "downloadFn": "hf_snapshot", "args": ["Systran/faster-whisper-small", "faster-whisper-small"], "revision": "536b0662742c02347bc0e980a01041f333bce120" } ], "smokeImports": ["faster_whisper", "ctranslate2"], "enablesTools": ["transcribe-audio", "auto-subtitles"] } } }