Now that it looks like segmentation and clustering are working, I’m starting to implement the system dynamics that will generate images in mind-wandering and dreaming. As a first step in this process I wanted to run the longest contiguous set of frames I have. Despite the memory leak persisting, the system was able to process this number of frames. Following is the debug output of the run:
Right now the circadian clock is not an oscillator, but just a threshold test of brightness that detects night. I thought I could smooth this out using a moving average filter, but of course since only night is detected, the smoothing only happens after the onset of night, which is too late. The clock needs to be a periodic model so it can predict night before it happens. The problem with this is that days and nights are different lengths, so something like a sinus model would not work; I’m imagining a predictive square wave with sigmoid transitions.
StateChange is the number of percepts that have changed state between the previous and current frame. This value is smoothed with a running average filter, with a window of 100 frames, and is meant to be the signal that will trigger day-dreaming. Arousal below a particular threshold is meant to signify a static scene, and increase endogenous activation and suppress exogenous activation of percepts. The current caveat being that I have been yet unable to validate that a low arousal is associated with a lack of change in a frame. This is because the activation of a percept happens after all the segmentation and clustering that contains significant variability over time.
The rest of the plot should be familiar. Note the decrease in memory usage towards the end. Next steps are to determine a threshold of arousal to be used to trigger mind-wandering and then implement the predictor feedback and we’re finally quite close to a finished first implementation!
The following plot shows the properties of the percepts in memory once the run was completed, and all percepts in a single image: