bob issueshttps://gitlab.idiap.ch/groups/bob/-/issues2016-08-04T09:27:03Zhttps://gitlab.idiap.ch/bob/bob/-/issues/10Features lost after major cleanup2016-08-04T09:27:03ZAndré AnjosFeatures lost after major cleanup*Created by: anjos*
In order to get rid of the Tensor and spCore inherited classes, I had to remove some features that were designed at the time of the late torch5spro, but were never ported to use blitz Arrays rather than Tensors.
Th...*Created by: anjos*
In order to get rid of the Tensor and spCore inherited classes, I had to remove some features that were designed at the time of the late torch5spro, but were never ported to use blitz Arrays rather than Tensors.
These features are listed below and are mostly coming from the ip module:
* Haar features
* Haar LBP features
* ~~Histogram equalization~~
* ~~Self Quotient Image preprocessing~~
* Diffusion-based preprocessing (Relaxation and Vcycle)
In addition, I have disabled the features of the former Geometry subpackage. We should consider the use of Boost.Geometry instead.https://gitlab.idiap.ch/bob/bob/-/issues/8Face verification toolchain scripts require some cleanup2016-08-04T09:26:59ZAndré AnjosFace verification toolchain scripts require some cleanup*Created by: anjos*
The current scripts used for the face verification toolchain require some cleanup. This should help us to maintain and test the code more easily.*Created by: anjos*
The current scripts used for the face verification toolchain require some cleanup. This should help us to maintain and test the code more easily.v1.0https://gitlab.idiap.ch/bob/bob/-/issues/7ImageMagick and memory leaks2016-08-04T09:26:58ZAndré AnjosImageMagick and memory leaks*Created by: anjos*
The old version of ImageMagick (6.6.7) we are using at Idiap seems to be buggy (at least the Magick++ part).
This might cause the memory not to be deallocated properly. I've tried to get rid of this problem using th...*Created by: anjos*
The old version of ImageMagick (6.6.7) we are using at Idiap seems to be buggy (at least the Magick++ part).
This might cause the memory not to be deallocated properly. I've tried to get rid of this problem using the low-level MagickCore API without success.
Please have a look at this [thread](http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=18461) for more information.
It would be nice if someone can have a look at the behaviour with a more recent ImageMagick version. valgrind might be used to track the leaks.https://gitlab.idiap.ch/bob/bob/-/issues/5CMake Cleanup2016-08-04T09:26:55ZAndré AnjosCMake Cleanup*Created by: anjos*
This ticket keeps track of needed CMake script updates to tackle the following:
1. Clean-up the PCH support by removing this
2. Find a way to keep the "package" support, but do not depend on the "install" directo...*Created by: anjos*
This ticket keeps track of needed CMake script updates to tackle the following:
1. Clean-up the PCH support by removing this
2. Find a way to keep the "package" support, but do not depend on the "install" directory to find headers. This tends to work badly with template files and in other special cases.
3. Maybe port Cmake stuff to Scons?
4. Try other build systems?https://gitlab.idiap.ch/bob/bob/-/issues/4HDF5 needs some extra functionality2016-08-04T09:26:53ZAndré AnjosHDF5 needs some extra functionality*Created by: anjos*
This ticket keeps track of the extra functionaliy needed on io::HDF5File to make it more flexible before a full release:
1. ~~Ability to save and distinguish boolean files~~
2. ~~Ability to save scalar values (si...*Created by: anjos*
This ticket keeps track of the extra functionaliy needed on io::HDF5File to make it more flexible before a full release:
1. ~~Ability to save and distinguish boolean files~~
2. ~~Ability to save scalar values (simple and arrays)~~
3. Ability to save single strings ~~and string lists~~
4. ~~It would be nice to have attribute support as well~~
5. ~~Implement meat of the HDF5File::copy() method~~https://gitlab.idiap.ch/bob/bob/-/issues/3Documentation Sprint2016-08-04T09:26:51ZAndré AnjosDocumentation Sprint*Created by: anjos*
We need to organize the documentation before the release and revise its several aspects.*Created by: anjos*
We need to organize the documentation before the release and revise its several aspects.v1.0https://gitlab.idiap.ch/bob/bob/-/issues/2Put in place tools to create releases in a snap2016-08-04T09:26:49ZAndré AnjosPut in place tools to create releases in a snap*Created by: anjos*
We need tools to build releases out of bob check-outs. The tool needs to be simple to use so we can just specify a tag on the tree and the rest happens automatically.*Created by: anjos*
We need tools to build releases out of bob check-outs. The tool needs to be simple to use so we can just specify a tag on the tree and the rest happens automatically.v1.0https://gitlab.idiap.ch/bob/bob/-/issues/1Bob testing has no documentation2016-08-04T09:26:47ZAndré AnjosBob testing has no documentation*Created by: anjos*
Our documentation on writing unit tests for Bob is not complete. It would be good to have it done before the release.*Created by: anjos*
Our documentation on writing unit tests for Bob is not complete. It would be good to have it done before the release.v1.0https://gitlab.idiap.ch/bob/bob.measure/-/issues/13Cannot install bob.measure2016-08-04T09:19:46ZAndré AnjosCannot install bob.measure*Created by: omarcr*
I have installed all the dependencies acording to the graph presented in https://github.com/idiap/bob/wiki/Dependencies:
However, I cannot isntall the pacakge this is the traceback:
```
omar@ubuntuv2:~/bob.me...*Created by: omarcr*
I have installed all the dependencies acording to the graph presented in https://github.com/idiap/bob/wiki/Dependencies:
However, I cannot isntall the pacakge this is the traceback:
```
omar@ubuntuv2:~/bob.measure$ sudo python setup.py
Traceback (most recent call last):
File "setup.py", line 50, in <module>
boost_modules = boost_modules,
File "/usr/local/lib/python2.7/dist-packages/bob/blitz/extension.py", line 52, in __init__
BobExtension.__init__(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/bob/extension/__init__.py", line 294, in __init__
bob_includes, bob_libraries, bob_library_dirs, bob_macros = get_bob_libraries(self.bob_packages)
File "/usr/local/lib/python2.7/dist-packages/bob/extension/__init__.py", line 186, in get_bob_libraries
pkg = importlib.import_module(package)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/usr/local/lib/python2.7/dist-packages/bob/math/__init__.py", line 6, in <module>
bob.extension.load_bob_library('bob.math', __file__)
File "/usr/local/lib/python2.7/dist-packages/bob/extension/__init__.py", line 237, in load_bob_library
ctypes.cdll.LoadLibrary(full_libname)
File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/local/lib/python2.7/dist-packages/bob/math/libbob_math.so: undefined symbol: dsyevd_
```https://gitlab.idiap.ch/bob/bob.measure/-/issues/3eer_threshold doesn't behave as expected2016-08-04T09:19:21ZAndré Anjoseer_threshold doesn't behave as expected*Created by: siebenkopf*
Hi there,
I have found out that the ``eer_threshold`` function (as well as the ``min_hter_threshold`` function) does not perform as expected in case of highly unbalanced scores. Particularly, when I try to us...*Created by: siebenkopf*
Hi there,
I have found out that the ``eer_threshold`` function (as well as the ``min_hter_threshold`` function) does not perform as expected in case of highly unbalanced scores. Particularly, when I try to use a special low valued error indicator such as `-10000`, the returned threshold is garbage. Consider the following example:
```
positives = [1.]*100 + [-10000.]
negatives = [-1.]*100 + [-10000.]
threshold = bob.measure.eer_threshold(negatives, positives)
print threshold, bob.measure.farfrr(negatives, positives, threshold)
print 0, bob.measure.farfrr(negatives, positives, 0)
```
The outputs of the two print commands are:
```
-4999.5 (0.9900990099009901, 0.009900990099009901)
0 (0.0, 0.009900990099009901)
```
So, the second output, where I estimated a threshold ``0`` myself, is much more suitable than the first output, which was generated by ``eer_threshold`` (the ``min_hter_threshold`` behaves exactly the same).
I would suggest, we should rethink our implementation of the thresholds. I am pretty sure that there exist smarter ways (I had implemented some during my PhD...)
Cheers
Manuelhttps://gitlab.idiap.ch/bob/bob/-/issues/141Mark differences between python and C++ style bindings2015-08-18T16:22:37ZAndré AnjosMark differences between python and C++ style bindings*Created by: anjos*
> Issue migrated from the bug #104
For many functions, we have two different kinds of python bindings: one kind which follows the C++ API (e.g. void f(const BA& input, BA& output)), and one which is more 'pythoni...*Created by: anjos*
> Issue migrated from the bug #104
For many functions, we have two different kinds of python bindings: one kind which follows the C++ API (e.g. void f(const BA& input, BA& output)), and one which is more 'pythonic' (e.g. BA f(const BA& input)). These two bindings often share the same python function name. I don't think this is a good strategy, as these sometimes leads to impossible cases when the C++ API has many overloaded functions. I think the function name should reflect this difference. OpenCV strategy was roughly to used two different namespaces (cv for the C like functions, and cv2 for the pythonic one). We could do something slightly different such as appending the function name with something like '_c' or '_cc' to clearly highlight this fact.https://gitlab.idiap.ch/bob/bob/-/issues/153No python tests for bob.ip.GaborWaveletTransform and related classes2015-08-18T16:19:09ZAndré AnjosNo python tests for bob.ip.GaborWaveletTransform and related classes*Created by: siebenkopf*
It seems that there are no python tests for the bob.ip.GaborWaveletTransform, bob.machine.GaborGraphMachine and bob.machine.GaborJetSimilarity. It would be nice to add some.*Created by: siebenkopf*
It seems that there are no python tests for the bob.ip.GaborWaveletTransform, bob.machine.GaborGraphMachine and bob.machine.GaborJetSimilarity. It would be nice to add some.v2.0https://gitlab.idiap.ch/bob/bob/-/issues/164Nose tests are not uniform2015-08-18T16:18:46ZAndré AnjosNose tests are not uniform*Created by: siebenkopf*
I just noticed that the usage of nose tests is not uniform. Sometimes, the unittest framework is used, and sometimes the nose framework.
After discussion with anjos we found that the nose tests have more pros, ...*Created by: siebenkopf*
I just noticed that the usage of nose tests is not uniform. Sometimes, the unittest framework is used, and sometimes the nose framework.
After discussion with anjos we found that the nose tests have more pros, and hence, we should try to port all nose tests to nose (removing the dependence to the unittest.TestCase class).
This bug has low priority since it is just a unification of tests.https://gitlab.idiap.ch/bob/bob/-/issues/175xbob.db.aggregator nosetests need more time with python32015-08-18T16:12:09ZAndré Anjosxbob.db.aggregator nosetests need more time with python3*Created by: siebenkopf*
For some reason, the nose tests for the external packages, which are run during the nightly or incremental builds on BuildBot, need much more time with python3 compared to python2, and also the network load is m...*Created by: siebenkopf*
For some reason, the nose tests for the external packages, which are run during the nightly or incremental builds on BuildBot, need much more time with python3 compared to python2, and also the network load is much higher.
As one possible problem I have pointed out sqlite3, which is used in most of our database packages. Running some preliminary profiling tests, I got:
python2:
ncalls tottime percall cumtime percall filename:lineno(function)
205 0.710 0.003 0.710 0.003 {method 'execute' of 'sqlite3.Cursor' objects}
python3:
ncalls tottime percall cumtime percall filename:lineno(function)
205 35.832 0.175 35.832 0.175 {method 'execute' of 'sqlite3.Cursor' objects}
Maybe, sqlite3 is badly compiled for python3 (e.g., in debug mode). In this case, this is just an issue in our current environment, and this might be fixed automatically after the system upgrade.https://gitlab.idiap.ch/bob/bob/-/issues/181The evaluation metric "Area Under Curve" (AUC) is missing2015-08-18T16:05:03ZAndré AnjosThe evaluation metric "Area Under Curve" (AUC) is missing*Created by: siebenkopf*
One well-known evaluation metric for binary classification problems is the Area Under (ROC) Curve: http://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve
It would be nice to have ...*Created by: siebenkopf*
One well-known evaluation metric for binary classification problems is the Area Under (ROC) Curve: http://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve
It would be nice to have an implementation of it in ``bob.measure``.https://gitlab.idiap.ch/bob/bob/-/issues/184bob.sp.Quantization has weird border handling2015-08-18T15:57:28ZAndré Anjosbob.sp.Quantization has weird border handling*Created by: siebenkopf*
By chance, I had a look at the ``bob.sp.Quantization`` class. It seems that this class has several issues, especially in border cases:
1. the __call__ function returns 0 in two cases: when the element is in the...*Created by: siebenkopf*
By chance, I had a look at the ``bob.sp.Quantization`` class. It seems that this class has several issues, especially in border cases:
1. the __call__ function returns 0 in two cases: when the element is in the first range, **or** when the element is below the lowest threshold
2. the __call__ function returns the highest index in two cases: when the element is in the last range, **or** when the element is above the highest threshold
In fact, point (2) cannot even be distinguished in the C++ implementation of the function since the highest threshold in not even stored in the range of thresholds. Usually, when there are 4 ranges, it requires 5 thresholds, but this class holds only 4.https://gitlab.idiap.ch/bob/bob/-/issues/194Error at compiling bob 1.2.x2015-08-18T15:53:00ZAndré AnjosError at compiling bob 1.2.x*Created by: eamost*
Since I would like to reproduce results of PAMI 2013 paper (Scalable PLDA).I need to compile bob 1.2 version as Laurent said.
My opeating system is Linux Mageia 4.11. I compile boost libarary version 1.56.0 and ...*Created by: eamost*
Since I would like to reproduce results of PAMI 2013 paper (Scalable PLDA).I need to compile bob 1.2 version as Laurent said.
My opeating system is Linux Mageia 4.11. I compile boost libarary version 1.56.0 and giflib version 5.1.0
I got this error
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
In file included from /usr/include/boost/smart_ptr/shared_ptr.hpp:28:0,
from /usr/include/boost/shared_ptr.hpp:17,
from /usr/include/boost/filesystem/path.hpp:29,
from /usr/include/boost/filesystem.hpp:16,
from /home/eamost01/PLDA_PAMI_2013/bob-1.2.0/src/io/cxx/ImageGifFile.cc:23:
/usr/include/boost/smart_ptr/detail/shared_count.hpp: In instantiation of ‘boost::detail::shared_count::shared_count(P, D) [with P = GifFileType*; D = int (*)(GifFileType*, int*)]’:
/usr/include/boost/smart_ptr/shared_ptr.hpp:358:76: required from ‘boost::shared_ptr<T>::shared_ptr(Y*, D) [with Y = GifFileType; D = int (*)(GifFileType*, int*); T = GifFileType]’
/home/eamost01/PLDA_PAMI_2013/bob-1.2.0/src/io/cxx/ImageGifFile.cc:306:58: required from here
/usr/include/boost/smart_ptr/detail/shared_count.hpp:171:9: error: too few arguments to function
d(p); // delete p
^
In file included from /usr/include/boost/smart_ptr/detail/shared_count.hpp:30:0,
from /usr/include/boost/smart_ptr/shared_ptr.hpp:28,
from /usr/include/boost/shared_ptr.hpp:17,
from /usr/include/boost/filesystem/path.hpp:29,
from /usr/include/boost/filesystem.hpp:16,
from /home/eamost01/PLDA_PAMI_2013/bob-1.2.0/src/io/cxx/ImageGifFile.cc:23:
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp: In instantiation of ‘void boost::detail::sp_counted_impl_pd<P, D>::dispose() [with P = GifFileType*; D = int (*)(GifFileType*, int*)]’:
/home/eamost01/PLDA_PAMI_2013/bob-1.2.0/src/io/cxx/ImageGifFile.cc:708:48: required from here
/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp:153:9: error: too few arguments to function
del( ptr );
^
/home/eamost01/PLDA_PAMI_2013/bob-1.2.0/src/io/cxx/ImageGifFile.cc:708:13: warning: ‘codec_registered’ defined but not used [-Wunused-variable]
static bool codec_registered = register_codec();
^
src/io/cxx/CMakeFiles/bob_io.dir/build.make:540: recipe for target 'src/io/cxx/CMakeFiles/bob_io.dir/ImageGifFile.cc.o' failed
make[2]: *** [src/io/cxx/CMakeFiles/bob_io.dir/ImageGifFile.cc.o] Error 1
CMakeFiles/Makefile2:696: recipe for target 'src/io/cxx/CMakeFiles/bob_io.dir/all' failed
make[1]: *** [src/io/cxx/CMakeFiles/bob_io.dir/all] Error 2
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Second, I uninstall giflib 5.1.0 then install giflib 4.2.0
I got this error message
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
../../../lib64/libbob_io.so: undefined reference to `MakeMapObject'
../../../lib64/libbob_io.so: undefined reference to `FreeMapObject'
collect2: error: ld returned 1 exit status
src/io/cxx/CMakeFiles/test_bob_io_image_codec.dir/build.make:102: recipe for target 'bin/test_bob_io_image_codec' failed
make[2]: *** [bin/test_bob_io_image_codec] Error 1
CMakeFiles/Makefile2:765: recipe for target 'src/io/cxx/CMakeFiles/test_bob_io_image_codec.dir/all' failed
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Third,
I succed in compling bob (master version) with gitlib 5.1.0 and boost 1.56. Unfortunately, I can not use with xbob.pami.2013
Thanks
Eslam
https://gitlab.idiap.ch/bob/bob/-/issues/179No support of log determinant2014-01-04T16:02:46ZAndré AnjosNo support of log determinant*Created by: laurentes*
As said [here](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.det.html), determinant computation is subject to underflow/overflow.
When computing log determinant, this might be avoided by dir...*Created by: laurentes*
As said [here](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.det.html), determinant computation is subject to underflow/overflow.
When computing log determinant, this might be avoided by directly working in the log domain. In the python universe, we may rely on numpy.linalg.slogdet(). We should consider to provide such a function in the C++ universe.
Currently, the PLDAMachine class may be subject to underflow/overflow.v2.0https://gitlab.idiap.ch/bob/bob/-/issues/174bob.ip.draw_... methods take arguments in wrong order2013-11-15T19:55:28ZAndré Anjosbob.ip.draw_... methods take arguments in wrong order*Created by: siebenkopf*
Usually, points in Bob are given in (y,x) order, and functions always take (y,x) as arguments (in this order). Having a look at the documentation of the bob.ip.draw_point (and similar) functions, they take argum...*Created by: siebenkopf*
Usually, points in Bob are given in (y,x) order, and functions always take (y,x) as arguments (in this order). Having a look at the documentation of the bob.ip.draw_point (and similar) functions, they take arguments in order (x,y).
A fix of this would be nice, to have a consistent order of arguments in Bob.v2.0https://gitlab.idiap.ch/bob/bob/-/issues/154bob.k and others are fun but unexpected2013-07-23T06:53:53ZAndré Anjosbob.k and others are fun but unexpected*Created by: khoury*
bob.k, bob.core.k, bob.core.random.k, bob.io.k, bob.ip.k, bob.sp.k, bob.measure.k and others are caused by the lines:
__all__ = [k for k in dir() if not k.startswith('_')]
This should likely be replaced by:
__all...*Created by: khoury*
bob.k, bob.core.k, bob.core.random.k, bob.io.k, bob.ip.k, bob.sp.k, bob.measure.k and others are caused by the lines:
__all__ = [k for k in dir() if not k.startswith('_')]
This should likely be replaced by:
__all__ = dir()