Tuesday, October 18, 2016

Face detection. Google Vision or Swift Core-Image or OpenCV or DLib

To improve Turbanizer, one thing I should accomplish is to put Turban and beard in real-time (like Snap-chat effect). It relates to a lot of Computer Vision techniques and many experiments.
Google Vision is a cloud for computing face detection. It is extremely strong but the drawback here is that it just supports API call over, so real-time face tracking is impossible with that. We consider the rest library because we can implement that inside Swift project, so real-time requirement can be fulfiled.
The library you should always think about when come to Computer Vision is Open CV. To implement OpenCV inside Swift, the setup is quite tedious. We should create C++ wrapper by Obj C and then call Obj C function inside Swift. With Haar Casacade face detection methods, openCV support detection of many kinds of face features such as nose, mouth, eyes. However, it turns out that the accuracy is very low.
DLib is a super powerful face detection library in which it supports facial land mark. The face shape, the chin curve can be detected using DLib. It is very big bonus because adding beard to face is a feature we really want to have and it can be easily with facial land mark detection. The drawback of DLib is the super complication in the setup with very heavy libraries dependencies. We did not choose it for the first prototype due to it complexity.
Swift Core Image. A nice solution for fast development. It is unbelievable easy to achieve face tracking with higher precision than OpenCV. However, its big disadvantage is that its functions are very limit and it returns mouth, eyes point position instead of bounding boxes. As a result, when apply turban and beard to face, they are not perfectly aligned. Because of the limit time, we still choose Swift Core Image as the main library for this project. 
I think I overestimate myself a little bit. This task is quite hard for me. I should choose the better work around way that can reduce user experience to attain better accuracy

Sunday, October 2, 2016

Turbanize :D

Hooray, final assignment.
After the external pitching, I was quite impressed by the Turbanizer idea. It is a very fun application requiring skills in image processing, which I also intended to build. I also respect Ash Singh because of his long experience in business and It will be great if I can learn from him. That's why I decide to team up my former CS3217 teammate for the final project. Manh is a IOS developer god who can deliver one feature per hour and I really trust him. Last semester, we got 2nd prize in STEPS showcase for ACT IT OUT!, which is thanks to his great contribution. The other two members are Piyush and Varun. We haven't worked before but as I know, Piyush is very good at Marketing and design and Varun is a very solid coder. Thus, I believe we can make a good team and deliver the best product for this final project.

The end of assignment 3

Assignment 3 has ended for 1 week but till now I can have the time to write about it.

Finally after a very tedious week, we can deliver a pretty good application. The map is shown with the emoji. The news feed is live and very funky.

The thing I'm quite proud of is the real time feeds, comments and votes. Even it works pretty well but I dont think my solution is implemented properly. I think I should pick Firebase in the first place because it eases a lot of work. However, we were using SQL as the main database, I didn't want to use one more database to support extra features.

Another thing that I'm regretting right now is that I host SQL server by Amazon RDS service and it is costing me some money. After the first deployment, I should better create SQL server on the host machine. It is now late to change because the data will be lost if we migrate. However, one good takeaway is that I know how to use RDS service :D.

Overall, Im quite satisfied with my Assignment 3. Thank you Leon, Larry, Kai Yi. We made a great team. Let's pray for the best.