Giter Club home page Giter Club logo

fabsoften's Introduction

FabSoften

Build Status CI Windows Documentation

This project is an unofficial implementation of FabSoften: face beautification via dynamic skin smoothing, guided feathering, and texture restoration. This paper is from Samsung R&D Institute Bangalore, India, and is very likely patented. This implementation is mainly for educational purposes, so the performance is not optimized.

Prerequisites

This project uses some C++20 features(e.g. The One Ranges Proposal), so you need a relatively new C++ compiler. As 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.

Before you begin, you'll install the following softwares on your system:

  • CMake 3.21+: An open-source, cross-platform family of tools designed to build, test and package software
  • OpenCV 4+: Open Source Computer Vision Library
  • doxygen(optional): The de facto standard tool for generating documentation from annotated C++ sources
  • 7zip(optional): A file archiver with a high compression ratio

7zip is used for extracting bzip2 files(e.g. shape_predictor_68_face_landmarks.dat.bz2). If you'd like to manually provide those models 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:

C:\Users\Gnimuc>7z -h

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]

<Commands>
  a : Add files to archive
  b : Benchmark
...

Build

On Windows, it's highly recommended to use Powershell or Windows Terminal to build this project:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/your_install_prefix_dir
cmake --build . --config Release
ctest --Release

Examples

This library provides a thin C89 API over the C++ API, please check this example for details.

The C++ API and other examples can also be found in the examples folder.

TODO List

  • Preprocessing
    • Landmark Detection
    • Binary Skin Mask
    • Blemish Detection and Concealment
  • Skin Mask Generation and Refinement
    • GMM Clustering (#6)
    • Segmentation?
    • Guided Feathering (pending)
  • Skin Imperfection Smoothing
    • Dynamic Mean Filter
    • Attribute-aware Dynamic Guided Filter
  • Skin Texture Restoration (Wavelet-based STR)

LICENSE

FabSoften is primarily distributed under the terms of the MIT license.

All code in this repository is released under the terms of the MIT license.

Those assets, models, and external dependencies are released under their licenses, respectively.

fabsoften's People

Contributors

gnimuc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

fabsoften's Issues

The skin mask refinement module?

I didn't find much useful info about the implementation detail of the skin mask refinement module in the paper.

It looks like the basic idea is to use GMM-based clustering for image segmentation.

This example implements the clustering part, but still can't get meaningful clustering results:

r1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.