Report questions
Some of these answers are similar to the original proposal, but they have been updated to reflect changes since then
Progress since the proposal.
In the last proposal we thought of enhancing the
algorithm to make it more inclusive for various skin tones, however, we decided to change our focus slightly to make
the algorithm detect blemishes automatically. This is because when we tested the code for blemish removal
on different skin tones, we realized that it works equally well for both images. However, the code does not automatically
detect blemishes; the user has to click on whatever spot they want to be edited, and then the program enhances that area. This
will be a starting point for us to try and improve the existing solution we are using.
Currently, the Python implementation we are applying
uses a Sobel filter along with some best patch detection. It uses functions from cv2 (OpenCV) and numpy. For examples of this solution in action,
view the before and after images section. To try and improve upon this solution, we have found research papers with possible changes to implement.
These papers are some of our initial findings and may or may not contribute to the final solution. For more information regarding these papers, view
the research section.
Briefly explain what problem you are trying to solve.
The problem we are trying to solve is that when we take portraits or any close-up pictures, our blemishes or acne are seen clearly. This is
something that many people want to smoothen out or remove completely from photos to make themselves look acne free. The
difficulties of this problem come from the desire to have the blemishes removed and skin accurately replaced as if there was no blemish at all.
Why is this problem important?
This problem is relevant today because many people utilize photo-editing
apps, so it would be interesting to see how we could apply concepts we have learned in the course so far to make our own feature
to smooth out blemishes or enhance already existing implementations. It is also applicable as using funny or appearance altering
filters become more prevalent on social media apps like Snapchat and TikTok. Since this feature is already prevalent today, we
want to work towards improving the feature. We hope to do so by experimenting with various filtering techniques that we found
while researching our project.
What is the current state-of-the-art?
The current state-of-the-art for beautification apps and filters are live effects that adjust to your face's dimensions and color.
These apps/filters will automatically detect specific features and modify them. Examples being, making your nose smaller, lips
brighter, eyebrows narrower, acne removed, etc. These are done with advanced detection algorithms using varying techniques.
Some of these methods involve Gaussian Mixture Models, convolutional neural networks, Fast Global Smoothing Filter, Mutually Guided Filter,
Attribute-aware Dynamic Guided Filter, and many more(1). These filters do not have to be live changing though, and many apps
will take a picture and apply thorough filters. Even most native camera apps on phones have basic filters that adjust exposure, saturation,
etc.
Are you planning on re-implementing an existing solution, or propose your own new approach?
We are planning on re-implementing an existing solution using Sobel Edge Detection. Additionally, we plan on exploring other
edge detection algorithms that are mentioned in the research papers we are studying as well as class lectures. We read through various research papers and learned
about different filtering techniques such as Box Blurring, Gaussian Blurring, Differential Privacy Blurring, Gabor filter, Circle Detection,
and Hough Transformation. We plan on understanding those algorithms and detecting which of these makes most sense for our project and
experiment with those. We are particularly interested in experimenting with circle detection as well as the hough transformation to start
off with.
If you are proposing your own approach, why do you think existing approaches cannot adequately solve this problem? Why do you think
your solution will work better?
In the short term, we are not proposing a completely new approach. We are moreso looking to enhance the current algorithm by making it automatically
detect blemishes rather than having to manually select each blemish. As of now, this existing approach is not the best because it does not
have the option to just remove all blemishes at once, and it requires extra input from the user's end, which means it takes more time. In
this way, we are hoping that once we add our improvements, the program will work better and more efficiently.
How will you evaluate the performance of your solution? What results and comparisons are you eventually planning to show? Include a
time-line that you would like to follow.
We will evaluate the performance of the solution by testing it with images to see if the application is able to detect blemishes and then filter
out those spots, instead of the current state where we are manually filtering out the pictures. We have not created a concrete metric for this yet,
but will hopefully develop a more rigorous evaluation as the project progresses.
We plan on meeting once a week to discuss our project implementation as well as work on the code to improve the existing applications. The week before the project presentation date, we will meet more frequently to make sure we are prepared to submit the project and present.







