Amazing advances are occurring in the field of artificial intelligence. I didn't want to wait until grad school to participate, so I decided to take a look at what is freely available. Looking at cool recent developments I came across neural style transfer. This project seemed awesome and it seems that since 2015, a lot of Github projects have arose from it. So I've put some essential functionality into an easy to use Application called "Art it Up".
What it does
Choose a picture from your gallery or take a new one, pick one of the six paintings that are listed below, and click transform. In less than a minute you will be able to see your picture in the style of the picture you chose.
How I built it
To start I created a simple react-native project that allows a user to select a picture, the picture is then encrypted and sent to the server. The server then decodes the image, transfers the style through machine learning algorithms created with python and Tensorflow, which I pulled from here link, and finally returns the transformed image to the user and displays it on their screen.
Challenges I ran into
Running it from a localhost is memory intensive. So I set up a remote Microsoft Azure virtual machine with large memory capabilities. The server still crashes if the image's resolution is too high, but I try to fix this by resizing the image from the client side. I also struggled quite a trying to store the JSON response from the server, a bug that only occurs when using Android. The response is still lengthy, but if the server size were increased, the response time would be far better. Also, at the moment, the app only works on iOS.
Accomplishments that I'm proud of
I think its awesome that a student has such easy access to so many cool tools, which creates a path to my proudest accomplishment, not giving up until I find the answer on the internet.
What I learned
Creating "Art it Up" I learned how to set up remote servers and quickly discovered the usefulness of free Microsoft Azure credit. On the development side, I've learned how to create back-end APIs for applications. But most importantly I've discovered that many times it is easier to write the entire stack from scratch, rather than attempting to modify an existing one that you do not fully understand.
What's next for Art it Up
As regards the front-end, I'll add more examples of great art for users to choose from. I'll also make an attempt to improve the server speed.