If you, or someone you know, is interested in sponsoring the newsletter, please reach out at email@example.com
CompreFace is a free and open-source facial recognition system.
language: Python, stars: 900, watchers: 37, forks: 47, issues: 11
last commit: March 02, 2021, first commit: September 16, 2019
Police-settlements is a FiveThirtyEight/The Marshall Project effort to collect comprehensive data on police misconduct settlements from 2010–19.
language: R, stars: 107, watchers: 10, forks: 9, issues: 0
last commit: February 22, 2021, first commit: February 22, 2021
LibrePhotos is a self-hosted alternative to Google Photos.
language: Python, stars: 2114, watchers: 49, forks: 76, issues: 86
last commit: February 27, 2021, first commit: May 23, 2017
glci allows you to test your Gitlab CI Pipelines changes locally using Docker.
last commit: March 02, 2021, first commit: February 17, 2021
If you’re interested in posting a help wanted ad for your project to thousands of open-source developers, send an email to firstname.lastname@example.org
An Interview With Sergii of CompreFace
Hey Sergii! Let’s start with your background. Where have you worked in the past?
I’ve been working for Exadel for more than 8 years where I started as Junior Developer and am now Tech Lead/AI Practice Lead.
You’re working on CompreFace at Exadel, why was CompreFace started?
We just formed the Artificial Intelligence and Data Science Community at Exadel and wanted to try out some interesting technologies. At the same time, Exadel was solving a problem that the company has a lot of experience with (AI) but couldn’t show it because most of our projects are under NDA. So, we were trying to find a project that was:
Interesting for developers
Easy to understand and show to potential clients
Would add value to Exadel as a whole
This wasn’t an easy task. We created a list of ideas and after several weeks of debates, we landed on the idea of a face recognition solution. Soon after, Exadel created the AI Practice. One of the functions of which is to show the world Exadel’s AI solutions. We decided that the best way to show CompreFace is to open-source our facial recognition system.
Are there any overarching goals of CompreFace that drive design or implementation, and if so, what trade-offs have been made in CompreFace as a consequence of these goals?
The main goal of CompreFace is to make face recognition more accessible to a wide variety of developers. This means that CompeFace should be easy to use by non-machine learning developers and should not depend on the programming language chosen. In other words, CompreFace should work with “add face” and “recognize face” concepts. To achieve this goal CompreFace needed to:
Store embeddings (the results from the neural network) in a database
Provide a REST API for all face recognition operations
The choice here was to put everything in Docker containers, as it would not only allow us to meet these requirements but also to easily add more functionality and make it extendable and scalable.
The consequence here is that even though Docker is very popular, there are some developers that don’t have it installed yet, so they will have to install Docker first. Of course, for those who already have Docker installed, CompreFace can be installed in one command.
What is the most challenging problem that’s been solved in CompreFace, so far?
At the beginning of the project, there was a period when there was no Python developer on our team, so we decided to make the Python part of the application as simple as possible and moved everything we could to a Java server. We decided to work with the database only from the Java server, but that meant we had to actually recognize faces from embeddings in Java as well.
CompreFace uses euclidean distance for face recognition, and there are tons of examples using different libraries of how to calculate it in Python. But after research, I realized that there are no examples and there is no good choice for linear algebra in Java. After many failures, I managed to implement it using the ND4J library (part of Deeplearning4j), so it has the same performance as the fastest Python implementations. The implementation can be found here.
What was the most surprising thing you learned while working on CompreFace?
Probably that face recognition is not a solved problem. Every few months there are new algorithms that come about that are better than the previous.
MultiFace in February 2021
Partial FC in November 2020
SubCenter-ArcFace in August 2020
ProgressFace in August 2020
GroupFace in May 2020
With things developing so quickly in this space, how do you stay up to date?
To stay on top of the trends I recommend checking the paperswithcode website, they collect all new research papers and group them by tasks.
What is the release process like for CompreFace?
We automate releases using Jenkins, so probably the release process from a development perspective is not so interesting. We just take the last docker image that went through regression testing and push it to our DockerHub.
But the release process includes not only delivering a product, but also documentation and marketing. I’m a software developer and am not as familiar with marketing stuff, but I realize that without it users won’t find our face recognition system and won’t use it. I hope this next information will be useful for developers who are thinking of starting a new project on GitHub.
Before each release, I:
Prepare release notes to post in the GitHub repository
Prepare a blog post for our blog
Prepare an email to subscribed users.
Then on the release date, I post everything simultaneously and wait for feedback.
How do you intend on monetizing CompreFace?
At this point, our plan is to use a typical open-source monetization strategy, which is a free product with paid support and services. The offered services include integration, customization, new feature development, training, etc. To reach us you can use the Exadel contact form or email CompreFace.
What is the best way for a new developer to contribute to CompreFace?
First of all, they could contact me personally and just ask, I believe I can find a suitable task for everyone :)
There are different directions where contributors (not only developers) can help:
Just use CompreFace and report ideas and bugs on GitHub
Share their knowledge and experience via posting guides and articles, or just improve our documentation
Create SDKs for their favorite programming language
If you are a machine learning developer and eager to research something, we have interesting topics to dive into, just contact us, I’ll share them with you
And last, but not least, you can just give a star to our free facial recognition system on GitHub
Where do you see CompreFace heading next?
Right now we are finishing the development of new cool CompreFace features:
Face detection and face verification services
Plugins - age, gender, landmarks, calculator
Support of InsightFace library and face recognition models
There will be more information after the next release.
We also received lots of feedback from users, so the next CompreFace improvements could include:
Adding SDKs for the most popular languages (like Python, JS, etc)
Support of ARM processors
Manage face collection from UI
Liveness detection (this definitely requires long research)
Any idea on the priority of the SDK support?
Where do you see software development in-general heading next?
Software developers don’t like routine work, so they always try to automate it. This is also what CompreFace is about - every face recognition project requires developers to implement certain features that CompreFace already has. So, CompreFace helps simplify the work of developers. The same will be with other routine tasks, some cool solutions are coming to help automate them.
Where do you see open-source heading next?
More companies realize they have great technologies they created for themselves and it will be a win-win if they share them with everyone. This is why Exadel started to open-source its solution and there are already plenty of repositories in the Exadel GitHub account. I believe we will have even more solutions from Exadel and other companies.
Do you have any suggestions for someone trying to make their first contribution to an open-source project?
I suggest choosing a less popular and mature project, but a project that you are passionate about. Why?
You will have more joy from contributing to it
It’s easier to find out how to contribute, a project owner is always very happy to find contributors
You will be proud of yourself if you know that the part of the success of the project is your work
And, lastly, don’t hesitate to contact the team and ask how you can help. There are likely plenty of ways to help that you haven’t even thought about.
Like what you saw here? Tell your friends about Console and win free swag!
Also, don’t forget to subscribe to get a list of new open-source projects curated by an Amazon software engineer directly in your email every week.