An oscillatory neural model of multiple object tracking (Kazanovich and Borisyuk 2006)

 Download zip file 
Help downloading and running models
An oscillatory neural network model of multiple object tracking is described. The model works with a set of identical visual objects moving around the screen. At the initial stage, the model selects into the focus of attention a subset of objects initially marked as targets. Other objects are used as distractors. The model aims to preserve the initial separation between targets and distractors while objects are moving. This is achieved by a proper interplay of synchronizing and desynchronizing interactions in a multilayer network, where each layer is responsible for tracking a single target. The results of the model simulation are presented and compared with experimental data. In agreement with experimental evidence, simulations with a larger number of targets have shown higher error rates. Also, the functioning of the model in the case of temporarily overlapping objects is presented.
1 . Kazanovich Y, Borisyuk R (2006) An oscillatory neural model of multiple object tracking. Neural Comput 18:1413-40 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network;
Brain Region(s)/Organism:
Cell Type(s):
Gap Junctions:
Simulation Environment: C or C++ program;
Model Concept(s): Oscillations; Spatio-temporal Activity Patterns; Simplified Models;
Implementer(s): Kazanovich, Yakov [yakov_k at]; Borisyuk, Roman [rborisyuk at];
// Mot.h - Structures oscillator, parameters, and integration definition
// Poject MOT
// Kazanovich June 2005

#include "basinc.h"


#define FOMEGA	"traj\\omega.tra"	// file for frequencies trajectories
#define FTETA	"traj\\teta.tra"	// file for phase trajectories
#define FAMP	"traj\\amp.tra"		// file for amplitudes trajectories
#define CFOMEGA	"traj\\omega_cont.tra"	// file for frequencies trajectories
#define CFTETA	"traj\\teta_cont.tra"	// file for phase trajectories
#define CFAMP	"traj\\amp_cont.tra"		// file for amplitudes trajectories

const int nrows = 30;	// size of the image
const int ncolumns = 60;	
const int nobj = 10;		// number of objects
const int noaf = 5;		// the number of objects in the attention focus

enum activity 
	active,		// working oscillator
	dead		// non-working oscillator

enum object_type {distractor, target};
enum movement_type {without_intersection, with_intersection};

struct object		// circle on the plane
	enum object_type type;	// type of object 
	int cx, cy;				// coordinates of the center of the object
	int priority;			// layer number occupied by the object, = 1, 2, ...

struct image
	struct object obj[nobj];					// objects in the image
	int r;									// radius (half size) of an object
	double intens[nrows][ncolumns];				// intensities of pixels
	double saliency[nrows][ncolumns];			// saliency of the pixel

struct connections
	int ncon;			// the number of connections
	int source[4];		// list of osccillators influencing
						// the given oscillator

struct oscillator		// Osc description
	double omega0;		// natural frequency
	double omega;		// current frequency
	double teta;		// current phase
	double amp;			// amplitude
	enum activity state;// oscillator activity state 
	double noise;		// noise added to oscillator phases

struct network
	struct oscillator *osc;

struct parameters // Network parameters
	//Parameters of CO
	double camp;			// initial amplitude of the CO
	double comega;			// initial value of natural frequency
	double cteta;			// initial value of phase

	// Parameters of the network
	long n;					// n = nx*ny
	// Parameters of POs
	double amp;				// initial amplitude of POs

	// weihjts
	double COtoCOw;			// connection weight between COs
	double COtoCOw_expos;	// connection weight between COs during exposition
	double COtoPOw;			// connection weight from CO to POs
	double POtoCOw;			// connection weight from POs to the CO
	double POtoPOlocw;		// local connection weight
	double POtoPOcolw;		// connection weight between POs in the same column

struct integration	// Integration parameters
	double eps; 	// precision
	double h1;		// initial step
	double hmin;	// minimal step
	double dt;		// time interval for integration step

	double maxt;	// time segment for integration
	double expos;	// Initial exposition (objects are motionless)
	double probe;	// time for probing (objects are motionless)
	enum movement_type move_type;	// with/without intersection
	int movement_dt;// time interval between movements
	// Parameters of function g in CO's equation
	double ga1;		// segments of streght line y = ax + b
	double ga2;
	double gb2;
	double ga3;
	double gb3;
	double gs1;		// coordinates of segment ends
	double gs2;		// (s1,q1), (s2,q2) (s3,0)
	double gs3;
	double gq1;
	double gq2;

	// Parameters for eq. for amplitudes
	double beta1;	
	double beta2;
	double beta_CO;
	double gamma;
	double ksi;
	double eta;
	double dzeta;
	double gamma1;
	double dzeta1;

	// Parameters for eq. for natural frequencies
	double alpha;	

	// Parameters for oscillator state
	double resthresh;	// resonance threshold
	int nresmin;		// min normalization parameter in the eq for the CO
	double noise;		// gaussian noise amplitude

struct imageproc
	// Parameters to controle the strength connection from POs to CO
	double intenstarget;		// the value of intensity for a target
	double intensdistract;	// the value of intensity for a distractor
	double highsaliency;		// saliency for a lighted object
	double normalsaliency;	// saliency for a normal object
	double lowsaliency;		// saliency for a nonlighted object during exposition