Package: xbob.db.mnist
The MNIST database is a database of handwritten digits, which consists of a
training set of 60,000 examples, and a test set of 10,000 examples. It was
made available by Yann Le Cun and Corinna Cortes (MNIST database). The data was originally extracted
from a larger set made available byNIST, before
being size-normalized and centered in a fixed-size image (28x28 pixels).The actual raw data for the database should be downloaded from theoriginal
website. This package only contains
theBobaccessor methods to use this
database directly from python.You would normally not install this package unless you are maintaining it. What
you would do instead is to tie it in at the package you need touseit.
There are a few ways to achieve this:You can add this package as a requirement at thesetup.pyfor your ownsatellite packageor to your Buildout.cfgfile, if you prefer it that way. With this
method, this package gets automatically downloaded and installed on your
working environment, orYou can manually download and install this package using commands likeeasy_installorpip.The package is available in two different distribution formats:You can download it fromPyPI, orYou can download it in its source form fromits git repository.The database raw files must be installed somewhere in your environment.You can mix and match points 1/2 above based on your requirements. Here
are some examples:Modify your setup.py and download from PyPIThat is the easiest. Edit yoursetup.pyin your satellite package and add
the following entry in theinstall_requiressection (note:...meanswhatever extra stuff you may have in-between, don’t put that on your
script):install_requires=[
  ...
  "xbob.db.mnist",
],Proceed normally with yourbootstrap/buildoutsteps and you should be all
set. That means you can now import the namespacexbob.db.mnistinto your scripts.Modify your buildout.cfg and download from gitYou will need to add a dependence tomr.developerto be able to install from our
git repositories. Yourbuildout.cfgfile should contain the following
lines:[buildout]
...
extensions = mr.developer
auto-checkout = *
eggs = bob
       ...
       xbob.db.mnist

[sources]
xbob.db.mnist = git https://github.com/bioidiap/xbob.db.mnist.git
...How to use this database APIAfter launching the python interpreter (assuming that the environment is properly set up),
you could get the training set as follows:>>> import xbob.db.mnist
>>> db = xbob.db.mnist.Database('PATH_TO_DATA_FROM_YANN_LECUN_WEBSITE') # 4 binary .gz compressed files
>>> images, labels = db.data(groups='train', labels=[0,1,2,3,4,5,6,7,8,9])In this case, this should return two NumPy arrays:imagescontain the raw data (60,000 samples of dimension 784 [28x28 pixels images])labelsare the corresponding classes (digits 0 to 9) for each of the 60,000 samplesIf you don’t have the data installed on your machine, you can also use the following
set of commands that will:first look for the database in the xbob/db/mnist/ subdirectory and use it if is availableautomatically download it from Yann Lecun’s website into a temporary folder that will
be erased when the destructor of the xbob.db.mnist database is called.automatically download it into the provided directory that willnotbe deleted.>>> import xbob.db.mnist
>>> db = xbob.db.mnist.Database() # Check for the data files locally, and download them if required
>>> images, labels = db.data(groups='train', labels=[0,1,2,3,4,5,6,7,8,9])
>>> del db # delete the temporary downloaded files if anyor>>> db = xbob.db.mnist.Database("Directory") # Persistently downloads files into the folder "Directory"
>>> images, labels = db.data(groups='train', labels=[0,1,2,3,4,5,6,7,8,9])
>>> del db # The download directory stays