The Initial Consulting Session is a free event and allows us to establish a feel for your needs and your projects. During this session you as a customer can also establish if we are the correct supplier and partner for your needs. Please don't hesitate and schedule a 30 min initial consultation for free.
A requirement analysis session leads to a list of project requirements. This document allows to answer what the product is supposed to do. Although this does not provide many details it at least gives a very promising starting point and allows to move forward. It incorporates three steps:
1. The detailed discussion with the customer
2. The documentation and layout of the requirement in a comprehensive document
3. A presentation of the requirements and approval by the customer
In the third phase the system architecture is developed. The system architecture provides information of the components of the system and how they interact with each other. There are two main phases:
1. The high level architecture development phase
This phase presents all components of a system on a reasonably detailed level. It describes which components communicate with each other and some estimates on the complexity of each system component.
2. A much more detailed architecture specification then defines if a certain component may be implemented in hardware or in software and if accelerators are required. Communication protocols are already named as well as algorithms are selected.
During this phase the system is implemented in a typical simulation environment. Usually a Matlab based simulation is recommended but Python also is well established and provides many features which allow to develop algorithms. This is not a real-time environment but serves to prove the correctness of the system and the algorithms.
The final implementation of the algorithms and the pipeline is performed during the implementation phase. If the system requires hardware acceleration, the implementation is done in synthesizable VHDL or Verilog targeting FPGAs or ASICs. The software components are typically implemented in C, C++ or Java, yet also GPU implementations using CUDA or Vulkan SDK are possible. Nevertheless, sometimes digital signal processors require the direct implementation in assembler for highest performance.
Although intense testing and verification is performed throughout all phases of the implementation process a final test and verification phase is performed, which ensures that all corner cases are covered and the resulting implementation performs according to the specifications.
The first step in the AI and ML model development process is to collect enough training data. The training data is usually provided by the customer. The data needs to be analyzed, cleansed and reorganized so it is in a format which can be used as training data for a neural network.
AI models and architectures need to be adapted to the requirements given by the problem space. During the model development phase, which is intertwined with the training and testing phase, the number of layers, the activation functions and other parameters are determined.
During the model training phase the data, which was collected in the first phase and the model which was developed in the second phase now come together. During this phase the data is fed into the model and the parameters are adjusted by means of one of the many backpropagation algorithms.
The trained model is then tested against a test dataset. The test dataset has the same format as the training data, whereas it was not used for training before to keep neutrality of the model. If the results of testing phase are two far out of line withe required accuracy, most often the model needs to be adjusted. If the model provides a very high accuracy, a reduction of the number of parameters by pruning and more optimized quantization of the weights and the data may lead to more efficient networks.
Once the model performance meets the required accuracy and it is resource optimized, it will be translated into a model in the target language. The target languages are defined by the needs of the target platform, i.e. C/C++, VHDL, Verilog and others. This also implies that the earlier stated implementation and testing phases become a part of this flow.
In many cases what we do is so unique and new that new IP is established during the development process. Therefore we offer the customer the opportunity to file patents.
During a invention review phase areas of potential uniqueness and new features are identified, discussed and selected. These areas are usually ones which are at the core of the customers products and imply a high innovative potential.
Once the general area and direction is identified in which the customer wants to operate and where the IP emphasis shall be. This step identifies a pretty exact set of inventions and inventive steps. Usually there are a multiplicity of potential inventions identifiable during this process.
Each identified invention is documented in detail. Besides the documentation of the invention itself existing literature and patent publications may be considered and named to ensure that a prior art research is already performed.
The detailed documentation is then presented to a patent lawyer. We are working closely with the patent attorney to ensure that a correct representation of the invention is filed as a patent.
In many cases a patent application requires supportive action and information. In this phase we are supporting the patent attorney to answer all questions from the USPTO and other entities to ensure a positive outcome of the patent application process.