2D Object Recognition Project

Here is roughly what I am thinking. It may be simpler than what you expected, but starting simple is a good thing. Because we are restricting this project to a 2D space, we don’t have to think about orientation.

This is all just a brainstorm, I had to pick hard numbers for a lot of things just to show them visually, but these spaces could be defined and named differently.

Object Space

The experiment space is a simple 2D grid. At each position on the grid has a feature. I’m representing different features below with a black :black_circle: , blue :heavy_multiplication_x:, and green :heavy_check_mark:

The features above are arbitrarily placed by my brain for no reason. We could probably use random features but this looks more interesting. I just wanted to have some continuous features. You can think about this space as an object and the positions as locations on the object, each having a feature.

Agent & Sensors

There is an agent that moves through this object space with sensors. In the example above, the agent is at X10 Y9:

Movement

I want to restrict movement (initially) so our agent can only move on unit either :arrow_up::arrow_down::arrow_left::arrow_right: (no diagonal). I also want to initially use random movements (we’ll talk about control when we need to).

With this setup, for any movement, we’ll get 4 new sensory inputs (one for each sensor at NSEW). As the agent moves, sensors build up their models of the object.

Cortical Columns

Here’s the hard part. We need to build a 3-layer Network for each sensor which has an object pooling layer as described in the Columns Paper above a 2-layer location/sensor circuit as described in Columns+:

The different phases described in Columns+ are in this model as well, and they are really important to get right from a network model standpoint. Everything cannot compute all at once, there must be an order. Details in the research code.

Lateral Connectivity

Object layers must share representations between cortical columns via lateral connections:

For code examples, see the supporting paper for the Columns paper.

Grid Cells

We will need to write the mechanism that creates SDR encodings for location based on the position in the object space. I have a feeling @marty1885 has most of this written. :wink:

8 Likes