Open Sourcing the BrainFrame Client
Today we’re excited to announce the open-sourcing of our BrainFrame Client on GitHub. BrainFrame is our platform for performing deep learning on a wide variety of video sources using containerized models and algorithms, and our client serves as an interface to the system for configuration and display of results. While the BrainFrame Client is our official client, BrainFrame’s API is publicly available and documented and any user or customer is freely able to use it to write their own client.
Challenges in the Smart Vision AI Space
First, a little background on BrainFrame and the product that the client has been designed to support. We believe that cameras can be used as sensors for nearly any application you can dream of—think of what people can do with their eyes alone. Harnessing the data from cameras has become orders of magnitude more possible in the past decade thanks to advances in deep learning. However, even with all these advances, there are still many common hurdles related to the deployment of video analytics solutions for real-time video streaming:
- Requirement of expertise across several domains, including video streaming, algorithm development, data science and management, and server side development
- Every use case is slightly different and will require different models, and integrations, into existing systems
- Deployment hardware will vary. Some customers will need on-premises devices; others will require a cloud-only deployment; some even a cloud+premises hybrid model
BrainFrame was created to solve all of these problems. It gives developers a smart vision platform that’s easy to scale, highly configurable, and deployable on-premises or to the cloud
The BrainFrame Client acts as the bridge between the complicated logic of the BrainFrame server ecosystem and the end customers, who might be system integrators or even complete laymen to the field.
About the Client
The client is a multifaceted product that performs all the standard tasks a user of BrainFrame will need. It allows you to add and remove video streams, from sources such as IP Cameras, webcams, and video files. VisionCapsules can be added, removed, and configured through the UI, allowing for quick and seamless project setup and customization. The client also allows users to add and view Identities in the BrainFrame backend, allowing the system to track known individuals and/or encoded objects.
The client isn’t just for configuration. It’s also used as a means to monitor the current status of the system. You can see inference results of the VisionCapsules live, overlaid on top of the video streams. The client also allows users to view logs of activated Alarms (known as Alerts) — when they occurred, why they occurred, and the frame on which they occurred.
As of today, the source for the BrainFrame Client is available on GitHub and is released under the BSD 3-Clause license. This means that anyone is free to modify, use, and distribute the client source however they see fit, assuming, of course, that they comply with the license. We hope this will serve to be a useful contribution to the open source community.
We hope that users of the BrainFrame backend will be able to use our client as a starting point, or at least a point of reference, when creating solutions for their own use cases in their unique industry verticals. We believe having a realized example of a client that makes full use of the BrainFrame Python API (and by extension, the BrainFrame REST API) will be incredibly helpful to any BrainFrame developer. Developers can build upon the groundwork of the official client, and maybe even contribute back to the upstream project if you’re feeling generous.
One of the challenges we’ve faced while developing the client for BrainFrame has been the relative lack of large, open-source, Qt-based projects written in Python to use for reference. While a few projects exist, such as qutebrowser and the eric IDE, there aren’t that many. Hopefully our client can serve as a good point of reference for other future projects in the Python Qt ecosystem.
In the coming future we plan to document and share some of our design decisions we’ve made concerning the client in a series of blog posts. Hopefully the Python Qt community will find them helpful and insightful. While not strictly related to Python Qt, we’ve already written one post about our technique (and reasoning) to keep a (tiny) component of the client closed source here.
Aotu fully intends to continue to contribute to the open source community. We anticipate being able to replace the tiny closed-source component of the client with a better, open-source replacement in the near future. Our reference implementation of the BrainFrame API is available here. We will continue to support OpenVisionCapsules, which we released under the OpenCV umbrella for all to use.
Get in Touch
If you’re interested in learning more about our products be sure to sign up to our mailing list here. We’ll be sending out a few more blog posts on some of the design decisions we made and best practices we learned while making our PyQt-based client soon.
We also have upcoming support for custom client extensions that users will be able to load dynamically. This will be especially useful for customers and users who want to add extra functionality to their installation without having to modify the BrainFrame client source. If this interests you, reach out to us at firstname.lastname@example.org; we’re interested in working directly with some users to make sure we’re covering lots of use cases. We’ll be sending more information about this on the mailing list soon as well.