2D Object Recognition Project

:-D.

5 Likes

Hello can you please inform me that how you are obtaining the out put?

Do L4 & L2 both hav = Spatial Poller + Temporal Memory ?

From L2 where I have to send apical data input to L4 . To a SP or TM .
How feedback input will work in L4. What’s it role.

Actually I thought in case of Multilayer its working like that

Sensory Input -> encoder -> bitArray -->L4 SP → SDR of Active coloums -->L4 TM → SDR of Active Cells → :L2 SP–> SDR of Active coloums --:> L2 TM -->SDR of Active Cells → Classifier–> Output

But I haven’t realized how your network is working. How it performs output. And the role of Apical Feed back from L2 to L4.

I will be grateful if you can explain it for me.
Thank you

2 Likes

Hello MukitCSTE,
firstly i want to point out, that the core algorithm is experiment from numenta research, so i am not the inventor. I have tweaked the code to use it in this project.

Hello can you please inform me that how you are obtaining the out put?

There is classifier on L2. If it unambiguously classify object, it is said to be correct classification.

Do L4 & L2 both hav = Spatial Poller + Temporal Memory ?

No only L4 have SP and TM.
L2 has special algorithm called “Column pooler” for details see code here
It has 3 types of connections - proximal, internal distal and external distal(these are lateral connections between columns). It’s goal is to settle on some SDR representing object, even L4 is changing over time.

From L2 where I have to send apical data input to L4 . To a SP or TM.
How feedback input will work in L4. What’s it role.

Active cells SDR goes to L4 apical input as you can see in the diagram. The role of apical input is:

The apical connections are used for further disambiguation. If multiple cells
in a minicolumn have active basal segments, each of those cells is predicted,
unless one of them also has an active apical segment, in which case only the
cells with active basal and apical segments are predicted.
In other words, the apical connections have no effect unless the basal input
is a union of SDRs (e.g. from bursting minicolumns).

Taken from apicalTiebreakTM

If you wonder about specific execution order (or dataflow in time) refer here to the left hand side of the ASCII diagram - there is “phase” which defines the execution order.

2 Likes

Hi Zbysekz

Thank you so much for your detail explanation. This helps me a lot. According to your explanation what I have realized

L4 has = SP + TM + Apical Input
L2 has = Cololums Poller only on SP & TM
Output = using classifier at L2 layer
right?

As you said L2 has only Cololums Poller. What is the final output of Coloums Poller? Is it like = OutPut of Active cells SDR?

And will this OutPut of Active cells SDR data is same as the data that feedback in the Apical Data Input in L4 and the data from L2 Classifier as well for output generating?

And lastly,
I will be very grateful if you please explain in detail How Apical Data Input is working in L4 at the algorithm level. I mean how Apical Data Input SDR , SP and TM there all are connected how they working with each other ?

1 Like

I would correct it like this:
L4 has = SP + ApicalTiebreakTM
L2 has = Column Pooler (taking active cells SDR of L4 as input)
Output = simple classifier with L2 active cells SDR as input

The classifier is really simple thing - at the end of learning of each single object, L2 active cells SDR is stored, then while inferring these are compared with current L2 SDR and if it matches only with one of the stored object SDR’s, then this object is correctly classified.

As you said L2 has only Cololums Poller. What is the final output of Coloums Poller? Is it like = OutPut of Active cells SDR?

Yes classifier is evaluating active cells in L2.
Every region in NetworkAPI must have method getSpec() which describes all possible inputs, outputs and parametes. Look here ColumnPoolerRegion.py and you’ll see that Column pooler can have two outputs “feedForwardOutput” and “activeCells” but i think as comment states,they represent the same thing right now. In this experiment, activeCells output is used, as you can see in diagram.

And will this OutPut of Active cells SDR data is same as the data that feedback in the Apical Data Input in L4 and the data from L2 Classifier as well for output generating?

Not sure what you mean by this. L4 active cells goes to L2 “feed forward input” and to L6a “anchor input”. L2 active cells are calculated by Column pooler algorithm.

And lastly,
I will be very grateful if you please explain in detail How Apical Data Input is working in L4 at the algorithm level. I mean how Apical Data Input SDR , SP and TM there all are connected how they working with each other ?

You can dig into the code of apicalTiebreakTM.py, it is python so it should be readable for you, the code is also commented. Best is to read numenta papers first, to know how SP & TM works. Apical connections are in this experiment used for further disambiguation if object is being recognized by other laterally connected columns - like top-down information flow.

Hope this helps

2 Likes

Hi Zbysekz,

Thank You so much. It will help me a lot. Actually i am working on a project to make multi level feed forward network for sequence learning. Though your project is here for 2d object recgnition but it helps me to realize lot of things about Apical input. Actually, I knew about how TM & SM works by reading the papers of Numenta. But i was confused about to deal with Apical input fata to the lower layer from upper. I will watch the apicalTiebrekTM.py file. Thanks a lot.

1 Like

Totally agree. It would be really helpful to provide more detailed information. I see that activateDendrites is invoked explicitly to connect the location layer with the sensory layer. But it would be interesting to see how connections are created exactly. In some C++ implementation of the TM and/or implementation of the region, location activated modulatory cells seem to be simply appended to active cells.
…
Unfortunately, I’m not able to run the Python sample at all.

1 Like