Automated image analysis using Machine Learning
Object detection in images is a tedious task, requiring accuracy and meticulous attention. If done under pressure of time, the precision often drops, as the human focus is declining.
As a part of our Research and Development project, partially funded by The National Centre for Research and Development, we created an algorithm-powered solution for automated object recognition. The work within the Erra project dovetails with research carried out in the project described fully in our previous article.
In a nutshell
- Advanced image analysis & recognition tool
- Problem-agnostic solution designed to work on any pre-trained neural network model
- Instructions for certain image recognition problems (including neural network model) wrapped in separate modules
- Offered in a variety of forms: Dotnet NuGet package (to be used within clients’ .NET apps and solutions), on-premise web service with an exposed REST API (to be used with any technology) and UI interface
- Video analysis (pre-recorded and live footage)
- A scalable solution that can utilize the full available computing power
- Modules, and the framework itself, are purchasable, and can detect various objects depending on needs
Project execution called for dedicated tools to create, test and debug modules
Erra is a modular, scalable solution connected to the bacteria recognition works, carried out by our Research and Development team. As a result, a solution for efficient microbial identification and counting was created.
Our R&D team has prepared modules containing neural network models, along with input image processing and output data shaping/sanitizing instructions. Each module solves a certain type of problem (1 problem per module) and can be tailored to the needs of our clients. Every problem that could be boiled down to image analysis and recognition could be solved, e.g.: bacteria recognition on Petri dishes.
The units enclosing neural networks can be created on-demand by the team to address a wide range of problems. Our execution engine carries out the modules (delivered in the form of a NuGet package or a dedicated web service), created along with a dedicated debugger, module compiler, testing tools, and a high workload stress tests environment for a top-notch QA. The modules live as separate files and could be adjusted and updated without changing the execution engine.
A solution offered in a variety of forms
The execution engine is a NuGet package to be used within any .NET application.
Additionally, there is a wrapper service that exposes the NuGet package functionalities via the REST API so any app can send an image and read the recognition results, no matter what technology it’s based on. For the demonstration and test purposes, this wrapper has a user interface (web page) prepared as well.
Given the fact that a video is a sequence of images, Erra can also process videos with the same modules, outputting results frame-by-frame (independently for each frame).
With some additional effort (ensuring the workstation is efficient enough, features sufficient graphics cards, etc.) Erra can work on live streams. Since the modular solution is delivered as a library, it opens plenty of possibilities when it comes to reacting to live footage.
Object detection results
The project resulted in the successful assessment of bacterial colonies on Petri dishes. The solution was comprehensively tested, including unit and stress tests, ensuring the proper functioning, quality, and scalability of the end product.
As a result of the Erra project, the R&D department can conduct any research if necessary, as long as the input is images, and the output is bounding boxes, serving as a point of reference for object identification. What we mentioned previously, researchers can use the product independently of developers, as all necessary tools are available. The developed solution, apart from static images recognition, is suitable for use in videos and live footage processing, and is available in the form of purchasable modules addressing various needs.