Classifier Pipeline

Structuring Ideas

  • Data-flow layer + control layer
    • E.g. central controller manages component states according to some protocol/rules
  • Alternative: Subgraph lifecycles
    • E.g. learning subgraph between data buffer and learner)

Requirements

Training

  • Sequential processing: data source, keypoint, descriptor, feature
  • Processing Strategies (in CCA speech)
    • First possibility
      • As fast as possible
      • Flow control is necessary
      • Usually, all inputs are processed
    • Second possibility
      • "Live" data source (i.e. camera)
  • Multiple phases
    • Collection
    • Actual training
    • Model is transmitted from learner to classifier
  • Programmatical interface for parameter setting at runtime (dynamic adjustment from another module)

Classification

  • Static, linear data flow: source, keypoint, descriptor, feature, classifier
  • No buffering/persistence required

Non-functional Requirements

  • Parallel / distributed processing
  • Visualization (when and what)
  • Optional: real-time capability?
  • Model description / specification (do skeletons exist?)
  • Interactive shell for parameter exploration (probably related to parameter server with GUI)

Related work

  • gstreamer
    • usability is an issue
  • IceWing
    • data flow specification
    • parallel processing (?)
    • distributed processing (?)
    • support for non-image data is not existent
    • usability (?)
    • no support for collection, training, classification phases / states
  • CCA
    • parallel / distributed processing
    • processing strategies (would need to be extended towards full flow control)
    • support for collection, training, classification phases
    • no support for computer vision
    • early prototype
  • Ecto: A C++/Python Computation Graph Framework
    • Leon will look at this...
    • does it feature distributed processing?
  • LabView
  • Simulink