SMQTK v0.6.0 Release Notes

This minor release provides bug fixes and minor updates as well as Docker wrapping support for RESTful services, a one-button Docker initialization script for a directory of images, and timed IQR session expiration.

The docker directory is intended to host container Dockerfile packages as well as other associated scripts relating to docker use of SMQTK. With this release, we provide a Dockerfile, with associated scripts and default configurations, for a container that hosts a Caffe install for descriptor computation, replete with AlexNet model files, as well as the NearestNeighbor and IQR RESTful services. This container can be used with the docker/ for image directory processing, or with existing model files and descriptor index.

The IQR Controller class has been updated to optionally time-out sessions and clean itself over time. This is required for any service that is going to stick around for any substantial length of time as resources would otherwise build up and the host machine would run out of RAM.

Updates / New Features since v0.5.0


  • Added scripts that were missing from install command.

Descriptor Index

  • Changed functions that used to take *uuids list expansion as an argument and changed them to take iterables, which no longer causes sequencification of input iterables and is already compatible with all included implementations except Solr.
  • Update Solr implementation functions that used to take *uuid list expansion to properly handle input iterables of arbitrary sizes.
  • DescriptorIndex instances, when iterated over, now yield DescriptorElement instances instead of just the UUID keys.


  • Added docker container formula for running SMQTK NearestNeighbor and IQR services.
  • Added a script to setup SMQTK web services over a directory of images, performing all necessary Docker setup and data processing. This is intended for demo purposes only and not for large scale processing.


  • Added optional session expiration feature to IqrController class to allow for long-term self clean-up.

Nearest Neighbors Index

  • Changed ITQ fit method to by default use multiprocessing over threading, which in general is faster (more through-put).


  • Removed by-index access in elements_to_matrix, allowing arbitrary input as long as the __len__ and __iter__ functions are defined.
  • Changed much of the debug messages in smqtk.utils.parallel to “trace” level (level 1).


  • Simplified the script a little.

Web Apps

  • Added configuration of IqrController session expiration monitoring to IQR RESTful (ish) service.

Fixes since v0.5.0

Descriptor Index

  • Fixed PostgreSQL back-end bug when iterating over descriptors that caused inconsistent/duplicate elements in iterated values.


  • Fixed how IqrController used and managed session UUID values.


  • Fixed bug in int_to_vector functions dealing with vector size estimation.

Web Apps

  • Fixed bugs in IQR classifier caching and refreshing from dirty state
  • Fixed how the NearestNeighbor service descriptor computation method errors regarding descriptor retrieval in order to not obfuscate the error.