Skip to content

Commit

Permalink
Updated changelog and documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Callidior committed Mar 12, 2016
1 parent 3533252 commit 7d13a8f
Show file tree
Hide file tree
Showing 583 changed files with 6,064 additions and 2,467 deletions.
93 changes: 76 additions & 17 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,98 @@
ARTOS Changelog
===============

Version 2.0-rc1 (2016-03-12)
----------------------------

- **[Feature]** Model Evaluation API for libartos and PyARTOS, including GUI support for evaluating models and plotting recall-precision graphs.
- **[Feature]** ARTOS now ships with `CaffeFeatureExtractor` which uses the *Caffe* library to extract image features from the layer of a CNN
and can be used as a drop-in replacement for the default HOG features.
- **[Improvement]** Completely refactored feature extraction: Any existing dependencies on HOG specifics have been removed from ARTOS and FFLD,
which are not strictly separated any more. A new feature extraction framework provides an abstraction layer which should make it easy
to implement arbitrary feature extractors. The type and parameters of the feature extractor used to learn a model will be saved with the model.
That means, the file format of model files has changed, as well as the format of background statistics, but ARTOS can still read the old format.
The GUI has been extended so that the feature extractor and its parameters can be changed at run-time in a convenient way.
- **[Improvement]** GUI controls for manipulating multiple models at once.
- **[Improvement]** GUI support for alternative image repository drivers.
- **[Improvement]** Implemented C++11 move semantics to reduce unnecessary temporary copies.
- **[Improvement]** Allow separate overlap parameters for non-maxima suppression and evaluation in `ModelEvaluator`.
- **[Improvement]** Model learner now returns informative error codes.
- **[Improvement]** Added some tools and examples which show how to use ARTOS from C/C++ if you wish to avoid the Python interface to libartos.
- **[Improvement]** Image features are now stored and processed using an optimized data container: `FeatureMatrix`.
- **[Change]** `MixedImageIterator` now stops after extracting all images. Before, it behaved like an infinite iterator: If it reached the end of a synset,
it would start over from the beginning. Now it will extract every image only once from each synset and `MixedImageIterator::ready()` will return false
when all images from all synsets have been extracted.
- **[Change]** Prefixed ARTOS-related CMake options with `ARTOS_`.
- **[Misc]** Added a boolean member variable `StationaryBackground::learnedAllOffsets` which indicates if the size of the images used for learning a
background covariance matrix was sufficient to learn covariances for all offsets.
- **[Fix]** Fixed division by zero when using many features.
- **[Fix]** Fixed a rare bug in the computation of background statistics: If the product of the maximum offset and the cell size of the feature
extractor exceeded the size of the images, the format of the computed statistics would have been invalid.

### Incompatible changes ###

#### General ####
- The format of model files and background statistics files created by ARTOS v2 differs from the file format used by previous versions.

#### C API ####
- Removed `padding` paremeter from `create_detector`. The necessary amount of padding is now determined by the feature extractor automatically.

#### C++ API ####
- Moved `FFLD::Intersector`, `FFLD::JPEGImage`, `FFLD::Mixture`, `FFLD::Model`, `FFLD::Object`, `FFLD::Patchwork`, `FFLD::Rectangle` and
`FFLD::Scene` to the `ARTOS` namespace.
- The interfaces of `FeatureExtractor`, `HOGFeatureExtractor` and `FeaturePyramid` have changed completely.
- Removed `padding` paremeter from `DPMDetection` constructor. The necessary amount of padding is now determined by the feature extractor automatically.
- Replaced `int Detection::l` (level) by `double Detection::scale`.
- Added `featureExtractor` parameter to constructor of `ModelLearnerBase`, `ModelLearner` and `ImageNetModelLearner`.
- Changed return type of `ModelLearnerBase::learn` and `ModelLearner::learn` from `bool` to `int`, while `0` indicates success.
- Changed parameters of `ModelEvaluator` constructors.
- Removed `StationaryBackground::StationaryBackground(unsigned int, unsigned int, unsigned int)`.

### C API extensions ###

- New `evaluator_*` functions for model evaluation.
- New functions for enumerating and changing feature extractors.
- New function: `num_feature_extractors_in_detector`
- New function: `get_image_repository_type`
- New function: `check_repository_directory`
- Additional return values for `add_model`.
- Additional return values for `learn_imagenet`, `learn_files_jpeg` and `learner_run`.
- Additional return values for `learn_bg`.


Version 1.3 (2015-11-05)
------------------------

- [Improvement] If there are more training images than RAM available, caching of the entire images containing positive samples may now be turned off
- **[Improvement]** If there are more training images than RAM available, caching of the entire images containing positive samples may now be turned off
by setting the CMake option `CACHE_POSITIVES` to `OFF`.
- [Fix] Compatibility of PyARTOS with Pillow >= 2.0
- [Fix] Fixed a minor bug with clustering
- **[Fix]** Compatibility of PyARTOS with Pillow >= 2.0
- **[Fix]** Fixed a minor bug with clustering


Version 1.2 (2015-11-02)
------------------------

- [Improvement] Instead of the tar archives used by ImageNet, one may now store images and annotation files in plain directories by using the
- **[Improvement]** Instead of the tar archives used by ImageNet, one may now store images and annotation files in plain directories by using the
new ImageDirectories interface as a drop-in replacement for ImageNet (see README.md for details).
- [Change] Added an abstraction layer to the model learning process: The new abstract base class ModelLearnerBase is agnostic of the concrete
- **[Change]** Added an abstraction layer to the model learning process: The new abstract base class ModelLearnerBase is agnostic of the concrete
learning method, which may be the WHO method implemented by ModelLearner as well as any other linear classifier.
- [Misc] Added DPMDetection::detectMax(), which yields just the highest scoring detection on a given image (may be useful for classification-like tasks).
- [Misc] Support for legacy way of importing PIL.
- [Fix] Fixed a bug which broke AnnotationDialog if used with large images.
- [Fix] Fixed some memory leaks in the FFLD library shipped with ARTOS.
- [Fix] Minor fixes to the build process.
- **[Misc]** Added DPMDetection::detectMax(), which yields just the highest scoring detection on a given image (may be useful for classification-like tasks).
- **[Misc]** Support for legacy way of importing PIL.
- **[Fix]** Fixed a bug which broke AnnotationDialog if used with large images.
- **[Fix]** Fixed some memory leaks in the FFLD library shipped with ARTOS.
- **[Fix]** Minor fixes to the build process.


Version 1.1 (2014-10-31)
------------------------

- [Improvement] Efficient method for computing background statistics, which leverages the Fourier transform
- [Improvement] New background statistics (computed from 32k ImageNet samples)
- [Misc] Improved error message for incomplete ImageNet setup.
- [Misc] Made VOC annotations parser of FFLD compatible with non-VOC classes.
- [Fix] Fixed rare clustering bug.
- [Fix] Fixed a bug that occurred during aspect ratio clustering if the number of images was less than the number of clusters.
- [Fix] Fixed a bug that occurred during threshold optimization if there were no additional synsets available to take negative samples from.
- **[Improvement]** Efficient method for computing background statistics, which leverages the Fourier transform
- **[Improvement]** New background statistics (computed from 32k ImageNet samples)
- **[Misc]** Improved error message for incomplete ImageNet setup.
- **[Misc]** Made VOC annotations parser of FFLD compatible with non-VOC classes.
- **[Fix]** Fixed rare clustering bug.
- **[Fix]** Fixed a bug that occurred during aspect ratio clustering if the number of images was less than the number of clusters.
- **[Fix]** Fixed a bug that occurred during threshold optimization if there were no additional synsets available to take negative samples from.


Version 1.0 (2014-07-09)
Expand Down
140 changes: 140 additions & 0 deletions docs/libartos/html/_caffe_feature_extractor_8cc.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>ARTOS: CaffeFeatureExtractor.cc File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">ARTOS
&#160;<span id="projectnumber">2.0</span>
</div>
<div id="projectbrief">Adaptive Real-Time Object Detection System</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_caffe_feature_extractor_8cc.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
<div class="headertitle">
<div class="title">CaffeFeatureExtractor.cc File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="_caffe_feature_extractor_8h_source.html">CaffeFeatureExtractor.h</a>&quot;</code><br />
<code>#include &lt;opencv2/highgui/highgui.hpp&gt;</code><br />
<code>#include &lt;opencv2/imgproc/imgproc.hpp&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;cmath&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
<code>#include &quot;<a class="el" href="strutils_8h_source.html">strutils.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="portable__endian_8h_source.html">portable_endian.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for CaffeFeatureExtractor.cc:</div>
<div class="dyncontent">
<div class="center"><img src="_caffe_feature_extractor_8cc__incl.png" border="0" usemap="#_caffe_feature_extractor_8cc" alt=""/></div>
<map name="_caffe_feature_extractor_8cc" id="_caffe_feature_extractor_8cc">
<area shape="rect" id="node2" href="_caffe_feature_extractor_8h.html" title="CaffeFeatureExtractor.h" alt="" coords="286,80,449,107"/><area shape="rect" id="node34" href="strutils_8h.html" title="strutils.h" alt="" coords="45,379,117,405"/><area shape="rect" id="node35" href="portable__endian_8h.html" title="portable_endian.h" alt="" coords="1815,80,1938,107"/><area shape="rect" id="node3" href="_feature_extractor_8h.html" title="FeatureExtractor.h" alt="" coords="446,155,576,181"/><area shape="rect" id="node12" href="defs_8h.html" title="defs.h" alt="" coords="682,229,740,256"/><area shape="rect" id="node14" href="_j_p_e_g_image_8h.html" title="JPEGImage.h" alt="" coords="672,379,776,405"/><area shape="rect" id="node16" href="_feature_matrix_8h.html" title="FeatureMatrix.h" alt="" coords="738,453,850,480"/><area shape="rect" id="node24" href="exceptions_8h.html" title="exceptions.h" alt="" coords="164,229,260,256"/><area shape="rect" id="node20" href="_rectangle_8h.html" title="Rectangle.h" alt="" coords="551,379,642,405"/><area shape="rect" id="node22" href="_synset_image_8h.html" title="SynsetImage.h" alt="" coords="451,304,561,331"/></map>
</div>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="_caffe_feature_extractor_8cc.html">CaffeFeatureExtractor.cc</a></li>
<li class="footer">Generated on Fri Mar 11 2016 14:52:31 for ARTOS by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.7 </li>
</ul>
</div>
</body>
</html>
12 changes: 12 additions & 0 deletions docs/libartos/html/_caffe_feature_extractor_8cc__incl.map
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<map id="CaffeFeatureExtractor.cc" name="CaffeFeatureExtractor.cc">
<area shape="rect" id="node2" href="$_caffe_feature_extractor_8h.html" title="CaffeFeatureExtractor.h" alt="" coords="286,80,449,107"/>
<area shape="rect" id="node34" href="$strutils_8h.html" title="strutils.h" alt="" coords="45,379,117,405"/>
<area shape="rect" id="node35" href="$portable__endian_8h.html" title="portable_endian.h" alt="" coords="1815,80,1938,107"/>
<area shape="rect" id="node3" href="$_feature_extractor_8h.html" title="FeatureExtractor.h" alt="" coords="446,155,576,181"/>
<area shape="rect" id="node12" href="$defs_8h.html" title="defs.h" alt="" coords="682,229,740,256"/>
<area shape="rect" id="node14" href="$_j_p_e_g_image_8h.html" title="JPEGImage.h" alt="" coords="672,379,776,405"/>
<area shape="rect" id="node16" href="$_feature_matrix_8h.html" title="FeatureMatrix.h" alt="" coords="738,453,850,480"/>
<area shape="rect" id="node24" href="$exceptions_8h.html" title="exceptions.h" alt="" coords="164,229,260,256"/>
<area shape="rect" id="node20" href="$_rectangle_8h.html" title="Rectangle.h" alt="" coords="551,379,642,405"/>
<area shape="rect" id="node22" href="$_synset_image_8h.html" title="SynsetImage.h" alt="" coords="451,304,561,331"/>
</map>
1 change: 1 addition & 0 deletions docs/libartos/html/_caffe_feature_extractor_8cc__incl.md5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6ae4c41110e685c5e13c27d324085e1b
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 7d13a8f

Please sign in to comment.