We already detected the insight and developed the idea, and in my mind, I have a visualization on how the application will work, but before anything, we need to focus on building the generative model that allows us to show different hairstyles in the most realistic way. If we do not have the model, then the application is not possible.
So, there are three approaches to build the model.
- Teach the model to adjust pre-loaded hairstyle images.
- Teach the model to generate hairstyles.
- Teach the model to swap faces.
The first approach was discarded immediately. If we take that approach, then we are limiting the user to choose only among the pre-loaded hairstyle catalog. Also, we’ll only be able to show the front view unless we create a model for each angle.
We maybe think that approach two is the best, but no. There are several reasons why this approach is not viable YET. Hair is too complex because there is a lot of variation between hairstyles of the same category, and that makes quality not good in deep learning systems. Also like approach one, we would only be able to show the frontal view of men’s hairstyles and the back view of woman’s hairstyles (because the majority of images that we can access to create the dataset are in that way). In fact, until now I could only find one single research related to hairstyle generation called: Learning to Generate and Edit Hairstyles. This is an exciting opportunity for research and advancement in the area of computer vision and generative models.
Finally, the third approach which is the most viable of the three. By changing the face we are avoiding the problem of show only the front or the back of a hairstyle. Also, we add flexibility since we can swap any face in any image or video, that means that a user can add a photo of an artist with a great hairstyle and saw himself with it. There are a lot of information and papers that can help us to create a high-quality model too.
So, I chose the third approach, although still a lot of future problems to solve, like color skin, facial geometry, angle quality, and one shot learning to name a few, this will be the way in which I will create the application kernel…