{"id":45914119,"url":"https://github.com/dan64/vs-propainter","last_synced_at":"2026-02-28T07:08:51.386Z","repository":{"id":242189932,"uuid":"808907788","full_name":"dan64/vs-propainter","owner":"dan64","description":"Vapoursynth filter using ProPainter: Improving Propagation and Transformer for Video Inpainting ","archived":false,"fork":false,"pushed_at":"2026-01-02T08:59:12.000Z","size":88,"stargazers_count":15,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-08T07:42:35.778Z","etag":null,"topics":["object-removal","vapoursynth","video-inpainting","watermark-removal"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dan64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-06-01T06:04:34.000Z","updated_at":"2026-01-02T08:55:50.000Z","dependencies_parsed_at":"2024-06-05T18:26:12.847Z","dependency_job_id":null,"html_url":"https://github.com/dan64/vs-propainter","commit_stats":null,"previous_names":["dan64/vs-propainter"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dan64/vs-propainter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan64%2Fvs-propainter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan64%2Fvs-propainter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan64%2Fvs-propainter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan64%2Fvs-propainter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dan64","download_url":"https://codeload.github.com/dan64/vs-propainter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan64%2Fvs-propainter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29927265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["object-removal","vapoursynth","video-inpainting","watermark-removal"],"created_at":"2026-02-28T07:08:48.638Z","updated_at":"2026-02-28T07:08:51.380Z","avatar_url":"https://github.com/dan64.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProPainter\nImproving Propagation and Transformer for Video Inpainting using Vapoursynth, based on [ProPainter](https://github.com/sczhou/ProPainter).\n\nThe Vapoursynth filter version has the advantage of transforming the images directly in memory, without the need to use the filesystem to store the video frames. Using Vapoursynth the filter is faster and don't have any limitation on the number of frames that can be elaborated. \n\nIn order to improve the inference this implementation includes *scene detection* in the frames provided in the inference batch. In case of a scene detection the first frame of the new scene is included in the next inference batch. The sensitivity of the scene detection can be defined using the parameter *sc_threshold* (see [Miscellaneous Filters](https://amusementclub.github.io/doc3/plugins/misc.html)).\n\n## Dependencies\n- [PyTorch](https://pytorch.org/get-started) 2.2.0 or later\n- [VapourSynth](http://www.vapoursynth.com/) R68 or later\n- [MiscFilters.dll](https://github.com/vapoursynth/vs-miscfilters-obsolete) Vapoursynth's Miscellaneous Filters\n\n\n## Installation\n```\npip install vspropainter-x.x.x-py3-none-any.whl\n```\n## Models Download\nThe models are not installed with the package, they must be downloaded from the ProPainter github site. \n\nThe models to download are:\n\n- [ProPainter.pth](https://github.com/sczhou/ProPainter/releases/download/v0.1.0/ProPainter.pth)\n- [raft-things.pth](https://github.com/sczhou/ProPainter/releases/download/v0.1.0/raft-things.pth)\n- [recurrent_flow_completion.pth](https://github.com/sczhou/ProPainter/releases/download/v0.1.0/recurrent_flow_completion.pth)\n\nThe _model files_ have to be copied in the **weights** directory usually located in:\n\n.\\Lib\\site-packages\\vspropainter\\weights\n\n## Usage\n```python\n# adjusting color space to RGB24 (full range) for vsProPainter\nclip = core.resize.Bicubic(clip=clip, format=vs.RGB24, matrix_in_s=\"709\", range_s=\"full\")\nfrom vspropainter import propainter\n\n# ProPainter using a mask image\nclip = propainter(clip, img_mask_path=\"sample.png\")\n\n# ProPainter using a clip mask\nclipMask = core.lsmas.LWLibavSource(source=\"sample_mask.mp4\", format=\"RGB24\", cache=0)\nclip = propainter(clip, clip_mask=clipMask)\n\n# ProPainter using a mask image region\nclip = propainter(clip, img_mask_path=\"sample.png\", mask_region=(460,280,68,28))\n\n# ProPainter using outpainting\nw = clip.width + 8\nh = clip.high + 32\nclip = propainter(clip, model = 1, length=50, mask_dilation=0, outpaint_size=(w, h))\n\n```\nSee `__init__.py` for the description of the parameters.\n\n## Memory optimization and inference speed-up\n\nVideo inpainting typically requires a significant amount of GPU memory. The filter offers various features that facilitate memory-efficient inference, effectively avoiding the _out of memory_ error. You can use the following options to reduce memory usage further:\n\n- Reduce the number of local neighbors through decreasing the parameter *neighbor_length* (default 10). \n- Reduce the number of global references by increasing the parameter *ref_stride* (default 10).\n- Set the parameter *enable_fp16* to **True** to use fp16 (half precision) during inference.\n- Reduce the sequence's length of frames that the model processes, decreasing the parameter *length* (default 100).\n - Set a smaller mask region via the parameter *mask_region*. The mask region can be specified using a _tuple_ with the following format: (width, height, left, top). The reduction of the mask region will allow to speed up significantly the inference, expecially on HD movies, but the region must be big enough to allow the inference. In the case of bad output it will be necessary to increase its size.\n - Disable scene detection by setting *sc_threshold=0* (default 0.1).\n\nWith the only exception of parameter *length* the options to reduce the memory usage will allow also to speed up the inference's speed. \n\nIn the case the mask will not be able to totally remove the masked object it is possible to increase the parameter *mask_dilation* to extend the mask's size (default 8).\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan64%2Fvs-propainter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdan64%2Fvs-propainter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan64%2Fvs-propainter/lists"}