{"id":16456019,"url":"https://github.com/gnimuc/fabsoften","last_synced_at":"2025-10-27T07:31:07.139Z","repository":{"id":45958244,"uuid":"420687022","full_name":"Gnimuc/FabSoften","owner":"Gnimuc","description":"Unofficial implementation of \"FabSoften: face beautification via dynamic skin smoothing, guided feathering, and texture restoration\"","archived":true,"fork":false,"pushed_at":"2021-11-28T15:04:40.000Z","size":10545,"stargazers_count":41,"open_issues_count":3,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-28T17:16:27.317Z","etag":null,"topics":["cpp20","dlib","face-beautification","opencv"],"latest_commit_sha":null,"homepage":"","language":"C++","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/Gnimuc.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}},"created_at":"2021-10-24T13:07:04.000Z","updated_at":"2024-09-23T03:34:39.000Z","dependencies_parsed_at":"2022-08-28T17:33:47.350Z","dependency_job_id":null,"html_url":"https://github.com/Gnimuc/FabSoften","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gnimuc%2FFabSoften","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gnimuc%2FFabSoften/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gnimuc%2FFabSoften/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gnimuc%2FFabSoften/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gnimuc","download_url":"https://codeload.github.com/Gnimuc/FabSoften/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238455380,"owners_count":19475440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cpp20","dlib","face-beautification","opencv"],"created_at":"2024-10-11T10:24:26.778Z","updated_at":"2025-10-27T07:31:06.037Z","avatar_url":"https://github.com/Gnimuc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FabSoften\n\n[![Build Status](https://dev.azure.com/Gnimuc/FabSoften/_apis/build/status/Gnimuc.FabSoften?branchName=main)](https://dev.azure.com/Gnimuc/FabSoften/_build/latest?definitionId=1\u0026branchName=main)\n[![CI](https://github.com/Gnimuc/FabSoften/actions/workflows/CI.yml/badge.svg)](https://github.com/Gnimuc/FabSoften/actions/workflows/CI.yml)\n[![Windows](https://svgshare.com/i/ZhY.svg)](https://svgshare.com/i/ZhY.svg)\n[![Documentation](https://img.shields.io/badge/docs-dev-blue.svg)](https://gnimuc.github.io/FabSoften)\n\n\u003c!-- This project is mainly developed on Windows, and there is no intention to support other platforms at the moment. PRs are always welcome! --\u003e\n\nThis project is an unofficial implementation of [FabSoften: face beautification via dynamic skin smoothing, guided feathering, and texture restoration](https://openaccess.thecvf.com/content_CVPRW_2020/papers/w31/Velusamy_FabSoften_Face_Beautification_via_Dynamic_Skin_Smoothing_Guided_Feathering_and_CVPRW_2020_paper.pdf). This paper is from Samsung R\u0026D Institute Bangalore, India, and is very likely patented. This implementation is mainly for educational purposes, so the performance is not optimized.\n\n![](./assets/result.png)\n\n## Prerequisites\n\nThis project uses some C++20 features(e.g. [The One Ranges Proposal](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf)), so you need a relatively new C++ compiler.\nAs for the `ranges` feature, you need GCC 10+, Clang++ 13+, Microsoft Visual Studio 2019 16.10+. For other features, please check https://en.cppreference.com/w/cpp/compiler_support.\n\nBefore you begin, you'll install the following softwares on your system:\n\n- [CMake 3.21+](https://cmake.org/): An open-source, cross-platform family of tools designed to build, test and package software\n- [OpenCV 4+](https://github.com/opencv/opencv): Open Source Computer Vision Library\n- [doxygen](https://github.com/doxygen/doxygen)(optional): The de facto standard tool for generating documentation from annotated C++ sources\n- [7zip](https://www.7-zip.org/)(optional): A file archiver with a high compression ratio\n\n[7zip](https://www.7-zip.org/) is used for extracting [bzip2](https://en.wikipedia.org/wiki/Bzip2) files(e.g. `shape_predictor_68_face_landmarks.dat.bz2`). If you'd like to [manually provide those models](./models/README.md) without auto-downloading through CMake, there is no need to use 7zip. If not, make sure `7z -h` works on the command line, for example:\n\n```powershell\nC:\\Users\\Gnimuc\u003e7z -h\n\n7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21\n\nUsage: 7z \u003ccommand\u003e [\u003cswitches\u003e...] \u003carchive_name\u003e [\u003cfile_names\u003e...] [@listfile]\n\n\u003cCommands\u003e\n  a : Add files to archive\n  b : Benchmark\n...\n```\n\n\u003c!-- On Linux or macOS, you need `bzip2`. --\u003e\n\n## Build\nOn Windows, it's highly recommended to use `Powershell` or [Windows Terminal](https://aka.ms/terminal) to build this project:\n\n\u003c!-- I believe pro-Linux/macOS users are savvy enough to fix any problems on their own. ;) --\u003e\n\n```powershell\nmkdir build\ncd build\ncmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/your_install_prefix_dir\ncmake --build . --config Release\nctest --Release\n```\n\n## Examples\n\nThis library provides a thin C89 API over the C++ API, please check [this example](./examples/LibFabSoftenAPI) for details.\n\nThe C++ API and other examples can also be found in the `examples` folder.\n\n## TODO List\n\n- [x] Preprocessing\n  - [x] Landmark Detection\n  - [x] Binary Skin Mask\n  - [x] Blemish Detection and Concealment\n- [ ] Skin Mask Generation and Refinement\n  - [x] GMM Clustering (https://github.com/Gnimuc/FabSoften/issues/6)\n  - [ ] Segmentation?\n  - [ ] Guided Feathering (pending)\n- [x] Skin Imperfection Smoothing\n  - [x] Dynamic Mean Filter\n  - [x] Attribute-aware Dynamic Guided Filter\n- [ ] Skin Texture Restoration (Wavelet-based STR)\n\n## LICENSE\n\nFabSoften is primarily distributed under the terms of the MIT license.\n\nAll _code_ in this repository is released under the terms of the MIT license.\n\nThose [assets](./assets), [models](./models), and [external dependencies](./external) are released under their licenses, respectively.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnimuc%2Ffabsoften","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnimuc%2Ffabsoften","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnimuc%2Ffabsoften/lists"}