If you do not have a particular sensor in mind or available to you, the V1KU board features a high quality monochrome CMOS sensor from Micron delivering up to 60 frames per second at a resolution of up to 752x480.
Definitely, the V1KU is delivered with a ready-to-use application called the CogniSoft™ - Image Training System.
You can teach what you want to recognize, monitor the results of the recognition on screen and when satisfied with the results, save the knowledge to the file system.
If your application requires scanning, tracking or more, contact CogniMem to obtain a list of partners who can help you with the programming of the board.
Yes, a simple demonstration of target tracking can be made with the CogniSoft™ - Image Training System by learning a known target at 3 different positions within a region of interest centered in the field of view: (1) target is centered, (2) shifted to the right, (3) shifted to the left.
When the recognition logic of the CogniMem chip is active, the recognized category is transmitted to the GPIO lines at frame rate.
This means that a motion controller properly interfaced with V1KU (both mechanically and electronically) could always re-center the target to be in the middle of the field of view.
Due to the memory capacity of the CM1K neuron, you have to limit the pattern (vector) to a maximum of 256 bytes.
Consequently, if the image is larger your options are:
Compressing or sub-sampling a full image into a "down-sized" image that is <= 256 bytes, this process is described in more detail in the CM1K datasheet.
Keep in mind, under many conditions the effect of this approach will be an image that has lost too much of its resolution to still be useful.
Tile the image into 16x16 regions and train the chip on each of these regions, you can even elect to put each tile location into a unique "context"
You may choose to overlap the tiles or not based on your application needs.
If the image resolution is large enough (e.g. hyper-spectral images) you can store the entire contents of one pixel in each neuron.
Yes, however please note that the recognition engine built into the CogniMem chip extracts a monochrome feature from the video image.
This means that the display may appear in color but the recognition will be based on the luminosity only.
If the color information is critical to your application, you have the following options:
The extraction of a color signature can be programmed in the FPGA of the board and the resulting vector(s) sent to the neurons using either the parallel neuron bus of the CM1K
or by using the digital input bus of the CM1K in “Bypass” mode if a best-match response is sufficient to your application
The extraction of a color signature can be programmed on an external controller and sent to the board digital input bus if a best-match response is sufficient to your application
Yes, however please note that the recognition engine built into the CogniMem chip extracts a monochrome feature from the video image.
If the higher resolution is critical to your application, you have the following options:
The extraction of a custom signature can be programmed in the FPGA of the board and the resulting vector(s) sent to the neurons using the parallel neuron bus of the CM1K
or by using the digital input bus of the CM1K in “Bypass” mode if a best-match response is sufficient to your application
The extraction of a custom signature can be programmed on an external controller and sent to the board digital input bus if a best-match response is sufficient to your application
If you intend to work with images saved to disk, CogniBlox is the ideal platform since it contains 4MB of MRAM memory to load and process one or more feature vectors from the image.
In the current CogniMem - Image Training System software, we do not allow different aspect ratio within the same teaching session
If you are using the SDK to program an application of your own, you can implement this but make sure to assign a different context for each region with a different size and/or aspect ratio
Refer to Appendix A of the CogniSoft™ SDK manual
This is highly "NOT RECOMMENDED" because the neurons must be considered as a whole.
They build their knowledge in cooperation with one another (for a given context), deciding when it is appropriate to commit a new one, and/or reduce the influence field of committed ones.
Removing a single neuron from a "trained" network can have undesired or unpredictable effects.
On the other hand, if you have a knowledgebase consisting of neurons with different contexts, you can remove all the neurons of a same context at once.
If it is necessary to remove training from the knowledgebase it is recommended that you implement an "Action History Queue" in your training tool.
Each time a "Learn", "Forget", "Resize", etc... action is performed you can store this action in a work queue, which will enable you to remove an errant action and
allow you to "Rebuild" the knowledgebase with that action omitted.
A second way to deal with training and corrections is to keep an
action file (in XML format) and copies of all training data.
This way you can edit a training file, or the training dataset and
simply make your edits to the training actions file,
and then "re-batch" the process to create the new knowledge base
dynamically with the modified actions and/or data.
The latter way proves to be more robust for testing and QA, due to the
ability to tweak settings and to process the training data iteratively
until the network converges.
In a standard plastic breadboard the adjacent pins would be shorted; you instead need to use a prototyping PCB, with “pad per hole” WITHOUT buses (i.e. that doesn’t interconnect adjacent terminals in a bus fashion).
An example PCB that you can refer to is Part# B20-8000-PCB available from Twinind
The G_Standby actually cut the clock in the CM1K and place it in quiescent mode (just a small leakage current)
The POWERSAVE is actually an unused register address which actually insure that the databus stay high and therefore is not driving the pull-up hence saving current from flowing….
Typically for maximum power saving it’s better to use both.
Yes, you can.
Our SDKs provide support and example source code for the following high-level languages: C, C++, C#, VB.NET, MATLAB, Arduino, Python, and Java.
If however you are not familiar with one of the above languages, or would like to integrate the CM1K into an existing application and would like to continue using VB6 then THAT IS a possibility as well by creating a VB6 module (wrapper) that declares and calls the native API functions of our C libraries.
Declaring and calling DLLs from a VB6 application is a common practice that is well documented on the Internet.
Yes, you can.
The CM1K hardware is data-agnostic, provided your data can be represented as digital data.
There are constraints around the technology:
1. The CM1K input vector “WORD SIZE” is an unsigned 8-bit component (the smallest distinct unit).
2. The maximum component length for each neuron is <= 256.
That being said there are many techniques for “fitting” data that does not natively meet these constraints (e.g. 32-bit integer values, floating point values, etc...).
The data can be compressed, averaged, normalized, binned, or partitioned into contexts. The best strategy to use will be specific to the application and the input data characteristics.
A neuron is described as "degenerated" when it's influence field shrinks to a very small value (specifically, the minimum influence field or "MINIF" property of the chip). This happens when the chip is trained on two identical (or nearly identical) inputs that are labeled with different categories.
There are two use cases in which this may happen.
One possibility is that one of the training samples has been mislabeled. Suppose you are training the CM1K to recognize pictures of "dogs" and "cats", and you accidentally label a picture of a dog as a cat. This mislabeled example will confuse the network and cause many of the "dog" neurons to shrink their influence fields.
The other possibility is that there is overlap between the classes in your dataset. For example, if you trained the CM1K to classify an individual as either male or female given only their weight and height, you may legitimately have both a male and female data point with matching attributes. In this case, you would need to add additional attributes to your dataset which would make the classes separable. If it's not possible to add more attributes, you would need to adopt a probabilistic classification approach such as PRCE. Contact support for more information on how to apply PRCE.
V1kuOptiStrobeExample.zip contains an example and description of working with the optically coupled relays on the V1KU
V1KU_Optical_Relay_Schematics.pdf contains the pin details of the optically coupled relays.
Below is the SDRAM Specifiction for the address range available
V1KU addres mapping
The various components are accessible through the following address map:
Address[31-24]=Module[7:0], se column 2 below
Address[23:8]=0x0000
Address[7:0]=Reg[7:0], see registers per module described in this chapter
Address Range
===========
0x06000000 - 0x06000076
Module
======
SRAM
Description
===========
Address of the SRAM bank used by the FPGA to trnsfer images from the Aptina Sensor to the FPGA, and for transferring images between the FPGA and the host.