Coder Social home page Coder Social logo

kitware / kwiver Goto Github PK

View Code? Open in Web Editor NEW
186.0 25.0 83.0 62.73 MB

Pulls Together Computer Vision Algorithms into Highly-Modular Run-Time Configurable Systems

License: Other

CMake 3.53% C++ 85.58% C 3.30% Python 7.20% Shell 0.05% Elixir 0.02% Perl 0.01% MATLAB 0.17% Cuda 0.08% Dockerfile 0.02% Vim Script 0.04%

kwiver's Introduction

KWIVER

master release version docker

Kitware Image and Video Exploitation and Retrieval

The KWIVER toolkit is a collection of software tools designed to tackle challenging image and video analysis problems and other related challenges. Recently started by Kitware’s Computer Vision and Scientific Visualization teams, KWIVER is an ongoing effort to transition technology developed over multiple years to the open source domain to further research, collaboration, and product development. KWIVER is a collection of C++ libraries with C and Python bindings and uses an permissive BSD License.

One of the primary design goals of KWIVER is to make it easier to pull together algorithms from a wide variety of third-party, open source image and video processing projects and integrate them into highly modular, run-time configurable systems.

For more information on how KWIVER achieves this goal, and how to use KWIVER visit our documentation site.

Directory Structure and Provided Functionality

Below is a summary of the key directories in KWIVER and a brief summary of the content they contain.

CMake CMake helper scripts
arrows The algorithm plugin modules
doc Documentation, manuals, release notes
examples Examples for running KWIVER (currently out of date)
extras Extra utilities (e.g. instrumentation)
sprokit Stream processing toolkit
tests Testing related support code
vital Core libraries source and headers

KWIVER Docker Image

Kitware maintains a Docker image with KWIVER prebuilt. The Dockerfile used to build the image can be found here.

Pull the image from Dockerhub:

"docker pull kitware/kwiver:latest" (latest master)

"docker pull kitware/kwiver:release" (latest release)

"docker pull kitware/kwiver:1.6.0" (static release)

(https://hub.docker.com/r/kitware/kwiver)

or build the KWIVER image using the dockerfile:

"docker build -t kwiver:tagname ."

Building KWIVER

Fletch

KWIVER, especially Arrows, has a number of dependencies on 3rd party open source libraries. Most of these dependencies are optional but useful in practice, and the number of dependencies is expected to grow as we expand Arrows.

Vital has minimal required dependencies (only Eigen). Sprokit additionally relies on Boost. C++ tests additionally rely on Google Test. Arrows and Sprokit processes are structured so that the code that depends on an external package is in a directory with the major dependency name (e.g. vxl, ocv). The dependencies can be turned ON or OFF through CMake variables.

To make it easier to build KWIVER, especially on systems like Microsoft Windows that do not have package manager, Fletch was developed to gather, configure and build dependent packages for use with KWIVER. Fletch is a CMake_ based "super-build" that takes care of most of the build details for you.

For building Fletch, refer to the README file in that repository.

Running CMake

You may run CMake directly from a shell or cmd window. On unix systems, the ccmake tool allows for interactive selection of CMake options. Available for all platforms, the CMake GUI can set the source and build directories, options, "Configure" and "Generate" the build files all with the click of a few buttons.

We recommend building KWIVER out of the source directory to prevent mixing source files with compiled products. Create a build directory in parallel with the KWIVER source directory for each desired configuration. For example:

\kwiver\src

contains the code from the git repository

\kwiver\build\release

contains the built files for the release configuration

\kwiver\build\debug

contains the built files for the debug configuration

The following are the most important CMake configuration options for KWIVER:

CMAKE_BUILD_TYPE The compiler mode, usually Debug or Release
CMAKE_INSTALL_PREFIX The path to where you want the kwiver build products to install
KWIVER_ENABLE_ARROWS Enable algorithm implementation plugins
KWIVER_ENABLE_C_BINDINGS Whether to build the Vital C bindings
KWIVER_ENABLE_DOCS Turn on building the Doxygen documentation
KWIVER_ENABLE_LOG4CPLUS Enable log4cplus logger back end
KWIVER_ENABLE_PYTHON Enable the Vital Python bindings (requires KWIVER_ENABLE_C_BINDINGS)
KWIVER_ENABLE_SPROKIT Enable the Stream Processing Toolkit
KWIVER_ENABLE_TESTS Build the unit tests (requires Google Test)
KWIVER_ENABLE_TOOLS Build the command line tools (e.g. plugin_explorer)
fletch_DIR Install directory of a Fletch build.

There are many more options. Specifically, there are numerous options for third-party projects prefixed with KWIVER_ENABLE_ that enable building the Arrows plugins that depend on those projects. When building with the support of Fletch (set fletch_DIR) the enable options for packages built by Fletch should be turned on by default. The fletch_DIR is the fletch build directory root, which contains the fletchConfig.cmake file.

The following sections will walk you through the basic options for a minimal KWIVER build.

Basic CMake generation via command line

Note, This assumes your fletch was built with python support (Turn OFF if not).

You will also need to replace the fletch path with your own:

$ cmake </path/to/kwiver/source> -DCMAKE_BUILD_TYPE=Release \
        -Dfletch_DIR:PATH=<path/to/fletch/build/dir> \
        -DKWIVER_ENABLE_ARROWS:BOOL=ON -DKWIVER_ENABLE_C_BINDINGS:BOOL=ON \
        -DKWIVER_ENABLE_EXTRAS:BOOL=ON -DKWIVER_ENABLE_LOG4CPLUS:BOOL=ON \
        -DKWIVER_ENABLE_PROCESSES:BOOL=ON -DKWIVER_ENABLE_PYTHON:BOOL=ON \
        -DKWIVER_ENABLE_SPROKIT:BOOL=ON -DKWIVER_ENABLE_TOOLS:BOOL=ON \
        -DKWIVER_ENABLE_EXAMPLES:BOOL=ON -DKWIVER_USE_BUILD_TREE:BOOL=ON

Basic CMake generation using ccmake

When first configuring a KWIVER build with ccmake it is preferable to set the build configuration and fletch_DIR on the command line like this:

$ ccmake /path/to/kwiver/source -DCMAKE_BUILD_TYPE=Release -Dfletch_DIR=/path/to/fletch/install

Other CMake options can also be passed on the command line in this way if desired. Follow the recommended options setup using the CMake GUI.

Basic CMake generation using the CMake GUI

When running the cmake gui, we recommend selecting the 'Grouped' and 'Advanced' options to better organize the options available. Note, after clicking the configuration button, new options will be highlighted in the red sections.

  1. Once the source code and build directories are set, press the 'Configuration' button and select your compiler
    1. Configuration will fail, but now we can set option values
  2. Set the fletch_DIR, the CMAKE_BUILD_TYPE, and these KWIVER options, and press the 'Configuration' button
    1. Note, if compiling with MSVC, you will not have a CMAKE_BUILD_TYPE option

KWIVER CMake Configuration Step 2

  1. Select these new options, and click 'Generate'
    1. This assumes your fletch was built with python support. If not, do not check this option

KWIVER CMake Configuration Step 3

Compiling

Once your CMake generation has completed and created the build files, compile in the standard way for your build environment. On Linux this is typically running make.

There is also a build target, INSTALL. This target will build all code, then create an install directory inside the build directory. This install folder will be populated with all binaries, libraries, headers, and other files you will need to develop your application with KWIVER. MSVC users, note that this install directory is for a single build configuration; there will not be configuration named directories in this directory structure (i.e. no /bin/release, only /bin).

Note

If you are on Windows and enable tests (KWIVER_ENABLE_TESTS=ON), and are building shared libraries (BUILD_SHARED_LIBS=ON), you will need to add the path to gtest.dll to the PATH in your environment in order to build and run the tests.

The easiest way to achieve this is to use the setup_KWIVER.bat script (described in the next session), and to run builds and/or launch Visual Studio from a command prompt which has been so configured.

Running KWIVER

Once you've built KWIVER, you'll want to test that it's working on your system. Change your terminal/command prompt to the KWIVER CMake build directory. From a command prompt execute the following command:

# via a bash shell
$ cd <path/to/kwiver/build>
$ source setup_KWIVER.sh
#
# via a windows cmd prompt
> cd <path/to/kwiver/build>
> setup_KWIVER.bat

This will set up your PATH, PYTHONPATH and other environment variables to allow KWIVER to work conveniently within in the shell/cmd window.

You can run this simple pipeline to ensure your system is configured properly:

# via a bash shell
$ cd bin
$ kwiver runner ../examples/pipelines/number_flow.pipe
#
# on windows, you will need to also be in the configuration folder
> cd bin\release
> kwiver runner ..\..\examples\pipelines\number_flow.pipe

This will generate a 'numbers.txt' file in the </path/to/kwiver/build>/examples/pipelines/output directory.

More examples can be found in our tutorials.

KWIVER Users

Here are some applications using KWIVER that serve as an example of how to leverage KWIVER for a specific application:

MAP-Tk

A collection of tools for structure-from-motion and dense 3D reconstruction from imagery with an emphasis on aerial video. The primary component is a GUI application named TeleSculptor.

VIAME

A computer vision library designed to integrate several image and video processing algorithms together in a common distributed processing framework, majorly targeting marine species analytics.

Testing

Continuous integration testing is provided by CDash. Our KWIVER dashboard hosts nightly build and test results across multiple platforms including Windows, Mac, and Linux.

Anyone can contribute a build to this dashboard using the dashboard script provided. Follow the instructions in the comments.

Contributing

For details on how to contribute to KWIVER, including code style and branch naming conventions, please read CONTRIBUTING.rst.

Getting Help

Please join the kwiver-users mailing list to discuss KWIVER or to ask for help with using KWIVER. For less frequent announcements about KWIVER and projects built on KWIVER, please join the kwiver-announce mailing list.

Acknowledgements

The authors would like to thank AFRL/Sensors Directorate for their support of this work via SBIR Contract FA8650-14-C-1820. The portions of this work funded by the above contract are approved for public release via case number 88ABW-2017-2725.

The authors would like to thank IARPA for their support of this work via the DIVA program.

The authors would like to thank NOAA for their support of this work via the NOAA Fisheries Strategic Initiative on Automated Image Analysis.

kwiver's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kwiver's Issues

Segfault in simple python pipeline

I encountered a segfault in a python pipeline I developed that addressed a stereo vision problem. When debugging I reduced it to a minimal working example. The MWE pipeline simply creates a process MakeDOSProcess that creates an empty DetectedObjectSet and then pushes it to another MeasureDOSProcess process that reads it and does nothing.

Because this was originally a stereo problem, there were originally multiple MakeDOSProcess processes that fed into the MeasureDOSProcess. In the script there is a global variable N_SOURCE_NODES that defines the "number of cameras", which is basically the number of MakeDOSProcess that feed into the MeasureDOSProcess. The segfault occurs even when there is just one of these processes, but it often occurs faster if there are multiple.

The file with the MWE can be found here:

https://github.com/Erotemic/VIAME/blob/dev/camtrawl/plugins/camtrawl/python/segfault_pipeline.py

It uses a helper script to build the actual pipeline file:
https://github.com/Erotemic/VIAME/blob/dev/camtrawl/plugins/camtrawl/python/define_pipeline.py
(it works without this, but its a pain to keep changing the pipeline text when I could just do it dynamically).

For reference here is the pipeline file for when N_SOURCE_NODES=1

# nodes
#

process node0_make_dos
  :: make_dos

process measure
  :: measure_dos

# ----------------------
# connections
#

connect from node0_make_dos.detected_object_set
        to   measure.detected_object_set0

# ----------------------
# global pipeline config
#

config _scheduler
    :type pythread_per_process
config _pipeline:_edge
    :capacity 1

When debugging the issue, it seems to fail in some boost call, but its hard to be sure because I'm debugging with a release version of python. However, when I build a debug version (without pymalloc) boost wont link to it. It may be the case that switching to PyBind11 fixes this issue, so I will debug further once that lands.

Its also possible this is an issue with the vital bindings, but my money is on something in one of the boost-python wrapped sprokit modules.

TODO

  • verify this occurs on multiple machines in multiple branches of kwiver
  • debug with pybind11
  • reproduce without using DetectedObjectSet
  • debug with debug version of python (without pymalloc)

Python interpreter not de-initialized properly at program end

We're having an issue in VIAME with a process that uses Pytorch, which in turn uses the Python multiprocessing module. What we're seeing is that after the pipeline runner ends, some of the child processes from multiprocessing are being orphaned and inherited by the init process because they didn't terminate properly. This is especially problematic for us because these processes consume CUDA memory and have to be manually terminated to free the memory.

I did some reading and found this warning: "If the main process exits abruptly (e.g. because of an incoming signal), Python's multiprocessing sometimes fails to clean up its children. It's a known caveat, so if you're seeing any resource leaks after interrupting the interpreter, it probably means that this has just happened to you." This looks exactly like what we're seeing, and makes me think that it's happening because we're not properly de-initializing the Python interpreter at the end of the program.

If this is the case, the obvious solution is to de-initialize the Python interpreter, but I'm not sure how to go about this. It's easy enough in the pipeline runner, but what about third-party software (such as Vivia) that includes the Kwiver libraries and has embedded pipelines? They would need to know when to initiate this Kwiver cleanup.

Right now my idea is to put a pybind scoped_interpreter in a shared_ptr for automatic destruction. I'd like to hear what others think about how to do this.

CMake Error in arrows/kpf/yaml/CMakeLists.txt

I am getting the following CMake error when configuring KWIVER with KWIVER_ENABLE_KPF on, but not when it is off. This is done on current master branch.

-- Configuring done
CMake Error in arrows/kpf/yaml/CMakeLists.txt:
  Target "kpf_yaml" INTERFACE_INCLUDE_DIRECTORIES property contains path:
      "/disk2/projects/KWIVER/kwgitlab/source/arrows/kpf/yaml/include/yaml-cpp"
 which is prefixed in the source directory.
-- Generating done

If I make the following change, converting PUBLIC to PRIVATE, the problem goes away. As far as I can tell, nobody else is having this problem.

diff --git a/arrows/kpf/yaml/CMakeLists.txt b/arrows/kpf/yaml/CMakeLists.txt
index 7e583d6..34fe69b 100644
--- a/arrows/kpf/yaml/CMakeLists.txt
+++ b/arrows/kpf/yaml/CMakeLists.txt
@@ -45,7 +45,7 @@ kwiver_add_library( kpf_yaml
   ${private_sources}
 )

-target_include_directories(kpf_yaml PUBLIC ${YAML_CPP_INCLUDE_DIR})
+target_include_directories(kpf_yaml PRIVATE ${YAML_CPP_INCLUDE_DIR})

 if(WIN32)
   target_compile_definitions(kpf_yaml PRIVATE YAML_CPP_DLL)

Install a cluster to suppress warning about missing directory.

The following warning appears all the time because the directory is not there.

Warning - Path not found loading clusters: /usr/local/share/sprokit/pipelines/clusters

The warning can not be removed because there may really be a misconfigured cluster include path.
Is this really the best place to install clusters?

This warning has tripped up two external customers who, foolishly, thought that a warning was serious.

vxl_initialize_cameras_landmarks-noisy_points_from_last fails non-deterministically

Every so often I see the vxl_initialize_cameras_landmarks-noisy_points_from_last test fail with a segfault.
It passes more often than not.

To reproduce I have to just keep running it until it fails.

while ctest -R test-vxl_initialize_cameras_landmarks-noisy_points_from_last -V; do :; done

Here is some output with one pass and one fail

(venv3) joncrall@calculex:~/code/VIAME/build/build/src/kwiver-build$     while ctest -R test-vxl_initialize_cameras_landmarks-noisy_points_from_last -VV; do :; done^C
(venv3) joncrall@calculex:~/code/VIAME/build/build/src/kwiver-build$ ^C
(venv3) joncrall@calculex:~/code/VIAME/build/build/src/kwiver-build$ ^C
(venv3) joncrall@calculex:~/code/VIAME/build/build/src/kwiver-build$     while ctest -R test-vxl_initialize_cameras_landmarks-noisy_points_from_last -V; do :; done
UpdateCTestConfiguration  from :/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
Parse Config file:/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
UpdateCTestConfiguration  from :/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
Parse Config file:/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
Test project /home/joncrall/code/VIAME/build/build/src/kwiver-build
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 131
    Start 131: test-vxl_initialize_cameras_landmarks-noisy_points_from_last

131: Test command: /home/joncrall/code/VIAME/build/build/src/kwiver-build/tests/bin/test-vxl_initialize_cameras_landmarks "noisy_points_from_last"
131: Test timeout computed to be: 1500
131: INFO: Could not load default logger factory. Using built-in logger.
131: 2017-09-12 18:51:18.495 DEBUG plugin_manager.cxx(195): No additional paths on KWIVER_PLUGIN_PATH
131: 2017-09-12 18:51:18.495 DEBUG plugin_loader.cxx(335): Empty directory in the search path. Ignoring.
131: 2017-09-12 18:51:18.495 DEBUG plugin_loader.cxx(353): Loading plugins from directory: /home/joncrall/code/VIAME/build/install/lib/sprokit
131: 2017-09-12 18:51:18.496 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers.so
131: 2017-09-12 18:51:18.497 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::scheduler" from derived type: "sprokit::sync_scheduler" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers.so
131: 2017-09-12 18:51:18.497 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::scheduler" from derived type: "sprokit::thread_per_process_scheduler" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers.so
131: 2017-09-12 18:51:18.497 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/template_processes.so
131: 2017-09-12 18:51:18.502 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "group_ns::template_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/template_processes.so
131: 2017-09-12 18:51:18.502 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_adapter.so
131: 2017-09-12 18:51:18.503 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::input_adapter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_adapter.so
131: 2017-09-12 18:51:18.503 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::output_adapter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_adapter.so
131: 2017-09-12 18:51:18.503 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_clusters.so
131: 2017-09-12 18:51:18.503 DEBUG registration.cxx(94): Loading clusters from directory: /home/joncrall/code/VIAME/build/install/share/sprokit/pipelines/clusters
131: 2017-09-12 18:51:18.503 WARN registration.cxx(97): Path not found loading clusters: /home/joncrall/code/VIAME/build/install/share/sprokit/pipelines/clusters
131: 2017-09-12 18:51:18.503 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/modules_python.so
131: ImportError: No module named sprokit.modules.modules
131: 2017-09-12 18:51:18.509 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers_examples.so
131: 2017-09-12 18:51:18.509 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::scheduler" from derived type: "sprokit::thread_pool_scheduler" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers_examples.so
131: 2017-09-12 18:51:18.509 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_ocv.so
131: 2017-09-12 18:51:18.512 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_viewer_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_ocv.so
131: 2017-09-12 18:51:18.512 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::draw_detected_object_boxes_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_ocv.so
131: 2017-09-12 18:51:18.512 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::frame_list_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::stabilize_image_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detect_features_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::extract_descriptors_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::matcher_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::compute_homography_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::compute_stereo_depth_map_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::draw_tracks_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::read_descriptor_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::refine_detections_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_object_detector_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_filter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_writer_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_file_reader_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detected_object_input_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detected_object_output_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detected_object_filter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::video_input_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::draw_detected_object_set_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.513 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::split_image_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::read_track_descriptor_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::write_track_descriptor_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::read_object_track_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::write_object_track_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::associate_detections_to_tracks_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::compute_association_matrix_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::initialize_object_tracks_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:18.514 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_vxl.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::kw_archive_writer_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_vxl.so
131: 2017-09-12 18:51:18.514 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::collate_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:18.514 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::distribute_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::pass_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::sink_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:18.515 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::any_source_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::const_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::const_number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::data_dependent_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::duplicate_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::expect_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::feedback_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::flow_dependent_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::multiplication_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::multiplier_cluster" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::mutate_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.515 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::orphan_cluster" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::orphan_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::print_number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::shared_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::skip_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::tagged_flow_dependent_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::take_number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::take_string_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::tunable_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:18.516 DEBUG plugin_loader.cxx(353): Loading plugins from directory: /home/joncrall/code/VIAME/build/install/lib/modules
131: 2017-09-12 18:51:18.516 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "analyze_tracks" from derived type: "kwiver::arrows::ocv::analyze_tracks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "draw_tracks" from derived type: "kwiver::arrows::ocv::draw_tracks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_fundamental_matrix" from derived type: "kwiver::arrows::ocv::estimate_fundamental_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_homography" from derived type: "kwiver::arrows::ocv::estimate_homography" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_io" from derived type: "kwiver::arrows::ocv::image_io" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "draw_detected_object_set" from derived type: "kwiver::arrows::ocv::draw_detected_object_set" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.516 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_BRISK" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_FAST" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_GFTT" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_MSER" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_ORB" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_simple_blob" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "extract_descriptors" from derived type: "kwiver::arrows::ocv::extract_descriptors_BRISK" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "extract_descriptors" from derived type: "kwiver::arrows::ocv::extract_descriptors_ORB" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::ocv::match_features_bruteforce" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::ocv::match_features_flannbased" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_object_detector" from derived type: "kwiver::arrows::ocv::hough_circle_detector" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_AGAST" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "refine_detections" from derived type: "kwiver::arrows::ocv::refine_detections_draw" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "split_image" from derived type: "kwiver::arrows::ocv::split_image" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:18.517 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/viame_camtrawl_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_object_detector" from derived type: "viame::camtrawl_detect" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_camtrawl_plugin.so
131: 2017-09-12 18:51:18.517 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/viame_core_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_input" from derived type: "viame::detected_object_set_input_habcam" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_core_plugin.so
131: 2017-09-12 18:51:18.517 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/viame_hello_world_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_object_detector" from derived type: "viame::hello_world_detector" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_hello_world_plugin.so
131: 2017-09-12 18:51:18.517 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_filter" from derived type: "viame::hello_world_filter" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_hello_world_plugin.so
131: 2017-09-12 18:51:18.518 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "bundle_adjust" from derived type: "kwiver::arrows::vxl::bundle_adjust" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::vxl::close_loops_homography_guided" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_canonical_transform" from derived type: "kwiver::arrows::vxl::estimate_canonical_transform" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_essential_matrix" from derived type: "kwiver::arrows::vxl::estimate_essential_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_fundamental_matrix" from derived type: "kwiver::arrows::vxl::estimate_fundamental_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_homography" from derived type: "kwiver::arrows::vxl::estimate_homography" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_similarity_transform" from derived type: "kwiver::arrows::vxl::estimate_similarity_transform" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_io" from derived type: "kwiver::arrows::vxl::image_io" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "optimize_cameras" from derived type: "kwiver::arrows::vxl::optimize_cameras" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "split_image" from derived type: "kwiver::arrows::vxl::split_image" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "triangulate_landmarks" from derived type: "kwiver::arrows::vxl::triangulate_landmarks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::vxl::match_features_constrained" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::vxl::vidl_ffmpeg_video_input" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:18.518 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_bad_frames_only" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_exhaustive" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_keyframe" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_multi_method" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "compute_ref_homography" from derived type: "kwiver::arrows::core::compute_ref_homography_core" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "convert_image" from derived type: "kwiver::arrows::core::convert_image_bypass" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_canonical_transform" from derived type: "kwiver::arrows::core::estimate_canonical_transform" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "feature_descriptor_io" from derived type: "kwiver::arrows::core::feature_descriptor_io" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "filter_features" from derived type: "kwiver::arrows::core::filter_features_magnitude" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "filter_features" from derived type: "kwiver::arrows::core::filter_features_scale" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "filter_tracks" from derived type: "kwiver::arrows::core::filter_tracks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "bundle_adjust" from derived type: "kwiver::arrows::core::hierarchical_bundle_adjust" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "initialize_cameras_landmarks" from derived type: "kwiver::arrows::core::initialize_cameras_landmarks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::core::match_features_fundamental_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::core::match_features_homography" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "track_features" from derived type: "kwiver::arrows::core::track_features_core" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "triangulate_landmarks" from derived type: "kwiver::arrows::core::triangulate_landmarks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "formulate_query" from derived type: "kwiver::arrows::core::formulate_query_core" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_filter" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_image_list" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_pos" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_split" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "dynamic_configuration" from derived type: "kwiver::arrows::core::dynamic_config_none" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_input" from derived type: "kwiver::arrows::core::detected_object_set_input_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_output" from derived type: "kwiver::arrows::core::detected_object_set_output_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_input" from derived type: "kwiver::arrows::core::detected_object_set_input_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_output" from derived type: "kwiver::arrows::core::detected_object_set_output_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "read_track_descriptor_set" from derived type: "kwiver::arrows::core::read_track_descriptor_set_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "write_track_descriptor_set" from derived type: "kwiver::arrows::core::write_track_descriptor_set_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "read_object_track_set" from derived type: "kwiver::arrows::core::read_object_track_set_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "write_object_track_set" from derived type: "kwiver::arrows::core::write_object_track_set_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_filter" from derived type: "kwiver::arrows::core::class_probablity_filter" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "associate_detections_to_tracks" from derived type: "kwiver::arrows::core::associate_detections_to_tracks_threshold" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "compute_association_matrix" from derived type: "kwiver::arrows::core::compute_association_matrix_from_features" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.519 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "initialize_object_tracks" from derived type: "kwiver::arrows::core::initialize_object_tracks_threshold" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:18.539 WARN algorithm.cxx(178): Could not find implementation "" for "estimate_essential_matrix".
131: 2017-09-12 18:51:18.539 WARN algorithm.cxx(178): Could not find implementation "" for "optimize_cameras".
131: 2017-09-12 18:51:18.539 WARN algorithm.cxx(178): Could not find implementation "" for "triangulate_landmarks".
131: 2017-09-12 18:51:18.539 WARN algorithm.cxx(178): Could not find implementation "" for "bundle_adjust".
131: 2017-09-12 18:51:18.540 WARN algorithm.cxx(178): Could not find implementation "" for "bundle_adjust".
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(748): global max 100
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(749): threshold 50
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 1 is 100 at 0, 1
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 2 is 100 at 0, 2
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 3 is 100 at 0, 3
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 4 is 100 at 0, 4
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 5 is 100 at 0, 5
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 6 is 100 at 0, 6
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 7 is 100 at 0, 7
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 8 is 100 at 0, 8
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 9 is 100 at 0, 9
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 10 is 100 at 0, 10
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 11 is 100 at 0, 11
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 12 is 100 at 0, 12
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 13 is 100 at 0, 13
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 14 is 100 at 0, 14
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 15 is 100 at 0, 15
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 16 is 100 at 0, 16
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 17 is 100 at 0, 17
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 18 is 100 at 0, 18
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 19 is 100 at 0, 19
131: 2017-09-12 18:51:18.545 INFO initialize_cameras_landmarks.cxx(952): Initializing with frames 0 and 19
131: 2017-09-12 18:51:18.545 DEBUG initialize_cameras_landmarks.cxx(1007): frame 19 uses reference 0
131: 2017-09-12 18:51:18.554 INFO initialize_cameras_landmarks.cxx(248): E matrix num inliers = 90/100
131: 2017-09-12 18:51:18.555 DEBUG initialize_cameras_landmarks.cxx(291): median scale = 1
131: 2017-09-12 18:51:18.571 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.572 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.219876 max: 2.70552
131: 2017-09-12 18:51:18.574 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.359794
131: 2017-09-12 18:51:18.574 DEBUG initialize_cameras_landmarks.cxx(1173): frame 19 - num landmarks = 100
131: 2017-09-12 18:51:18.575 DEBUG initialize_cameras_landmarks.cxx(828): frame 1 sees 100 landmarks
131: 2017-09-12 18:51:18.575 DEBUG initialize_cameras_landmarks.cxx(1007): frame 1 uses reference 0
131: 2017-09-12 18:51:18.581 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000878472, 0.000880211 ratio 0.998024
131: 2017-09-12 18:51:18.600 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.601 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.257835 max: 0.761368
131: 2017-09-12 18:51:18.603 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.404303
131: 2017-09-12 18:51:18.603 DEBUG initialize_cameras_landmarks.cxx(1173): frame 1 - num landmarks = 100
131: 2017-09-12 18:51:18.604 DEBUG initialize_cameras_landmarks.cxx(828): frame 2 sees 100 landmarks
131: 2017-09-12 18:51:18.604 DEBUG initialize_cameras_landmarks.cxx(1007): frame 2 uses reference 1
131: 2017-09-12 18:51:18.610 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000879889, 0.000875201 ratio 1.00536
131: 2017-09-12 18:51:18.631 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.632 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.295416 max: 0.889197
131: 2017-09-12 18:51:18.635 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.407858
131: 2017-09-12 18:51:18.635 DEBUG initialize_cameras_landmarks.cxx(1173): frame 2 - num landmarks = 100
131: 2017-09-12 18:51:18.636 DEBUG initialize_cameras_landmarks.cxx(828): frame 3 sees 100 landmarks
131: 2017-09-12 18:51:18.636 DEBUG initialize_cameras_landmarks.cxx(1007): frame 3 uses reference 2
131: 2017-09-12 18:51:18.642 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.00087521, 0.000868697 ratio 1.0075
131: 2017-09-12 18:51:18.666 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.667 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.337165 max: 0.806907
131: 2017-09-12 18:51:18.670 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.423542
131: 2017-09-12 18:51:18.670 DEBUG initialize_cameras_landmarks.cxx(1173): frame 3 - num landmarks = 100
131: 2017-09-12 18:51:18.671 DEBUG initialize_cameras_landmarks.cxx(828): frame 4 sees 100 landmarks
131: 2017-09-12 18:51:18.671 DEBUG initialize_cameras_landmarks.cxx(1007): frame 4 uses reference 3
131: 2017-09-12 18:51:18.677 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000868588, 0.000864229 ratio 1.00504
131: 2017-09-12 18:51:18.704 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.705 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.294514 max: 0.849154
131: 2017-09-12 18:51:18.708 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.428933
131: 2017-09-12 18:51:18.708 DEBUG initialize_cameras_landmarks.cxx(1173): frame 4 - num landmarks = 100
131: 2017-09-12 18:51:18.710 DEBUG initialize_cameras_landmarks.cxx(828): frame 5 sees 100 landmarks
131: 2017-09-12 18:51:18.710 DEBUG initialize_cameras_landmarks.cxx(1007): frame 5 uses reference 4
131: 2017-09-12 18:51:18.715 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000864118, 0.000854152 ratio 1.01167
131: 2017-09-12 18:51:18.745 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.746 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.332109 max: 0.92574
131: 2017-09-12 18:51:18.750 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.429771
131: 2017-09-12 18:51:18.750 DEBUG initialize_cameras_landmarks.cxx(1173): frame 5 - num landmarks = 100
131: 2017-09-12 18:51:18.751 DEBUG initialize_cameras_landmarks.cxx(828): frame 6 sees 100 landmarks
131: 2017-09-12 18:51:18.751 DEBUG initialize_cameras_landmarks.cxx(1007): frame 6 uses reference 5
131: 2017-09-12 18:51:18.757 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000854096, 0.000840964 ratio 1.01562
131: 2017-09-12 18:51:18.789 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.790 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.380461 max: 1.04407
131: 2017-09-12 18:51:18.795 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.437778
131: 2017-09-12 18:51:18.795 DEBUG initialize_cameras_landmarks.cxx(1173): frame 6 - num landmarks = 100
131: 2017-09-12 18:51:18.796 DEBUG initialize_cameras_landmarks.cxx(828): frame 7 sees 100 landmarks
131: 2017-09-12 18:51:18.796 DEBUG initialize_cameras_landmarks.cxx(1007): frame 7 uses reference 6
131: 2017-09-12 18:51:18.802 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000840921, 0.00082628 ratio 1.01772
131: 2017-09-12 18:51:18.839 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.840 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.306087 max: 1.11378
131: 2017-09-12 18:51:18.845 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.437133
131: 2017-09-12 18:51:18.845 DEBUG initialize_cameras_landmarks.cxx(1173): frame 7 - num landmarks = 100
131: 2017-09-12 18:51:18.846 DEBUG initialize_cameras_landmarks.cxx(828): frame 8 sees 100 landmarks
131: 2017-09-12 18:51:18.846 DEBUG initialize_cameras_landmarks.cxx(1007): frame 8 uses reference 7
131: 2017-09-12 18:51:18.852 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.00082606, 0.000813878 ratio 1.01497
131: 2017-09-12 18:51:18.892 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.893 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.373186 max: 0.94959
131: 2017-09-12 18:51:18.898 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.438893
131: 2017-09-12 18:51:18.898 DEBUG initialize_cameras_landmarks.cxx(1173): frame 8 - num landmarks = 100
131: 2017-09-12 18:51:18.900 DEBUG initialize_cameras_landmarks.cxx(828): frame 9 sees 100 landmarks
131: 2017-09-12 18:51:18.900 DEBUG initialize_cameras_landmarks.cxx(1007): frame 9 uses reference 8
131: 2017-09-12 18:51:18.906 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000813891, 0.000798368 ratio 1.01944
131: 2017-09-12 18:51:18.948 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:18.949 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.325922 max: 0.937568
131: 2017-09-12 18:51:18.955 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.439491
131: 2017-09-12 18:51:18.955 DEBUG initialize_cameras_landmarks.cxx(1173): frame 9 - num landmarks = 100
131: 2017-09-12 18:51:18.956 DEBUG initialize_cameras_landmarks.cxx(828): frame 10 sees 100 landmarks
131: 2017-09-12 18:51:18.956 DEBUG initialize_cameras_landmarks.cxx(1007): frame 10 uses reference 9
131: 2017-09-12 18:51:18.962 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000798475, 0.000778409 ratio 1.02578
131: 2017-09-12 18:51:19.9 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.10 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.322289 max: 0.85081
131: 2017-09-12 18:51:19.16 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.439117
131: 2017-09-12 18:51:19.16 DEBUG initialize_cameras_landmarks.cxx(1173): frame 10 - num landmarks = 100
131: 2017-09-12 18:51:19.17 DEBUG initialize_cameras_landmarks.cxx(828): frame 11 sees 100 landmarks
131: 2017-09-12 18:51:19.17 DEBUG initialize_cameras_landmarks.cxx(1007): frame 11 uses reference 10
131: 2017-09-12 18:51:19.23 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000778392, 0.000761096 ratio 1.02272
131: 2017-09-12 18:51:19.73 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.74 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.305558 max: 0.924251
131: 2017-09-12 18:51:19.81 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.437257
131: 2017-09-12 18:51:19.81 DEBUG initialize_cameras_landmarks.cxx(1173): frame 11 - num landmarks = 100
131: 2017-09-12 18:51:19.82 DEBUG initialize_cameras_landmarks.cxx(828): frame 12 sees 100 landmarks
131: 2017-09-12 18:51:19.82 DEBUG initialize_cameras_landmarks.cxx(1007): frame 12 uses reference 11
131: 2017-09-12 18:51:19.88 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000761065, 0.000744693 ratio 1.02198
131: 2017-09-12 18:51:19.142 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.143 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.379603 max: 0.838179
131: 2017-09-12 18:51:19.150 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.436693
131: 2017-09-12 18:51:19.150 DEBUG initialize_cameras_landmarks.cxx(1173): frame 12 - num landmarks = 100
131: 2017-09-12 18:51:19.152 DEBUG initialize_cameras_landmarks.cxx(828): frame 13 sees 100 landmarks
131: 2017-09-12 18:51:19.152 DEBUG initialize_cameras_landmarks.cxx(1007): frame 13 uses reference 12
131: 2017-09-12 18:51:19.158 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000744611, 0.000735829 ratio 1.01194
131: 2017-09-12 18:51:19.220 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.221 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.302247 max: 0.880774
131: 2017-09-12 18:51:19.230 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.433243
131: 2017-09-12 18:51:19.230 DEBUG initialize_cameras_landmarks.cxx(1173): frame 13 - num landmarks = 100
131: 2017-09-12 18:51:19.231 DEBUG initialize_cameras_landmarks.cxx(828): frame 14 sees 100 landmarks
131: 2017-09-12 18:51:19.231 DEBUG initialize_cameras_landmarks.cxx(1007): frame 14 uses reference 13
131: 2017-09-12 18:51:19.237 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000735566, 0.00073471 ratio 1.00116
131: 2017-09-12 18:51:19.302 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.303 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.356867 max: 0.8574
131: 2017-09-12 18:51:19.312 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.431129
131: 2017-09-12 18:51:19.312 DEBUG initialize_cameras_landmarks.cxx(1173): frame 14 - num landmarks = 100
131: 2017-09-12 18:51:19.313 DEBUG initialize_cameras_landmarks.cxx(828): frame 15 sees 100 landmarks
131: 2017-09-12 18:51:19.313 DEBUG initialize_cameras_landmarks.cxx(1007): frame 15 uses reference 14
131: 2017-09-12 18:51:19.319 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000734673, 0.000739533 ratio 0.993428
131: 2017-09-12 18:51:19.390 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.391 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.302955 max: 0.905813
131: 2017-09-12 18:51:19.400 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.431287
131: 2017-09-12 18:51:19.400 DEBUG initialize_cameras_landmarks.cxx(1173): frame 15 - num landmarks = 100
131: 2017-09-12 18:51:19.402 DEBUG initialize_cameras_landmarks.cxx(828): frame 16 sees 100 landmarks
131: 2017-09-12 18:51:19.402 DEBUG initialize_cameras_landmarks.cxx(1007): frame 16 uses reference 15
131: 2017-09-12 18:51:19.408 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000739561, 0.000744696 ratio 0.993104
131: 2017-09-12 18:51:19.483 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.484 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.346309 max: 0.836971
131: 2017-09-12 18:51:19.494 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.430256
131: 2017-09-12 18:51:19.494 DEBUG initialize_cameras_landmarks.cxx(1173): frame 16 - num landmarks = 100
131: 2017-09-12 18:51:19.495 DEBUG initialize_cameras_landmarks.cxx(828): frame 17 sees 100 landmarks
131: 2017-09-12 18:51:19.495 DEBUG initialize_cameras_landmarks.cxx(1007): frame 17 uses reference 16
131: 2017-09-12 18:51:19.501 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.00074474, 0.000759369 ratio 0.980736
131: 2017-09-12 18:51:19.581 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.582 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.335911 max: 0.920465
131: 2017-09-12 18:51:19.593 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.428686
131: 2017-09-12 18:51:19.593 DEBUG initialize_cameras_landmarks.cxx(1173): frame 17 - num landmarks = 100
131: 2017-09-12 18:51:19.594 DEBUG initialize_cameras_landmarks.cxx(828): frame 18 sees 100 landmarks
131: 2017-09-12 18:51:19.594 DEBUG initialize_cameras_landmarks.cxx(1007): frame 18 uses reference 17
131: 2017-09-12 18:51:19.600 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000759454, 0.00077638 ratio 0.978199
131: 2017-09-12 18:51:19.685 INFO initialize_cameras_landmarks.cxx(356): removing 0/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.686 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.333305 max: 1.01632
131: 2017-09-12 18:51:19.697 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.428946
131: 2017-09-12 18:51:19.697 DEBUG initialize_cameras_landmarks.cxx(1173): frame 18 - num landmarks = 100
131: similarity = 6.07937  0.601644
131:  0.601803
131: -0.370834
131: -0.371941     4.00108
131: -0.00171185
131:      1.9995
1/1 Test #131: test-vxl_initialize_cameras_landmarks-noisy_points_from_last ...   Passed    1.21 sec

The following tests passed:
	test-vxl_initialize_cameras_landmarks-noisy_points_from_last

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.23 sec
UpdateCTestConfiguration  from :/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
Parse Config file:/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
UpdateCTestConfiguration  from :/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
Parse Config file:/home/joncrall/code/VIAME/build/build/src/kwiver-build/DartConfiguration.tcl
Test project /home/joncrall/code/VIAME/build/build/src/kwiver-build
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 131
    Start 131: test-vxl_initialize_cameras_landmarks-noisy_points_from_last

131: Test command: /home/joncrall/code/VIAME/build/build/src/kwiver-build/tests/bin/test-vxl_initialize_cameras_landmarks "noisy_points_from_last"
131: Test timeout computed to be: 1500
131: INFO: Could not load default logger factory. Using built-in logger.
131: 2017-09-12 18:51:19.726 DEBUG plugin_manager.cxx(195): No additional paths on KWIVER_PLUGIN_PATH
131: 2017-09-12 18:51:19.726 DEBUG plugin_loader.cxx(335): Empty directory in the search path. Ignoring.
131: 2017-09-12 18:51:19.727 DEBUG plugin_loader.cxx(353): Loading plugins from directory: /home/joncrall/code/VIAME/build/install/lib/sprokit
131: 2017-09-12 18:51:19.727 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers.so
131: 2017-09-12 18:51:19.728 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::scheduler" from derived type: "sprokit::sync_scheduler" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers.so
131: 2017-09-12 18:51:19.728 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::scheduler" from derived type: "sprokit::thread_per_process_scheduler" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers.so
131: 2017-09-12 18:51:19.728 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/template_processes.so
131: 2017-09-12 18:51:19.733 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "group_ns::template_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/template_processes.so
131: 2017-09-12 18:51:19.734 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_adapter.so
131: 2017-09-12 18:51:19.734 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::input_adapter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_adapter.so
131: 2017-09-12 18:51:19.734 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::output_adapter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_adapter.so
131: 2017-09-12 18:51:19.734 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_clusters.so
131: 2017-09-12 18:51:19.734 DEBUG registration.cxx(94): Loading clusters from directory: /home/joncrall/code/VIAME/build/install/share/sprokit/pipelines/clusters
131: 2017-09-12 18:51:19.734 WARN registration.cxx(97): Path not found loading clusters: /home/joncrall/code/VIAME/build/install/share/sprokit/pipelines/clusters
131: 2017-09-12 18:51:19.735 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/modules_python.so
131: ImportError: No module named sprokit.modules.modules
131: 2017-09-12 18:51:19.740 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers_examples.so
131: 2017-09-12 18:51:19.741 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::scheduler" from derived type: "sprokit::thread_pool_scheduler" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/schedulers_examples.so
131: 2017-09-12 18:51:19.741 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_ocv.so
131: 2017-09-12 18:51:19.744 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_viewer_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_ocv.so
131: 2017-09-12 18:51:19.744 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::draw_detected_object_boxes_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_ocv.so
131: 2017-09-12 18:51:19.744 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.744 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::frame_list_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::stabilize_image_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detect_features_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::extract_descriptors_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::matcher_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::compute_homography_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::compute_stereo_depth_map_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::draw_tracks_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::read_descriptor_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::refine_detections_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_object_detector_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_filter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_writer_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::image_file_reader_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detected_object_input_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detected_object_output_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::detected_object_filter_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::video_input_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::draw_detected_object_set_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::split_image_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::read_track_descriptor_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::write_track_descriptor_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::read_object_track_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::write_object_track_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::associate_detections_to_tracks_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::compute_association_matrix_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::initialize_object_tracks_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes.so
131: 2017-09-12 18:51:19.745 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_vxl.so
131: 2017-09-12 18:51:19.746 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "kwiver::kw_archive_writer_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/kwiver_processes_vxl.so
131: 2017-09-12 18:51:19.746 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:19.746 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::collate_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:19.746 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::distribute_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:19.746 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::pass_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:19.746 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::sink_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_flow.so
131: 2017-09-12 18:51:19.746 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.746 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::any_source_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::const_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::const_number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::data_dependent_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::duplicate_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::expect_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::feedback_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::flow_dependent_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::multiplication_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::multiplier_cluster" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::mutate_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::orphan_cluster" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::orphan_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::print_number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::shared_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::skip_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::tagged_flow_dependent_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::take_number_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::take_string_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "sprokit::tunable_process" from file: /home/joncrall/code/VIAME/build/install/lib/sprokit/processes_examples.so
131: 2017-09-12 18:51:19.747 DEBUG plugin_loader.cxx(353): Loading plugins from directory: /home/joncrall/code/VIAME/build/install/lib/modules
131: 2017-09-12 18:51:19.747 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "analyze_tracks" from derived type: "kwiver::arrows::ocv::analyze_tracks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "draw_tracks" from derived type: "kwiver::arrows::ocv::draw_tracks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_fundamental_matrix" from derived type: "kwiver::arrows::ocv::estimate_fundamental_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_homography" from derived type: "kwiver::arrows::ocv::estimate_homography" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_io" from derived type: "kwiver::arrows::ocv::image_io" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "draw_detected_object_set" from derived type: "kwiver::arrows::ocv::draw_detected_object_set" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_BRISK" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_FAST" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_GFTT" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_MSER" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_ORB" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_simple_blob" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "extract_descriptors" from derived type: "kwiver::arrows::ocv::extract_descriptors_BRISK" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "extract_descriptors" from derived type: "kwiver::arrows::ocv::extract_descriptors_ORB" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::ocv::match_features_bruteforce" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::ocv::match_features_flannbased" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_object_detector" from derived type: "kwiver::arrows::ocv::hough_circle_detector" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detect_features" from derived type: "kwiver::arrows::ocv::detect_features_AGAST" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "refine_detections" from derived type: "kwiver::arrows::ocv::refine_detections_draw" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "split_image" from derived type: "kwiver::arrows::ocv::split_image" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_ocv_plugin.so
131: 2017-09-12 18:51:19.748 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/viame_camtrawl_plugin.so
131: 2017-09-12 18:51:19.748 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_object_detector" from derived type: "viame::camtrawl_detect" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_camtrawl_plugin.so
131: 2017-09-12 18:51:19.748 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/viame_core_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_input" from derived type: "viame::detected_object_set_input_habcam" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_core_plugin.so
131: 2017-09-12 18:51:19.749 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/viame_hello_world_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_object_detector" from derived type: "viame::hello_world_detector" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_hello_world_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_filter" from derived type: "viame::hello_world_filter" from file: /home/joncrall/code/VIAME/build/install/lib/modules/viame_hello_world_plugin.so
131: 2017-09-12 18:51:19.749 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "bundle_adjust" from derived type: "kwiver::arrows::vxl::bundle_adjust" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::vxl::close_loops_homography_guided" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_canonical_transform" from derived type: "kwiver::arrows::vxl::estimate_canonical_transform" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_essential_matrix" from derived type: "kwiver::arrows::vxl::estimate_essential_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_fundamental_matrix" from derived type: "kwiver::arrows::vxl::estimate_fundamental_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_homography" from derived type: "kwiver::arrows::vxl::estimate_homography" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_similarity_transform" from derived type: "kwiver::arrows::vxl::estimate_similarity_transform" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "image_io" from derived type: "kwiver::arrows::vxl::image_io" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "optimize_cameras" from derived type: "kwiver::arrows::vxl::optimize_cameras" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "split_image" from derived type: "kwiver::arrows::vxl::split_image" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "triangulate_landmarks" from derived type: "kwiver::arrows::vxl::triangulate_landmarks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::vxl::match_features_constrained" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::vxl::vidl_ffmpeg_video_input" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_vxl_plugin.so
131: 2017-09-12 18:51:19.749 DEBUG plugin_loader.cxx(398): Loading plugins from: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_bad_frames_only" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_exhaustive" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_keyframe" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "close_loops" from derived type: "kwiver::arrows::core::close_loops_multi_method" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "compute_ref_homography" from derived type: "kwiver::arrows::core::compute_ref_homography_core" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "convert_image" from derived type: "kwiver::arrows::core::convert_image_bypass" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "estimate_canonical_transform" from derived type: "kwiver::arrows::core::estimate_canonical_transform" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "feature_descriptor_io" from derived type: "kwiver::arrows::core::feature_descriptor_io" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "filter_features" from derived type: "kwiver::arrows::core::filter_features_magnitude" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "filter_features" from derived type: "kwiver::arrows::core::filter_features_scale" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "filter_tracks" from derived type: "kwiver::arrows::core::filter_tracks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "bundle_adjust" from derived type: "kwiver::arrows::core::hierarchical_bundle_adjust" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "initialize_cameras_landmarks" from derived type: "kwiver::arrows::core::initialize_cameras_landmarks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::core::match_features_fundamental_matrix" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "match_features" from derived type: "kwiver::arrows::core::match_features_homography" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "track_features" from derived type: "kwiver::arrows::core::track_features_core" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "triangulate_landmarks" from derived type: "kwiver::arrows::core::triangulate_landmarks" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "formulate_query" from derived type: "kwiver::arrows::core::formulate_query_core" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_filter" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_image_list" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_pos" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "video_input" from derived type: "kwiver::arrows::core::video_input_split" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "dynamic_configuration" from derived type: "kwiver::arrows::core::dynamic_config_none" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_input" from derived type: "kwiver::arrows::core::detected_object_set_input_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_output" from derived type: "kwiver::arrows::core::detected_object_set_output_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_input" from derived type: "kwiver::arrows::core::detected_object_set_input_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_set_output" from derived type: "kwiver::arrows::core::detected_object_set_output_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "read_track_descriptor_set" from derived type: "kwiver::arrows::core::read_track_descriptor_set_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "write_track_descriptor_set" from derived type: "kwiver::arrows::core::write_track_descriptor_set_csv" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "read_object_track_set" from derived type: "kwiver::arrows::core::read_object_track_set_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "write_object_track_set" from derived type: "kwiver::arrows::core::write_object_track_set_kw18" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "detected_object_filter" from derived type: "kwiver::arrows::core::class_probablity_filter" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "associate_detections_to_tracks" from derived type: "kwiver::arrows::core::associate_detections_to_tracks_threshold" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "compute_association_matrix" from derived type: "kwiver::arrows::core::compute_association_matrix_from_features" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.750 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "initialize_object_tracks" from derived type: "kwiver::arrows::core::initialize_object_tracks_threshold" from file: /home/joncrall/code/VIAME/build/install/lib/modules/kwiver_algo_core_plugin.so
131: 2017-09-12 18:51:19.770 WARN algorithm.cxx(178): Could not find implementation "" for "estimate_essential_matrix".
131: 2017-09-12 18:51:19.770 WARN algorithm.cxx(178): Could not find implementation "" for "optimize_cameras".
131: 2017-09-12 18:51:19.770 WARN algorithm.cxx(178): Could not find implementation "" for "triangulate_landmarks".
131: 2017-09-12 18:51:19.770 WARN algorithm.cxx(178): Could not find implementation "" for "bundle_adjust".
131: 2017-09-12 18:51:19.771 WARN algorithm.cxx(178): Could not find implementation "" for "bundle_adjust".
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(748): global max 100
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(749): threshold 50
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 1 is 100 at 0, 1
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 2 is 100 at 0, 2
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 3 is 100 at 0, 3
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 4 is 100 at 0, 4
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 5 is 100 at 0, 5
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 6 is 100 at 0, 6
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 7 is 100 at 0, 7
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 8 is 100 at 0, 8
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 9 is 100 at 0, 9
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 10 is 100 at 0, 10
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 11 is 100 at 0, 11
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 12 is 100 at 0, 12
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 13 is 100 at 0, 13
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 14 is 100 at 0, 14
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 15 is 100 at 0, 15
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 16 is 100 at 0, 16
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 17 is 100 at 0, 17
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 18 is 100 at 0, 18
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(765): max matches at 19 is 100 at 0, 19
131: 2017-09-12 18:51:19.776 INFO initialize_cameras_landmarks.cxx(952): Initializing with frames 0 and 19
131: 2017-09-12 18:51:19.776 DEBUG initialize_cameras_landmarks.cxx(1007): frame 19 uses reference 0
131: 2017-09-12 18:51:19.786 INFO initialize_cameras_landmarks.cxx(248): E matrix num inliers = 70/100
131: 2017-09-12 18:51:19.786 DEBUG initialize_cameras_landmarks.cxx(291): median scale = 1
131: 2017-09-12 18:51:19.802 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.803 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.298737 max: 6.523
131: 2017-09-12 18:51:19.804 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.77623
131: 2017-09-12 18:51:19.804 DEBUG initialize_cameras_landmarks.cxx(1173): frame 19 - num landmarks = 99
131: 2017-09-12 18:51:19.806 DEBUG initialize_cameras_landmarks.cxx(828): frame 1 sees 99 landmarks
131: 2017-09-12 18:51:19.806 DEBUG initialize_cameras_landmarks.cxx(1007): frame 1 uses reference 0
131: 2017-09-12 18:51:19.812 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000868576, 0.000868264 ratio 1.00036
131: 2017-09-12 18:51:19.831 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.832 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.363256 max: 1.02474
131: 2017-09-12 18:51:19.834 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.793317
131: 2017-09-12 18:51:19.834 DEBUG initialize_cameras_landmarks.cxx(1173): frame 1 - num landmarks = 99
131: 2017-09-12 18:51:19.835 DEBUG initialize_cameras_landmarks.cxx(828): frame 2 sees 99 landmarks
131: 2017-09-12 18:51:19.835 DEBUG initialize_cameras_landmarks.cxx(1007): frame 2 uses reference 1
131: 2017-09-12 18:51:19.841 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000868398, 0.000864089 ratio 1.00499
131: 2017-09-12 18:51:19.862 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.863 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.315896 max: 1.07008
131: 2017-09-12 18:51:19.866 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.757697
131: 2017-09-12 18:51:19.866 DEBUG initialize_cameras_landmarks.cxx(1173): frame 2 - num landmarks = 99
131: 2017-09-12 18:51:19.867 DEBUG initialize_cameras_landmarks.cxx(828): frame 3 sees 99 landmarks
131: 2017-09-12 18:51:19.867 DEBUG initialize_cameras_landmarks.cxx(1007): frame 3 uses reference 2
131: 2017-09-12 18:51:19.873 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000864065, 0.00085744 ratio 1.00773
131: 2017-09-12 18:51:19.897 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.898 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.353631 max: 0.871587
131: 2017-09-12 18:51:19.901 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.722629
131: 2017-09-12 18:51:19.901 DEBUG initialize_cameras_landmarks.cxx(1173): frame 3 - num landmarks = 99
131: 2017-09-12 18:51:19.902 DEBUG initialize_cameras_landmarks.cxx(828): frame 4 sees 99 landmarks
131: 2017-09-12 18:51:19.902 DEBUG initialize_cameras_landmarks.cxx(1007): frame 4 uses reference 3
131: 2017-09-12 18:51:19.908 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000857354, 0.000852779 ratio 1.00536
131: 2017-09-12 18:51:19.935 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.936 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.400082 max: 0.848928
131: 2017-09-12 18:51:19.940 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.700743
131: 2017-09-12 18:51:19.940 DEBUG initialize_cameras_landmarks.cxx(1173): frame 4 - num landmarks = 99
131: 2017-09-12 18:51:19.941 DEBUG initialize_cameras_landmarks.cxx(828): frame 5 sees 99 landmarks
131: 2017-09-12 18:51:19.941 DEBUG initialize_cameras_landmarks.cxx(1007): frame 5 uses reference 4
131: 2017-09-12 18:51:19.947 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000852509, 0.000844245 ratio 1.00979
131: 2017-09-12 18:51:19.977 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:19.978 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.388682 max: 0.895595
131: 2017-09-12 18:51:19.982 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.681593
131: 2017-09-12 18:51:19.982 DEBUG initialize_cameras_landmarks.cxx(1173): frame 5 - num landmarks = 99
131: 2017-09-12 18:51:19.983 DEBUG initialize_cameras_landmarks.cxx(828): frame 6 sees 99 landmarks
131: 2017-09-12 18:51:19.983 DEBUG initialize_cameras_landmarks.cxx(1007): frame 6 uses reference 5
131: 2017-09-12 18:51:19.989 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000844173, 0.000832841 ratio 1.01361
131: 2017-09-12 18:51:20.21 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.22 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.390154 max: 1.37242
131: 2017-09-12 18:51:20.27 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.669243
131: 2017-09-12 18:51:20.27 DEBUG initialize_cameras_landmarks.cxx(1173): frame 6 - num landmarks = 99
131: 2017-09-12 18:51:20.28 DEBUG initialize_cameras_landmarks.cxx(828): frame 7 sees 99 landmarks
131: 2017-09-12 18:51:20.28 DEBUG initialize_cameras_landmarks.cxx(1007): frame 7 uses reference 6
131: 2017-09-12 18:51:20.34 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000832654, 0.000823979 ratio 1.01053
131: 2017-09-12 18:51:20.71 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.72 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.419822 max: 1.18835
131: 2017-09-12 18:51:20.77 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.660287
131: 2017-09-12 18:51:20.77 DEBUG initialize_cameras_landmarks.cxx(1173): frame 7 - num landmarks = 99
131: 2017-09-12 18:51:20.78 DEBUG initialize_cameras_landmarks.cxx(828): frame 8 sees 99 landmarks
131: 2017-09-12 18:51:20.78 DEBUG initialize_cameras_landmarks.cxx(1007): frame 8 uses reference 7
131: 2017-09-12 18:51:20.84 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000824144, 0.000814816 ratio 1.01145
131: 2017-09-12 18:51:20.123 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.124 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.400691 max: 1.33769
131: 2017-09-12 18:51:20.130 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.651421
131: 2017-09-12 18:51:20.130 DEBUG initialize_cameras_landmarks.cxx(1173): frame 8 - num landmarks = 99
131: 2017-09-12 18:51:20.131 DEBUG initialize_cameras_landmarks.cxx(828): frame 9 sees 99 landmarks
131: 2017-09-12 18:51:20.131 DEBUG initialize_cameras_landmarks.cxx(1007): frame 9 uses reference 8
131: 2017-09-12 18:51:20.137 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000814953, 0.000800731 ratio 1.01776
131: 2017-09-12 18:51:20.183 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.184 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.429031 max: 1.3455
131: 2017-09-12 18:51:20.190 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.645004
131: 2017-09-12 18:51:20.190 DEBUG initialize_cameras_landmarks.cxx(1173): frame 9 - num landmarks = 99
131: 2017-09-12 18:51:20.191 DEBUG initialize_cameras_landmarks.cxx(828): frame 10 sees 99 landmarks
131: 2017-09-12 18:51:20.191 DEBUG initialize_cameras_landmarks.cxx(1007): frame 10 uses reference 9
131: 2017-09-12 18:51:20.197 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000800736, 0.000781509 ratio 1.0246
131: 2017-09-12 18:51:20.246 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.247 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.364672 max: 1.25896
131: 2017-09-12 18:51:20.253 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.632374
131: 2017-09-12 18:51:20.253 DEBUG initialize_cameras_landmarks.cxx(1173): frame 10 - num landmarks = 99
131: 2017-09-12 18:51:20.255 DEBUG initialize_cameras_landmarks.cxx(828): frame 11 sees 99 landmarks
131: 2017-09-12 18:51:20.255 DEBUG initialize_cameras_landmarks.cxx(1007): frame 11 uses reference 10
131: 2017-09-12 18:51:20.260 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000781504, 0.000765171 ratio 1.02135
131: 2017-09-12 18:51:20.311 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.312 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.387823 max: 1.47164
131: 2017-09-12 18:51:20.318 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.623647
131: 2017-09-12 18:51:20.318 DEBUG initialize_cameras_landmarks.cxx(1173): frame 11 - num landmarks = 99
131: 2017-09-12 18:51:20.320 DEBUG initialize_cameras_landmarks.cxx(828): frame 12 sees 99 landmarks
131: 2017-09-12 18:51:20.320 DEBUG initialize_cameras_landmarks.cxx(1007): frame 12 uses reference 11
131: 2017-09-12 18:51:20.326 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000765181, 0.000747495 ratio 1.02366
131: 2017-09-12 18:51:20.381 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.382 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.373615 max: 0.962066
131: 2017-09-12 18:51:20.389 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.6148
131: 2017-09-12 18:51:20.389 DEBUG initialize_cameras_landmarks.cxx(1173): frame 12 - num landmarks = 99
131: 2017-09-12 18:51:20.391 DEBUG initialize_cameras_landmarks.cxx(828): frame 13 sees 99 landmarks
131: 2017-09-12 18:51:20.391 DEBUG initialize_cameras_landmarks.cxx(1007): frame 13 uses reference 12
131: 2017-09-12 18:51:20.397 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.00074751, 0.000738729 ratio 1.01189
131: 2017-09-12 18:51:20.454 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.455 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.335376 max: 0.984234
131: 2017-09-12 18:51:20.463 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.603602
131: 2017-09-12 18:51:20.463 DEBUG initialize_cameras_landmarks.cxx(1173): frame 13 - num landmarks = 99
131: 2017-09-12 18:51:20.464 DEBUG initialize_cameras_landmarks.cxx(828): frame 14 sees 99 landmarks
131: 2017-09-12 18:51:20.464 DEBUG initialize_cameras_landmarks.cxx(1007): frame 14 uses reference 13
131: 2017-09-12 18:51:20.470 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000738748, 0.000736766 ratio 1.00269
131: 2017-09-12 18:51:20.532 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.533 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.353343 max: 1.33457
131: 2017-09-12 18:51:20.542 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.59433
131: 2017-09-12 18:51:20.542 DEBUG initialize_cameras_landmarks.cxx(1173): frame 14 - num landmarks = 99
131: 2017-09-12 18:51:20.543 DEBUG initialize_cameras_landmarks.cxx(828): frame 15 sees 99 landmarks
131: 2017-09-12 18:51:20.543 DEBUG initialize_cameras_landmarks.cxx(1007): frame 15 uses reference 14
131: 2017-09-12 18:51:20.549 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000736722, 0.000741415 ratio 0.99367
131: 2017-09-12 18:51:20.616 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.617 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.364596 max: 1.99913
131: 2017-09-12 18:51:20.626 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.589513
131: 2017-09-12 18:51:20.626 DEBUG initialize_cameras_landmarks.cxx(1173): frame 15 - num landmarks = 99
131: 2017-09-12 18:51:20.627 DEBUG initialize_cameras_landmarks.cxx(828): frame 16 sees 99 landmarks
131: 2017-09-12 18:51:20.627 DEBUG initialize_cameras_landmarks.cxx(1007): frame 16 uses reference 15
131: 2017-09-12 18:51:20.633 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000741431, 0.00074797 ratio 0.991258
131: 2017-09-12 18:51:20.705 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.706 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.371323 max: 2.1622
131: 2017-09-12 18:51:20.716 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.585631
131: 2017-09-12 18:51:20.716 DEBUG initialize_cameras_landmarks.cxx(1173): frame 16 - num landmarks = 99
131: 2017-09-12 18:51:20.717 DEBUG initialize_cameras_landmarks.cxx(828): frame 17 sees 99 landmarks
131: 2017-09-12 18:51:20.717 DEBUG initialize_cameras_landmarks.cxx(1007): frame 17 uses reference 16
131: 2017-09-12 18:51:20.723 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000747892, 0.000760937 ratio 0.982857
131: 2017-09-12 18:51:20.799 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.800 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.38831 max: 2.019
131: 2017-09-12 18:51:20.810 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.582062
131: 2017-09-12 18:51:20.810 DEBUG initialize_cameras_landmarks.cxx(1173): frame 17 - num landmarks = 99
131: 2017-09-12 18:51:20.811 DEBUG initialize_cameras_landmarks.cxx(828): frame 18 sees 99 landmarks
131: 2017-09-12 18:51:20.811 DEBUG initialize_cameras_landmarks.cxx(1007): frame 18 uses reference 17
131: 2017-09-12 18:51:20.817 DEBUG initialize_cameras_landmarks.cxx(1035): GSD estimates: 0.000761019, 0.000777919 ratio 0.978275
131: 2017-09-12 18:51:20.898 INFO initialize_cameras_landmarks.cxx(356): removing 1/100 landmarks with RMSE > 5
131: 2017-09-12 18:51:20.899 DEBUG initialize_cameras_landmarks.cxx(1096): new camera reprojections - median: 0.490675 max: 2.78753
131: 2017-09-12 18:51:20.910 INFO initialize_cameras_landmarks.cxx(1171): current reprojection RMSE: 0.585535
131: 2017-09-12 18:51:20.910 DEBUG initialize_cameras_landmarks.cxx(1173): frame 18 - num landmarks = 99
131: similarity = 6.07923  0.601801
131:  0.599486
131: -0.374148
131:  -0.37211     3.99917
131: 0.000379489
131:     2.00089
1/1 Test #131: test-vxl_initialize_cameras_landmarks-noisy_points_from_last ...***Exception: SegFault  1.19 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   1.21 sec

The following tests FAILED:
	131 - test-vxl_initialize_cameras_landmarks-noisy_points_from_last (SEGFAULT)

I'm raising this issue so I don't forget about it.

Expand image_container API to allow for sub-sampling of images

Add a new method to the image_container API, get_image(x, y, width, height, which would allow accessing sub images without having to load the full image into memory. This would be particularly useful for large satellite image. Create a GDAL specific implementation of the image_container with this size issue in mind.

parallel build fails in sprokit

On a parallel build after a make clean, sprokit pretty much always fails immediately due to (I guess) dependency issues not clearly communicated in the CMakeLists.txt:

collinsr@aelfrice:kwiver-bin$ make clean && make -j8
make[2]: *** No rule to make target `sprokit/src/sprokit/pipeline/configure.sprokit-sprokit-pipeline.pc.cmake', needed by `sprokit/lib/pkgconfig/sprokit-pipeline.pc'.  Stop.
make[2]: *** No rule to make target `sprokit/src/sprokit/configure.version.h.cmake', needed by `sprokit/src/sprokit/version.h'make[2]: *** .  Stop.
No rule to make target `sprokit/src/sprokit/pipeline_util/configure.sprokit-sprokit-pipeline_util.pc.cmake', needed by `sprokit/lib/pkgconfig/sprokit-pipeline_util.pc'.  Stop.
make[1]: *** [sprokit/src/sprokit/CMakeFiles/configure-version.h.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [sprokit/src/sprokit/pipeline/CMakeFiles/configure-sprokit-sprokit-pipeline.pc.dir/all] Error 2
make[1]: *** [sprokit/src/sprokit/pipeline_util/CMakeFiles/configure-sprokit-sprokit-pipeline_util.pc.dir/all] Error 2
make[2]: *** No rule to make target `sprokit/src/sprokit/scoring/configure.sprokit-sprokit-scoring.pc.cmake', needed by `sprokit/lib/pkgconfig/sprokit-scoring.pc'.  Stop.
make[1]: *** [sprokit/src/sprokit/scoring/CMakeFiles/configure-sprokit-sprokit-scoring.pc.dir/all] Error 2

relativepath fails when the pipeline_runner is used in the pipe file's directory.

When I ran pipeline_runner -p on a pipe file in the current directory, It added a slash to the beginning of the specified relativepath. I noticed this issue when I had a *.pipe file that contained: relativepath external_pipeline_file = smqtk_query.pipe. Upon running pipeline_runner -p .pipe I got the following error: Unable to open pipeline file: /smqtk_query.pipe. When I ran pipeline_runner on the same file, but from a different directory, it worked properly.

Check for unexpected config values

A problem I periodically have is that I either misspell a configuration parameter in the .pipe file or I mess up the block structure such that the configuration parameter is not parsed/applied, and I end up silently using the default value for that parameter. There should be a more framework level check to raise an error when an unexpected/unhandled configuration parameter is encountered.

kwiver_algo_core is now exist in 'kwiver/arrows/core'

I am trying to built Maptk it is showing the following error:

CMake Error at /home/balaji/Downloads/kwiver/kwiver/CMake/utils/kwiver-utils-targets.cmake:120 (add_executable):
Target "maptk_match_matrix" links to target "kwiver::kwiver_algo_core" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
tools/CMakeLists.txt:24 (kwiver_add_executable)

thread_pool test hangs when listing tests

On Windows (particularly, on our current CI machine; may not affect all Windows machines), the thread_pool test is mysteriously hanging during test discovery (i.e. if run with --gtest_list_tests). Strangely, it does not hang if run with no arguments (i.e. in "run all tests" mode).

It seems to be stuck in ~unique_ptr for a thread_pool related object. I would guess there is an issue with some static initialization, particularly in the case that the thread pool is initialized but not used.

Note that the test calls thread_pool::instance().available_backends() in the static initializer to set up the paramaterized tests.

This is an issue because it leads to a build failure. (Prior to #406, it would cause the build to hang.)

Missing hdf5

Error:
In file included from /home/matt/libraries/fletch-build/build/src/OpenCV-build/modules/python2/pyopencv_generated_include.h:11:0,
from /home/matt/libraries/fletch-build/build/src/OpenCV/modules/python/src2/cv2.cpp:12:
/home/matt/libraries/fletch-build/build/src/OpenCV_contrib/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory
#include <hdf5.h>

In cmake, fletch_ENABLE_HDF5=ON

Installing libhdf5-dev fixes it.

X11_Xt_LIB could not be found

CMake Error at Rendering/OpenGL/CMakeLists.txt:346 (message):
X11_Xt_LIB could not be found. Required for VTK X lib.

make[2]: *** [build/src/VTK-stamp/VTK-configure] Error 1
make[1]: *** [CMakeFiles/VTK.dir/all] Error 2

I installed libxt-dev to overcome.

Build errors

/home/naths/srcs/kwiver/vital/types/detected_object_set.cxx:93:24: error: no member named 'clone' in 'kwiver::vital::detected_object'
new_obj->add( det->clone() );
~~~ ^
/home/naths/srcs/kwiver/vital/types/detected_object_set.cxx:97:37: error: no member named 'clone' in 'kwiver::vital::attribute_set'
new_obj->m_attrs = this->m_attrs->clone();
~~~~~~~~~~~~~ ^

What ffmpeg version to use? (Example of a working build environment?)

This isn't exactly a bug with your software, but it is not clear what the build environment should be.

I had compiled the latest version of ffmpeg for working with opencv but then that is not compatible with VXL.

Then I tried finding a version suggested in this (probably too old) post but that revision -r11322 doesn't compile with your version of opencv from fletch.

Anyway, I just wanted to know what a working build environment is.

Thank you!!

Alex

ocv::image_container::vital_to_ocv memory issue for grayscale image

When converting a grayscale image within an image_container_sptr to a cv::Mat
cv_dest = ocv::image_container::vital_to_ocv(image_dest->get_image());
I am encountering image corruption at random times throughout the pipeline processing, which leads me to believe something is going on with the image data memory. If I follow the above with cv_dest = cv_dest.clone();, the issue goes away.

If you look at https://github.com/Kitware/kwiver/blob/master/arrows/ocv/image_container.cxx#L140, you can see that it exercises a different code path for mono images. I don't have these issues with RGB images.

I think it might be related to this TODO
https://github.com/Kitware/kwiver/blob/master/arrows/ocv/image_container.cxx#L162

If I recall, Converting cv::Mat —> vital::image —> cv::Mat for shallow copies works with reference counting because Vital keeps a copy of OpenCV’s reference counter. However, vital::image —> cv::Mat —> vital::image is incomplete because we have to hack OpenCV somehow to make it remember Vital’s reference counter. So where that TODO is we might need an “else return deep copy” until we figure out how to hack OpenCV.

CMake error when just enabling C-bindings and python

When attempting a fresh build, if I just set KWIVER_ENABLE_C_BINDINGS and KWIVER_ENABLE_PYTHON to ON I get the following CMake output with an error at the end:

-- Current path: '/home/purg/dev/kwiver/source/CMake'
-- Import CMake future from '/home/purg/dev/kwiver/source/CMake/future'
-- Import CMake future '3.10'
-- python_site_packages = lib/python2.7/site-packages
-- Performing Test has_compiler_flag--std=cplusplus11
-- Performing Test has_compiler_flag--std=cplusplus11 - Success
-- Performing Test has_compiler_flag--fvisibility=hidden
-- Performing Test has_compiler_flag--fvisibility=hidden - Success
-- Performing Test has_compiler_flag--Werror=return-type
-- Performing Test has_compiler_flag--Werror=return-type - Success
-- Performing Test has_compiler_flag--Werror=non-virtual-dtor
-- Performing Test has_compiler_flag--Werror=non-virtual-dtor - Success
-- Performing Test has_compiler_flag--Werror=narrowing
-- Performing Test has_compiler_flag--Werror=narrowing - Success
-- Performing Test has_compiler_flag--Werror=init-self
-- Performing Test has_compiler_flag--Werror=init-self - Success
-- Performing Test has_compiler_flag--Werror=reorder
-- Performing Test has_compiler_flag--Werror=reorder - Success
-- Performing Test has_compiler_flag--Werror=overloaded-virtual
-- Performing Test has_compiler_flag--Werror=overloaded-virtual - Success
-- Performing Test has_compiler_flag--Werror=cast-qual
-- Performing Test has_compiler_flag--Werror=cast-qual - Success
-- checking CPP_AUTO auto.cxx
-- checking CPP_CONSTEXPR constexpr.cxx
-- checking CPP_DEFAULT_CTOR default-ctor.cxx
-- checking CPP_FINAL final.cxx
-- checking CPP_NOEXCEPT throw-noexcept.cxx
-- checking CPP_RANGE_FOR range-for.cxx
-- checking STD_CHRONO std_chrono.cxx
-- checking STD_NULLPTR null_ptr.cxx
-- Making library "vital"
-- Making library "vital_exceptions"
-- Making library "vital_algo"
-- Making library "vital_util"
-- Making library "vital_c"
-- [configure-python-vital-apm] Creating configure command
-- [configure-python-vital-__init__] Creating configure command
-- [configure-python-vital.algo-algorithm] Creating configure command
-- [configure-python-vital.algo-bundle_adjust] Creating configure command
-- [configure-python-vital.algo-convert_image] Creating configure command
-- [configure-python-vital.algo-estimate_canonical_transform] Creating configure command
-- [configure-python-vital.algo-estimate_similarity_transform] Creating configure command
-- [configure-python-vital.algo-image_io] Creating configure command
-- [configure-python-vital.algo-initialize_cameras_landmarks] Creating configure command
-- [configure-python-vital.algo-track_features] Creating configure command
-- [configure-python-vital.algo-triangulate_landmarks] Creating configure command
-- [configure-python-vital.algo-__init__] Creating configure command
-- [configure-python-vital.bin-maptk_track_features] Creating configure command
-- [configure-python-vital.exceptions-algorithm] Creating configure command
-- [configure-python-vital.exceptions-base] Creating configure command
-- [configure-python-vital.exceptions-config_block] Creating configure command
-- [configure-python-vital.exceptions-config_block_io] Creating configure command
-- [configure-python-vital.exceptions-eigen] Creating configure command
-- [configure-python-vital.exceptions-image] Creating configure command
-- [configure-python-vital.exceptions-math] Creating configure command
-- [configure-python-vital.exceptions-__init__] Creating configure command
-- Making library "python-vital.types-bounding_box"
-- Making library "python-vital.types-camera"
-- Making library "python-vital.types-camera_intrinsics"
-- Making library "python-vital.types-camera_map"
-- Making library "python-vital.types-color"
-- Making library "python-vital.types-covariance"
-- Making library "python-vital.types-descriptor"
-- Making library "python-vital.types-descriptor_set"
-- Making library "python-vital.types-detected_object"
-- Making library "python-vital.types-detected_object_set"
-- Making library "python-vital.types-detected_object_type"
-- Making library "python-vital.types-eigen"
-- Making library "python-vital.types-feature"
-- Making library "python-vital.types-homography"
-- Making library "python-vital.types-image"
-- Making library "python-vital.types-image_container"
-- Making library "python-vital.types-landmark"
-- Making library "python-vital.types-rotation"
-- Making library "python-vital.types-similarity"
-- Making library "python-vital.types-track"
-- Making library "python-vital.types-track_set"
-- Making library "python-vital.types-object_track_set"
CMake Error at vital/bindings/python/vital/types/CMakeLists.txt:159 (sprokit_create_python_init):
  Unknown CMake command "sprokit_create_python_init".


-- Configuring incomplete, errors occurred!

plugin_explorer segmentation faults

plugin_explorer with options -h, -d works, but

But plugin_explorer with options -algorithms, -help, -summary, -path, -files, -detail gives:
Segmentation fault (core dumped)

Tests fail to build in Visual Studio

When building KWIVER in Visual Studio on Windows, the test will fail to build because GTest is required to run at build time and is not in the system path. GTest is typically provided as part of Fletch. We need a way for CMake to add the Fletch binary directory to the path for the KWIVER visual studio solution file.

OpenCV compatibility

``
/home/naths/srcs/kwiver/arrows/ocv/estimate_fundamental_matrix.cxx:152:39: error:
use of undeclared identifier 'CV_FM_RANSAC'; did you mean 'cv::FM_RANSAC'?
CV_FM_RANSAC,
^~~~~~~~~~~~
cv::FM_RANSAC
/usr/local/include/opencv2/calib3d.hpp:286:8: note: 'cv::FM_RANSAC' declared
here
FM_RANSAC = 8 //!< RANSAC algorithm. It needs at least 15 points...
^
[ 88%] Built target processes_clusters
/home/naths/srcs/kwiver/arrows/ceres/options.cxx:70:52: error: no member named
'num_linear_solver_threads' in 'ceres::Solver::Options'
config->set_value("num_linear_solver_threads", o.num_linear_solver_threads,
~ ^
/home/naths/srcs/kwiver/arrows/ceres/options.cxx:107:21: error: no member named
'num_linear_solver_threads' in 'ceres::Solver::Options'
GET_VALUE(int, num_linear_solver_threads);

/home/naths/srcs/kwiver/arrows/ceres/options.cxx:104:11: note: expanded from
    macro 'GET_VALUE'
options.vname = config->get_value< vtype >(#vname, options.vname);
~~~~~~~ ^
/home/naths/srcs/kwiver/arrows/ceres/options.cxx:107:21: error: no member named
    'num_linear_solver_threads' in 'ceres::Solver::Options'
GET_VALUE(int,    num_linear_solver_threads);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/naths/srcs/kwiver/arrows/ceres/options.cxx:104:62: note: expanded from
    macro 'GET_VALUE'
options.vname = config->get_value< vtype >(#vname, options.vname);
                                                   ~~~~~~~ ^
1 error generated.
arrows/ocv/CMakeFiles/kwiver_algo_ocv.dir/build.make:231: recipe for target 'arrows/ocv/CMakeFiles/kwiver_algo_ocv.dir/estimate_fundamental_matrix.cxx.o' failed
make[2]: *** [arrows/ocv/CMakeFiles/kwiver_algo_ocv.dir/estimate_fundamental_matrix.cxx.o] Error 1
/home/naths/srcs/kwiver/arrows/ocv/draw_detected_object_set.cxx:197:84: error: 
    use of undeclared identifier 'CV_FILLED'
...cv::Point( text.width, -text.height ), cv::Scalar( 0, 0, 0 ), CV_FILLED );
                                                                 ^
1 error generated.
arrows/ocv/CMakeFiles/kwiver_algo_ocv.dir/build.make:205: recipe for target 'arrows/ocv/CMakeFiles/kwiver_algo_ocv.dir/draw_detected_object_set.cxx.o' failed
make[2]: *** [arrows/ocv/CMakeFiles/kwiver_algo_ocv.dir/draw_detected_object_set.cxx.o] Error 1
/home/naths/srcs/kwiver/arrows/ocv/hough_circle_detector.cxx:164:32: error: no
    member named 'BGR2GRAY' in namespace 'cv'
cvtColor( src, src_gray, cv::BGR2GRAY );
                         ~~~~^
/home/naths/srcs/kwiver/arrows/ocv/hough_circle_detector.cxx:174:21: error: use
    of undeclared identifier 'CV_HOUGH_GRADIENT'; did you mean
    'cv::HOUGH_GRADIENT'?
                  CV_HOUGH_GRADIENT, // i: method
                  ^~~~~~~~~~~~~~~~~
                  cv::HOUGH_GRADIENT
>

Plugin Loading Failure Messages Invalid on Windows

When a plugin load fails on windows (due to a missing dll or the like) it just prints unable to load plugin [plugin_name]: T

'T' isn't useful, and there should be a more helpful message somewhere in the windows DLL api.

Windows executable hanging on termination in thread_pool

There is an issue in the singleton vital::thread_pool class that causes programs which use it to hang when they terminate. This only happens on Windows with Visual Studio and appears to be related to this issue:

https://stackoverflow.com/questions/17093164/why-does-this-c-static-singleton-never-stop

However, the proposed fix in the above discussion does not help here. A work around is to call

vital::thread_pool::set_backend("Sync");

before exiting the main() function, but this is not ideal.

Pipeline runner hangs if python raises an error

If you try to run a python pipeline and access an attribute that doesn't exist, python raises an AttributeError, but the pipeline_runner will just hang and not respond to ctrl+c.

This error case should likely be caught and handled gracefully.

explorer_plugin_export.h missing

When I try to build, I get
.../kwiver/vital/algo/algo_explorer_plugin.cxx:31:48: fatal error: vital/tools/explorer_plugin_export.h: No such file or directory
#include <vital/tools/explorer_plugin_export.h>

Log4cxx_INCLUDE_DIR missing

During the KWIVER build, I get
CMake Error at /opt/cmake/cmake-3.8.0-rc1-Linux-x86_64/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:137
(message):
Log4cxx_INCLUDE_DIR (missing: Log4cxx_LIBRARY)
Call Stack (most recent call first):
/opt/cmake/cmake-3.8.0-rc1-Linux-x86_64/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:377
(_FPHSA_FAILURE_MESSAGE)
CMake/FindLog4cxx.cmake:24 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMake/kwiver-depends-log4cxx.cmake:11 (find_package)
CMake/kwiver-depends.cmake:8 (include)
CMakeLists.txt:104 (include)

installed liblog4cxx10-dev to overcome it.

Need more swappable image and video sources

You should be able to switch on the command line between feeding in an image list, and a video list into a pipeline. As is you need to make separate .pipe files for both which you don't need to do in other toolkits

Issue building kwiver with clang and fletch with gcc

I am seeing an issue when building fletch with gcc and then kwiver with clang. I'm not sure if this is expected to cause problems, but it seems that the travis dashboards for master are successfully building clang-kwiver against gcc-fletch. So, it seems odd that I can't.

Note, that If I build clang-kwiver against clang-fletch, then the error does not occur. This test also does not occur if with KWIVER_ENABLE_TESTS=False.

However, when I build clang-kwiver against gcc-fletch (with KWIVER_ENABLE_TESTS=True) I get a linker error in the vxl arrow tests:

Scanning dependencies of target test-ocv_bounding_box
[ 51%] Building CXX object arrows/ocv/tests/CMakeFiles/test-ocv_bounding_box.dir/test_bounding_box.cxx.o
[ 51%] Linking CXX executable ../../../tests/bin/test-ocv_bounding_box
[ 51%] Built target test-ocv_bounding_box
[ 51%] Built target kwiver_algo_proj
[ 52%] Built target kwiver_algo_proj_plugin
[ 54%] Built target kwiver_algo_vxl
[ 54%] Built target kwiver_algo_vxl_plugin
[ 54%] Linking CXX executable ../../../tests/bin/test-vxl_triangulate_landmarks
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<int>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<unsigned char>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<short>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<long>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<bool>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<unsigned long>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<double>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<unsigned int>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<signed char>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<unsigned short>::is_a[abi:cxx11]() const'
../../../lib/libkwiver_algo_vxl.so.1.2.0: undefined reference to `vil_image_view<float>::is_a[abi:cxx11]() const'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
arrows/vxl/tests/CMakeFiles/test-vxl_triangulate_landmarks.dir/build.make:119: recipe for target 'tests/bin/test-vxl_triangulate_landmarks' failed
make[2]: *** [tests/bin/test-vxl_triangulate_landmarks] Error 1
CMakeFiles/Makefile2:4375: recipe for target 'arrows/vxl/tests/CMakeFiles/test-vxl_triangulate_landmarks.dir/all' failed
make[1]: *** [arrows/vxl/tests/CMakeFiles/test-vxl_triangulate_landmarks.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

The issue seems to be with vil_image_view<*>::is_a[abi:cxx11]() const.
I made sure that cmake is correctly linking the target with the vil (which it seems to be). I then went and checked that libvil.so had the correct symbols.

In gcc-fletch the symbols for were:

(venv3) joncrall@calculex:~/code/fletch/build-py2/install/lib$ nm -gC libvil.so | grep "vil_image.*::is_a"
00000000001867e0 W vil_image_view<vil_rgb<signed char> >::is_a() const
000000000017a8a0 W vil_image_view<vil_rgb<bool> >::is_a() const
000000000017dea0 W vil_image_view<vil_rgb<double> >::is_a() const
000000000017fa50 W vil_image_view<vil_rgb<float> >::is_a() const
000000000017c380 W vil_image_view<vil_rgb<unsigned char> >::is_a() const
00000000001830e0 W vil_image_view<vil_rgb<int> >::is_a() const
0000000000189d80 W vil_image_view<vil_rgb<unsigned int> >::is_a() const
0000000000184c40 W vil_image_view<vil_rgb<long> >::is_a() const
000000000018b8e0 W vil_image_view<vil_rgb<unsigned long> >::is_a() const
00000000001815b0 W vil_image_view<vil_rgb<short> >::is_a() const
0000000000188250 W vil_image_view<vil_rgb<unsigned short> >::is_a() const
00000000001990c0 W vil_image_view<vil_rgba<signed char> >::is_a() const
000000000018d510 W vil_image_view<vil_rgba<bool> >::is_a() const
0000000000190970 W vil_image_view<vil_rgba<double> >::is_a() const
0000000000192510 W vil_image_view<vil_rgba<float> >::is_a() const
000000000018ef80 W vil_image_view<vil_rgba<unsigned char> >::is_a() const
0000000000195a70 W vil_image_view<vil_rgba<int> >::is_a() const
000000000019c5a0 W vil_image_view<vil_rgba<unsigned int> >::is_a() const
0000000000197540 W vil_image_view<vil_rgba<long> >::is_a() const
000000000019e070 W vil_image_view<vil_rgba<unsigned long> >::is_a() const
0000000000193fe0 W vil_image_view<vil_rgba<short> >::is_a() const
000000000019aac0 W vil_image_view<vil_rgba<unsigned short> >::is_a() const
000000000016fb60 W vil_image_view<signed char>::is_a() const
0000000000162640 W vil_image_view<bool>::is_a() const
0000000000165bf0 W vil_image_view<double>::is_a() const
0000000000167b00 W vil_image_view<float>::is_a() const
0000000000092990 W vil_image_view<unsigned char>::is_a() const
000000000016bd90 W vil_image_view<int>::is_a() const
0000000000092e40 W vil_image_view<unsigned int>::is_a() const
000000000016dba0 W vil_image_view<long>::is_a() const
00000000001752b0 W vil_image_view<unsigned long>::is_a() const
0000000000169b30 W vil_image_view<short>::is_a() const
0000000000177280 W vil_image_view<std::complex<double> >::is_a() const
0000000000178d40 W vil_image_view<std::complex<float> >::is_a() const
0000000000092d30 W vil_image_view<unsigned short>::is_a() const
000000000015dd50 W vil_image_resource_plugin::is_a[abi:cxx11]() const

and in the clang-fletch version they were:

(venv3) joncrall@calculex:~/code/fletch/build-clang/install/lib$ nm -gC libvil.so | grep "vil_image.*::is_a"
000000000016dd40 W vil_image_view<vil_rgb<signed char> >::is_a[abi:cxx11]() const
00000000001626d0 W vil_image_view<vil_rgb<bool> >::is_a[abi:cxx11]() const
0000000000165c40 W vil_image_view<vil_rgb<double> >::is_a[abi:cxx11]() const
0000000000167590 W vil_image_view<vil_rgb<float> >::is_a[abi:cxx11]() const
0000000000164090 W vil_image_view<vil_rgb<unsigned char> >::is_a[abi:cxx11]() const
000000000016a8d0 W vil_image_view<vil_rgb<int> >::is_a[abi:cxx11]() const
0000000000171030 W vil_image_view<vil_rgb<unsigned int> >::is_a[abi:cxx11]() const
000000000016c370 W vil_image_view<vil_rgb<long> >::is_a[abi:cxx11]() const
0000000000172aa0 W vil_image_view<vil_rgb<unsigned long> >::is_a[abi:cxx11]() const
0000000000168f50 W vil_image_view<vil_rgb<short> >::is_a[abi:cxx11]() const
000000000016f6e0 W vil_image_view<vil_rgb<unsigned short> >::is_a[abi:cxx11]() const
00000000001807a0 W vil_image_view<vil_rgba<signed char> >::is_a[abi:cxx11]() const
00000000001746d0 W vil_image_view<vil_rgba<bool> >::is_a[abi:cxx11]() const
0000000000177f10 W vil_image_view<vil_rgba<double> >::is_a[abi:cxx11]() const
0000000000179920 W vil_image_view<vil_rgba<float> >::is_a[abi:cxx11]() const
0000000000176300 W vil_image_view<vil_rgba<unsigned char> >::is_a[abi:cxx11]() const
000000000017cf70 W vil_image_view<vil_rgba<int> >::is_a[abi:cxx11]() const
0000000000184000 W vil_image_view<vil_rgba<unsigned int> >::is_a[abi:cxx11]() const
000000000017eb70 W vil_image_view<vil_rgba<long> >::is_a[abi:cxx11]() const
0000000000185c30 W vil_image_view<vil_rgba<unsigned long> >::is_a[abi:cxx11]() const
000000000017b560 W vil_image_view<vil_rgba<short> >::is_a[abi:cxx11]() const
0000000000182430 W vil_image_view<vil_rgba<unsigned short> >::is_a[abi:cxx11]() const
00000000001585e0 W vil_image_view<signed char>::is_a[abi:cxx11]() const
000000000014c4a0 W vil_image_view<bool>::is_a[abi:cxx11]() const
000000000014f690 W vil_image_view<double>::is_a[abi:cxx11]() const
0000000000151510 W vil_image_view<float>::is_a[abi:cxx11]() const
0000000000091740 W vil_image_view<unsigned char>::is_a[abi:cxx11]() const
0000000000155080 W vil_image_view<int>::is_a[abi:cxx11]() const
0000000000091cf0 W vil_image_view<unsigned int>::is_a[abi:cxx11]() const
0000000000156e50 W vil_image_view<long>::is_a[abi:cxx11]() const
000000000015d940 W vil_image_view<unsigned long>::is_a[abi:cxx11]() const
0000000000153400 W vil_image_view<short>::is_a[abi:cxx11]() const
000000000015f300 W vil_image_view<std::complex<double> >::is_a[abi:cxx11]() const
0000000000160d50 W vil_image_view<std::complex<float> >::is_a[abi:cxx11]() const
0000000000091a10 W vil_image_view<unsigned short>::is_a[abi:cxx11]() const
0000000000145fb0 W vil_image_resource_plugin::is_a[abi:cxx11]() const

Notice that the clang version has the [abi:cxx11] tag on all the vil_image_view templates, where as gcc does not. However, gcc does have [abi:cxx11] on vil_image_resource_plugin::is_a. This is the extent of the debugging I've been able to do, and I don't know where to go from here.

It bothers me that the travis dashboards don't fail because even though the master passes normally, I saw them fail in this way in PR #308. I'm not sure what triggered it to fail in that instance. I am building against master on my machine.

Other relevant specs: I'm on Ubuntu 16.04, using gcc5.4.0 and clang4.0.

I have done preliminary tests using clang3.8 on seen the same behavior. (I probably should test the versions being used on the travis dashboard, which I believe are gcc-4.8 and clang 3.4, but the fact that I saw these errors on the travis dashboard means its probably something else causing them to pass on travis but fail on my machine)

Make advanced compiler options "advanced"

Make the following compiler option flags advanced. They are hard to describe and are rarely used.

KWIVER_CPP_ASAN OFF
KWIVER_CPP_COVERAGE OFF
KWIVER_CPP_EXTRA OFF
KWIVER_CPP_NITPICK OFF
KWIVER_CPP_PEDANTIC OFF
KWIVER_CPP_WERROR OFF

Current set of problems with Python tests

Python tests are uncovering a set of issues.

Test:
/usr/bin/python "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-process_registry" "register_cluster" "." "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages"

Error: Could not create newly registered process cluster type: No registered converter was able to produce a C++ rvalue of type std::shared_ptrsprokit::process from this Python object of type PythonBaseClusterExample

Problem:
It is not clear how to add this converter.

This error appears in several tests.


Test:
/usr/bin/python "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-process_cluster" "api_calls" "." "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages"

217: Error: Unexpected exception: Python argument types in
217: sprokit.pipeline.process_cluster.cluster_from_process(BaseProcess)
217: did not match C++ signature:
217: cluster_from_process(std::shared_ptrsprokit::process process):
217: File "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages/sprokit/test/test.py", line 92, in run_test
217: tests[testname](*args, **kwargs)
217: File "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-process_cluster", line 69, in test_api_calls
217: if process_cluster.cluster_from_process(p) is not None:

Problem:
converting from python.BaseProcess -> sprokit::process_t (which is std::shared_ptr)
does not appear to be working.

This error happens in several tests.


Test:
/usr/bin/python "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-process_registry" "register" "." "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages"

221: 2017-07-07 09:40:02.350 DEBUG plugin_manager.cxx(184): Adding path(s) "/disk2/projects/KWIVER/kwgitlab/build/lib/modules:/disk2/projects/KWIVER/kwgitlab/build/lib/modules:/disk2/proje
cts/KWIVER/kwgitlab/build/lib/modules:/disk2/projects/KWIVER/kwgitlab/build/lib/modules:/disk2/projects/KWIVER/kwgitlab/build/lib/modules:" from environment
221: 2017-07-07 09:40:02.350 TRACE plugin_loader.cxx(202): Adding plugin to create interface: "sprokit::process" from derived type: "python_example" from file:
221: Error: Could not create newly registered process type
221/579 Test #221: test-python-process_registry-register ..............................***Failed Error regular expression found in output. Regex=[

Problem:
This test fails without throwing any exceptions. It looks like the test gets lost in the
Python object factory. A similar problem is in the scheduler factory test.
It appears to be a problem with python instantiating a python process. Python code can
instantiate a process written in c++.


Test:
/usr/bin/python "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-scheduler_registry" "wrapper_api" "." "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages"

229: Error: Unexpected exception: No registered converter was able to produce a C++ rvalue of type std::shared_ptrsprokit::scheduler from this Python object of type PythonExample:
229: File "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages/sprokit/test/test.py", line 92, in run_test
229: tests[testname](*args, **kwargs)
229: File "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-scheduler_registry", line 178, in test_wrapper_api
229: s = scheduler_factory.create_scheduler(sched_type, p)

Problem:
Similar to process based tests in that there is no registered
converter to produce std::shared_ptrsprokit::scheduler from a python
scheduler object.


Test:
/usr/bin/python "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-run" "python_to_python-pythread_per_process" "." "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages"

238: Error: Unexpected exception: Python argument types in
238: Pipeline.add_process(Pipeline, Source)
238: did not match C++ signature:
238: add_process(sprokit::pipeline {lvalue}, std::shared_ptrsprokit::process process):
238: File "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages/sprokit/test/test.py", line 92, in run_test
238: tests[testname](*args, **kwargs)
238: File "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-run", line 189, in test_python_to_python
238: p.add_process(s)

Problem:
Unknown

This error appears in several tests


Test:
Test command: /usr/bin/python "/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-python-pymodules" "pythonpath" "." "/disk2/projects/KWIVER/kwgitlab/build/lib/python2.7/dist-packages"

264: Error: Failed to load extra Python processes accessible from PYTHONPATH
264: Error: Failed to load extra Python schedulers accessible from PYTHONPATH

Problem:
The python module loader must not be lookint at that path


Test:
/disk2/projects/KWIVER/kwgitlab/build/sprokit/tests/bin/test-process_registry "load_processes"

361: 2017-07-07 10:18:50.156 DEBUG plugin_loader.cxx(398): Loading plugins from: /disk2/projects/KWIVER/kwgitlab/build/lib/modules/kwiver_algo_proj_plugin.so
361: 2017-07-07 10:18:50.156 DEBUG plugin_loader.cxx(398): Loading plugins from: /disk2/projects/KWIVER/kwgitlab/build/lib/modules/kwiver_algo_uuid_plugin.so
361: 2017-07-07 10:18:50.156 DEBUG plugin_loader.cxx(398): Loading plugins from: /disk2/projects/KWIVER/kwgitlab/build/lib/modules/instrumentation_plugin.so
361: 2017-07-07 10:18:50.156 DEBUG plugin_loader.cxx(398): Loading plugins from: /disk2/projects/KWIVER/kwgitlab/build/lib/modules/kwiver_algo_vxl_plugin.so
361: 2017-07-07 10:18:50.156 DEBUG plugin_loader.cxx(341): Path /usr/local/lib/modules doesn't exist. Ignoring.
361: terminate called after throwing an instance of 'boost::python::error_already_set'
361/579 Test #361: test-process_registry-load_processes ...............................***Exception: Other 0.27 sec

Problem:
Not sure where "boost::python::error_already_set" is coming from
This is the saem error as the "no converter" error
This error appears in multiple tests.

KWIVER selects system packages over Fletch

KWIVER has a fletch_DIR option, but doesn’t seem to use it correctly. I set this to my fletch build (on OS X), but I still have manually change the paths of the many dependences to point to my fletch build. It finds system packages first. I think if fletch_DIR is set and fletch provides a package, KWIVER should use the fletch-built version over a system package.

Logger plugins have inconsistent linkage on Windows

The vital logger plugins do not properly build on Windows because of inconsistent DLL linkage. It appears each plugin builds a copy of some of the same source files. This is problematic because they include vital_logger_export.h and use the VITAL_LOGGER_EXPORT macro each time instead of a different include/macro for each plugin.

Add KWIVER_PYTHON_MAJOR_VERSION to the kwiver-config.cmake

It is defaulted to 2, my custom application is setup for 3
(I set fletch to 3, and kwiver to 3)

But when my application does the find_package(kwiver)

I get this error:

-- KWIVER_PYTHON_MAJOR_VERSION = 2
5> -- PYTHON_VERSION = 3.6
5> CMake Error at C:/Programming/builds/project_d/external/kwiver/CMake/kwiver-setup-python.cmake:169 (message):
5> Requested python "2" but got "3.6"
5> Call Stack (most recent call first):
5> C:/Programming/builds/project_d/external/kwiver/CMake/kwiver-utils.cmake:10 (include)
5> CMakeLists.txt:67 (include)

To fix this, I provide this variable to my ExternalProject_Add

CMAKE_CACHE_ARGS
-Dkwiver_DIR:PATH=${kwiver_DIR}
-DKWIVER_PYTHON_MAJOR_VERSION:STRING=3

this should really be added to kwiver-config with what version kwiver was built with

Port unit tests to Google Test

This is a tracking issue / RFC for an ongoing effort to port kwiver's unit tests to the Google Test framework.

History

This effort started as an outgrowth of #226. (A good chunk of the commentary to follow is duplicated from that PR.) In short, while writing the geo_polygon test, I became frustrated with the lack of expressiveness of the existing test framework (which is inherited from sprokit) and the difficulty and awkwardness expressing the assertions I wanted to test. In particular, I was troubled by the amount of boilerplate needed for simple assertions, and the lack of fatal assertions. Having used Google Test previously, I knew there was a better way.

Why is Google Test better?

A more detailed list can be found in the early comments of #226. To summarize, Google Test provides:

  • A richer set of assertions, covering most comparison operators, with the ability to define custom assertions.
  • Improved default formatting of assertions, making it unnecessary to provide custom text for most assertions. Compared to the existing framework, which produces very minimal default output and requires custom text, most assertions with Google Test do not require text beyond the parameters to the assertion.
  • Type- and Value-parameterized tests, which allow test cases that need to operate on multiple types or values to be written with less code duplication and/or fewer helper functions, while providing more fine-grained test cases which push contextual information up into the test case name.
  • Fatal assertions, which provide a way to skip subsequent assertions that are not sensible to execute if an earlier assertion fails. (For example, asserting that a pointer is non-null before asserting properties of the pointed-to object.)
  • Improved contextual information reporting via the SCOPED_TRACE macro, which allows additional contextual information to be added to a C++ scope, to be reported in case of an assertion failure. This is useful for assertions that occur within loops to simplify reporting of the precise location of a failure.
  • Error code integration, ensuring that failing tests produce a non-zero exit code, removing the need to rely on output parsing to determine if a test passed.

Does this matter to us?

Yes! Rather than try to explain why these points are applicable, instead consider some selected diffs from tests that have been ported:

-#define TEST_ARGS ()
-
-DECLARE_TEST_MAP();
-
 int main(int argc, char** argv)
 {
-  CHECK_ARGS(1);
-
-  testname_t const testname = argv[1];
-
-  RUN_TEST(testname);
+  ::testing::InitGoogleTest( &argc, argv );
+  return RUN_ALL_TESTS();
 }
-  if ( bbox.min_x() != vbox.x ||
-       bbox.min_y() != vbox.y ||
-       bbox.height() != vbox.height ||
-       bbox.width() != vbox.width )
-  {
-    TEST_ERROR( "Assignment ocv = bbox failed" );
-  }
+  EXPECT_EQ( bbox.min_x(), vbox.x );
+  EXPECT_EQ( bbox.min_y(), vbox.y );
+  EXPECT_EQ( bbox.width(), vbox.width );
+  EXPECT_EQ( bbox.height(), vbox.height );
-  algo::estimate_fundamental_matrix_sptr est_e = algo::estimate_fundamental_matrix::create("ocv");
-  if (!est_e)
-  {
-    TEST_ERROR("Unable to create ocv::estimate_fundamental_matrix by name");
-  }
+  EXPECT_NE( nullptr, algo::estimate_fundamental_matrix::create("ocv") );
-    if ( ( x_sheet[i].x() != v_vert[i](0) ) || ( x_sheet[i].y() != v_vert[i](1) )  )
-    {
-      std::stringstream str;
-      str << "Vertex " << i << " test failed. Values are not equal.";
-      TEST_ERROR( str.str() );
-    }
+    EXPECT_EQ( v_vert[i](0), x_sheet[i].x() ) << "Vertex at index " << i;
+    EXPECT_EQ( v_vert[i](1), x_sheet[i].y() ) << "Vertex at index " << i;
-  if( !img2 )
-  {
-    TEST_ERROR("VXL image re-conversion of type "+type_str+" did not produce a valid vil_image_view");
-    return;
-  }
+  ASSERT_TRUE( !!img2 )
+    << "vil_image_view re-conversion did not produce a valid vil_image_view";
 vital/tests/CMakeLists.txt      |   2 +-
 vital/tests/test_homography.cxx | 182 +++++++-------------
 2 files changed, 60 insertions(+), 124 deletions(-)

In short, Google Test simplifies the process of writing high quality assertions. Using Google Test, unit tests can be written faster and with less effort, less code duplication, and less code overall, while producing higher quality, more fine-grained assertions in more fine-grained test cases.

What are the results of the porting effort?

As of writing, "all" tests have been ported, with a few noteworthy exceptions:

  • sprokit: sprokit seems sufficiently isolated (and has history, and has one instance of using more exotic features from its testing framework) that it is probably okay to let it continue to use its own framework.

  • arrows/matlab: Someone that has matlab (I don't) and is able to build this test should port this so that it can be verified still-working.

  • vital/algo: This test is currently excluded from the build.

  • vital/klv: This test is currently just a skeleton with a comment that it is "coming soon".

During the porting effort, many tests have been improved, both in terms of general code quality, and quality and granularity of assertions. It is believed that no assertions have been made materially worse during the porting effort, while some have been significantly improved. (See in particular the above example where several assertions that previously were combined in a single error report have been made into separate assertions.) Some tests, which share significant code (in particular, between some combination of Ceres, OpenCV and VXL) have been refactored so that the common code is shared. In several cases, this has resulted in one test suite gaining additional tests to match those already present in a similar suite. A number of tests have also been refactored into type- or value-parameterized test cases, increasing the granularity of individual tests and moving contextual information up to the test case level.

How are tests registered?

This port uses the new Google Test Discovery from CMake 3.10, with a fall-back implementation for use with older versions of CMake. This method of test discovery, which finds tests by actually running the test (with --gtest_list_tests) rather than parsing the source file is more robust, and can handle cases that source parsing cannot, such as these examples:

#ifdef _WIN32
TEST(blah, windows_only)
{ ... }
#endif

/* don't build these
TEST(blah, broken)
{ ... }
*/

At the CMake level, registering tests is nearly unchanged, as can be seen from this diff:

-kwiver_discover_tests(vital_homography test_libraries test_homography.cxx)
+kwiver_discover_gtests(vital homography LIBRARIES ${test_libraries})

A new helper macro, differing in name by only one character, has been added. The arguments are very similar, consisting of a test category (which is used as a prefix), test name (which by default should match the name of the test source file), and the libraries to be linked are specified in a more "usual" manner.

Build error if TESTS && SPROKIT && !PROCESSES

If the following CMake options are as noted:

KWIVER_ENABLE_PROCESSES          OFF
KWIVER_ENABLE_SPROKIT            ON
KWIVER_ENABLE_TESTS              ON

...KWIVER fails to build:

In file included from .../sprokit/tests/sprokit/pipeline/test_non_blocking.cxx:38:
.../sprokit/processes/adapters/output_adapter.h:39:10: fatal error: 'sprokit/processes/adapters/kwiver_adapter_export.h' file not found
#include <sprokit/processes/adapters/kwiver_adapter_export.h>

This is because certain tests depend on the kwiver_adapter library (which is only built if KWIVER_ENABLE_PROCESSES is ON), but the tests are not conditional on KWIVER_ENABLE_PROCESSES.

NotImplementedError in classmethod from_pil in Image

File /viame/build/install/lib/python2.7/dist-packages/vital/types/image.py", line 130, in from_pil
img_data = pil_image.tostring()
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 697, in tostring
"Please call tobytes() instead.")
NotImplementedError: tostring() has been removed. Please call tobytes() instead.

tostring() has been removed in favor of tobytes from pillow since version 3.0

Segfault on calling help on python bindings

The following script segfaults

(Remembering to switch virtual environments to python 2 and then run source ~/code/kwiver/build/setup_KWIVER.sh)

from sprokit.pipeline import process
help(process)

I know a pybind11 move is in the works. Maybe that will fix this issue?

Error loading ctypes: undefined symbol: PyFloat_Type

There seems to be an issue with how the python shared library is loaded either by the vital plugin manager or the plugins themselves.

Note I am using a python2.7 virtual environment, but my default system python is also the same 2.7.

Main Symptoms

This issue seems to not occur in binaries that link against libpython. e.g. processopedia. Running this with debug statements shows python plugins being loaded correctly:

(venv2) joncrall@calculex:~/code/kwiver/build-py2$ processopedia 
WARN [2017-11-15 15:50:22 sprokit.register_cluster /home/joncrall/code/kwiver/sprokit/src/processes/clusters/registration.cxx:96] Path not found loading clusters: /usr/local/share/sprokit/pipelines/clusters
2017-11-15 10:50:22.131 INFO sprokit.modules.modules(68): Loading python modules
2017-11-15 10:50:22.131 DEBUG sprokit.modules.modules(81): Preparing to load sprokit python plugin modules: [
    'sprokit.processes',
    'sprokit.schedulers',
    'kwiver.processes'
]
SMQTK not configured into this Python instance.  Entering ApplyDescriptor test mode
2017-11-15 10:50:22.312 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'sprokit.processes.test' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/processes/test/__init__.pyc'>"
2017-11-15 10:50:22.312 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'sprokit.schedulers.pythread_per_process_scheduler' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/schedulers/pythread_per_process_scheduler.pyc'>"
2017-11-15 10:50:22.312 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'kwiver.processes.ProcessImage' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/processes/ProcessImage.pyc'>"
2017-11-15 10:50:22.313 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'kwiver.processes.ApplyDescriptor' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/processes/ApplyDescriptor.pyc'>"
template: Description of process. Make as long as necessary to fully explain what the process does and how to use it. Explain specific algorithms used, etc.
input_adapter: Source process for pipeline. Pushes data items into pipeline ports. Ports are dynamically created as needed based on connections specified in the pipeline file.
output_adapter: Sink process for pipeline. Accepts data items from pipeline ports. Ports are dynamically created as needed based on connections specified in the pipeline file.
test_python_process: A test Python process
pyprint_number: A Python process which prints numbers
ProcessImage: Process image test
ApplyDescriptor: Apply descriptor to image
...

However, if plugins are loaded by an executable (e.g. test-core-video_input_split) that does not link against libpython directly, the error occurs:

(venv2) joncrall@calculex:~/code/kwiver/build-py2$ ./tests/bin/test-core-video_input_split 
WARN [2017-11-15 15:52:41 sprokit.register_cluster /home/joncrall/code/kwiver/sprokit/src/processes/clusters/registration.cxx:96] Path not found loading clusters: /usr/local/share/sprokit/pipelines/clusters
2017-11-15 10:52:41.402 INFO sprokit.modules.modules(68): Loading python modules
2017-11-15 10:52:41.402 DEBUG sprokit.modules.modules(81): Preparing to load sprokit python plugin modules: [
    'sprokit.processes',
    'sprokit.schedulers',
    'kwiver.processes'
]
2017-11-15 10:52:41.419 WARNING sprokit.modules.loaders(155): Could not import: kwiver.processes.ProcessImage, Reason: /home/joncrall/venv2/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so: undefined symbol: PyFloat_Type
2017-11-15 10:52:41.419 DEBUG sprokit.modules.loaders(159): Traceback (most recent call last):
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/modules/loaders.py", line 153, in _findPluginModules
    module = import_module(module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/processes/ProcessImage.py", line 32, in <module>
    from kwiver.kwiver_process import KwiverProcess
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/kwiver_process.py", line 42, in <module>
    import util.vital_type_converters as VTC
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/util/vital_type_converters.py", line 41, in <module>
    import ctypes
  File "/usr/lib/python2.7/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: /home/joncrall/venv2/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

2017-11-15 10:52:41.420 WARNING sprokit.modules.loaders(155): Could not import: kwiver.processes.ApplyDescriptor, Reason: /home/joncrall/venv2/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so: undefined symbol: PyFloat_Type
2017-11-15 10:52:41.420 DEBUG sprokit.modules.loaders(159): Traceback (most recent call last):
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/modules/loaders.py", line 153, in _findPluginModules
    module = import_module(module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/processes/ApplyDescriptor.py", line 31, in <module>
    from kwiver.kwiver_process import KwiverProcess
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/kwiver_process.py", line 42, in <module>
    import util.vital_type_converters as VTC
  File "/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/util/vital_type_converters.py", line 41, in <module>
    import ctypes
  File "/usr/lib/python2.7/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: /home/joncrall/venv2/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

2017-11-15 10:52:41.421 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'sprokit.processes.test' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/processes/test/__init__.pyc'>"
2017-11-15 10:52:41.421 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'sprokit.schedulers.pythread_per_process_scheduler' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/schedulers/pythread_per_process_scheduler.pyc'>"

...

The main error is the line:

ImportError: /home/joncrall/venv2/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

The ctypes module is part of the lib-dynload subfolder which contains python compiled modules that do not directly link to libpython.so. These modules rely on the symbols already existing (source).

Experiment 1

Note in kwiver/sprokit/src/bindings/python/modules/registration.cxx adding the following line:

pybind11::object const ctypes = pybind11::module::import("ctypes");

will also result in the error, this causes the error to appear sooner:

(venv2) joncrall@calculex:~/code/kwiver/build-py2$ ./tests/bin/test-core-video_input_split 
WARN [2017-11-15 16:02:01 sprokit.register_cluster /home/joncrall/code/kwiver/sprokit/src/processes/clusters/registration.cxx:96] Path not found loading clusters: /usr/local/share/sprokit/pipelines/clusters
WARN [2017-11-15 16:02:01 python_exceptions /home/joncrall/code/kwiver/sprokit/src/bindings/python/modules/registration.cxx:104] Ignore Python Exception:
ImportError: /home/joncrall/venv2/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

At:
  /usr/lib/python2.7/ctypes/__init__.py(7): <module>

Note that processopedia still works just fine. My guess is because it links to libpython directly.

(venv2) joncrall@calculex:~/code/kwiver/build-py2$ ldd bin/processopedia | grep python
	libsprokit_python_util.so.0 => /home/joncrall/code/kwiver/build-py2/lib/libsprokit_python_util.so.0 (0x00007f29eeb00000)
	libpython2.7.so.1.0 => /home/joncrall/venv2/lib/libpython2.7.so.1.0 (0x00007f29ee572000)

Running ldd on test-core-video_input_split (correctly) does not contain libpython or any other lib that links to libpython.

Experiment 2

To test this idea, I force test-core-video_input_split to link to libpython as well.

First I remove the old binary rm tests/bin/test-core-video_input_split (this seems to be important to force the exe to rebuild). Then I add these lines to ~/code/kwiver/arrows/core/tests/CMakeLists.txt to force the python libraries to be linked.

set_target_properties(test-core-video_input_split PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")
target_link_libraries(test-core-video_input_split PUBLIC ${PYTHON_LIBRARIES})

This results in libpython being pressent in ldd tests/bin/test-core-video_input_split, and the test runs as exepcted:

(venv2) joncrall@calculex:~/code/kwiver/build-py2$ ./tests/bin/test-core-video_input_split
WARN [2017-11-15 16:09:03 sprokit.register_cluster /home/joncrall/code/kwiver/sprokit/src/processes/clusters/registration.cxx:96] Path not found loading clusters: /usr/local/share/sprokit/pipelines/clusters
2017-11-15 11:09:03.649 INFO sprokit.modules.modules(68): Loading python modules
2017-11-15 11:09:03.649 DEBUG sprokit.modules.modules(81): Preparing to load sprokit python plugin modules: [
    'sprokit.processes',
    'sprokit.schedulers',
    'kwiver.processes'
]
SMQTK not configured into this Python instance.  Entering ApplyDescriptor test mode
2017-11-15 11:09:03.797 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'sprokit.processes.test' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/processes/test/__init__.pyc'>"
2017-11-15 11:09:03.797 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'sprokit.schedulers.pythread_per_process_scheduler' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/sprokit/schedulers/pythread_per_process_scheduler.pyc'>"
2017-11-15 11:09:03.797 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'kwiver.processes.ProcessImage' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/processes/ProcessImage.pyc'>"
2017-11-15 11:09:03.797 DEBUG sprokit.modules.modules(43): Loading python module: "<module 'kwiver.processes.ApplyDescriptor' from '/home/joncrall/code/kwiver/build-py2/lib/python2.7/dist-packages/kwiver/processes/ApplyDescriptor.pyc'>"
...

Removing the those lines from the CMakeLists and rebuilding causes the issue to appear again.

CMake options are messy

There are lots of options that show up right away before you enable anything. For example, KWIVER_ENABLE_CERES shows up even if KWIVER_ENABLE_ARROWS is not set. I think we want to make those options dependent on whether arrows was enabled.

Also, maybe we should automatically enable any arrows that have dependencies provided by fletch? That is, default those to ON while still allowing them to be turned OFF. If it’s not provided by the fletch_DIR (or no fletch_DIR is provided) then they would default to OFF. I think there is a good chance that if I build something in fletch I want to use it in KWIVER, and this would simplify the configuration step for users.

Kwiver exported targets don't use target usage requirements

If I want to use Kiwver in my own project, I have to do this:

include_directories(${KWIVER_INCLUDE_DIRS})

This is sub-optimal since CMake 2.8.10. Kwiver's exported targets should have INTERFACE_INCLUDE_DIRECTORIES set so that all I have to do is link to the library.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.