| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545 | 
							- /*M///////////////////////////////////////////////////////////////////////////////////////
 
- //
 
- //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
 
- //
 
- //  By downloading, copying, installing or using the software you agree to this license.
 
- //  If you do not agree to this license, do not download, install,
 
- //  copy or use the software.
 
- //
 
- //
 
- //                           License Agreement
 
- //                For Open Source Computer Vision Library
 
- //
 
- // Copyright (C) 2014, Itseez Inc, all rights reserved.
 
- // Third party copyrights are property of their respective owners.
 
- //
 
- // Redistribution and use in source and binary forms, with or without modification,
 
- // are permitted provided that the following conditions are met:
 
- //
 
- //   * Redistribution's of source code must retain the above copyright notice,
 
- //     this list of conditions and the following disclaimer.
 
- //
 
- //   * Redistribution's in binary form must reproduce the above copyright notice,
 
- //     this list of conditions and the following disclaimer in the documentation
 
- //     and/or other materials provided with the distribution.
 
- //
 
- //   * The name of the copyright holders may not be used to endorse or promote products
 
- //     derived from this software without specific prior written permission.
 
- //
 
- // This software is provided by the copyright holders and contributors "as is" and
 
- // any express or implied warranties, including, but not limited to, the implied
 
- // warranties of merchantability and fitness for a particular purpose are disclaimed.
 
- // In no event shall the Itseez Inc or contributors be liable for any direct,
 
- // indirect, incidental, special, exemplary, or consequential damages
 
- // (including, but not limited to, procurement of substitute goods or services;
 
- // loss of use, data, or profits; or business interruption) however caused
 
- // and on any theory of liability, whether in contract, strict liability,
 
- // or tort (including negligence or otherwise) arising in any way out of
 
- // the use of this software, even if advised of the possibility of such damage.
 
- //
 
- //M*/
 
- #ifndef OPENCV_DATASETS_DATASET_HPP
 
- #define OPENCV_DATASETS_DATASET_HPP
 
- #include <string>
 
- #include <vector>
 
- #include <opencv2/core.hpp>
 
- /** @defgroup datasets Framework for working with different datasets
 
- The datasets module includes classes for working with different datasets: load data, evaluate
 
- different algorithms on them, contains benchmarks, etc.
 
- It is planned to have:
 
- -   basic: loading code for all datasets to help start work with them.
 
- -   next stage: quick benchmarks for all datasets to show how to solve them using OpenCV and
 
- implement evaluation code.
 
- -   finally: implement on OpenCV state-of-the-art algorithms, which solve these tasks.
 
- @{
 
- @defgroup datasets_ar Action Recognition
 
- ### HMDB: A Large Human Motion Database
 
- Implements loading dataset:
 
- "HMDB: A Large Human Motion Database": <http://serre-lab.clps.brown.edu/resource/hmdb-a-large-human-motion-database/>
 
- Usage:
 
- -# From link above download dataset files: `hmdb51_org.rar` & `test_train_splits.rar`.
 
- -# Unpack them. Unpack all archives from directory: `hmdb51_org/` and remove them.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_ar_hmdb -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- #### Benchmark
 
- For this dataset was implemented benchmark with accuracy: 0.107407 (using precomputed HOG/HOF
 
- "STIP" features from site, averaging for 3 splits)
 
- To run this benchmark execute:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_ar_hmdb_benchmark -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- @note
 
- Precomputed features should be unpacked in the same folder: `/home/user/path_to_unpacked_folders/hmdb51_org_stips/`.
 
- Also unpack all archives from directory: `hmdb51_org_stips/` and remove them.
 
- ### Sports-1M %Dataset
 
- Implements loading dataset:
 
- "Sports-1M Dataset": <http://cs.stanford.edu/people/karpathy/deepvideo/>
 
- Usage:
 
- -# From link above download dataset files (`git clone https://code.google.com/p/sports-1m-dataset/`).
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_ar_sports -p=/home/user/path_to_downloaded_folders/
 
- ~~~
 
- @defgroup datasets_fr Face Recognition
 
- ### Adience
 
- Implements loading dataset:
 
- "Adience": <http://www.openu.ac.il/home/hassner/Adience/data.html>
 
- Usage:
 
- -# From link above download any dataset file: `faces.tar.gz\aligned.tar.gz` and files with splits:
 
- `fold_0_data.txt-fold_4_data.txt`, `fold_frontal_0_data.txt-fold_frontal_4_data.txt`. (For
 
- face recognition task another splits should be created)
 
- -# Unpack dataset file to some folder and place split files into the same folder.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_fr_adience -p=/home/user/path_to_created_folder/
 
- ~~~
 
- ### Labeled Faces in the Wild
 
- Implements loading dataset:
 
- "Labeled Faces in the Wild": <http://vis-www.cs.umass.edu/lfw/>
 
- Usage:
 
- -# From link above download any dataset file:
 
- `lfw.tgz\lfwa.tar.gz\lfw-deepfunneled.tgz\lfw-funneled.tgz` and files with pairs: 10 test
 
- splits: `pairs.txt` and developer train split: `pairsDevTrain.txt`.
 
- -# Unpack dataset file and place `pairs.txt` and `pairsDevTrain.txt` in created folder.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_fr_lfw -p=/home/user/path_to_unpacked_folder/lfw2/
 
- ~~~
 
- #### Benchmark
 
- For this dataset was implemented benchmark with accuracy: 0.623833 +- 0.005223 (train split:
 
- `pairsDevTrain.txt`, dataset: lfwa)
 
- To run this benchmark execute:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_fr_lfw_benchmark -p=/home/user/path_to_unpacked_folder/lfw2/
 
- ~~~
 
- @defgroup datasets_gr Gesture Recognition
 
- ### ChaLearn Looking at People
 
- Implements loading dataset:
 
- "ChaLearn Looking at People": <http://gesture.chalearn.org/>
 
- Usage
 
- -# Follow instruction from site above, download files for dataset "Track 3: Gesture Recognition":
 
- `Train1.zip`-`Train5.zip`, `Validation1.zip`-`Validation3.zip` (Register on site: www.codalab.org and
 
- accept the terms and conditions of competition:
 
- <https://www.codalab.org/competitions/991#learn_the_details> There are three mirrors for
 
- downloading dataset files. When I downloaded data only mirror: "Universitat Oberta de Catalunya"
 
- works).
 
- -# Unpack train archives `Train1.zip`-`Train5.zip` to folder `Train/`, validation archives
 
- `Validation1.zip`-`Validation3.zip` to folder `Validation/`
 
- -# Unpack all archives in `Train/` & `Validation/` in the folders with the same names, for example:
 
- `Sample0001.zip` to `Sample0001/`
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_gr_chalearn -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- ### Sheffield Kinect Gesture Dataset
 
- Implements loading dataset:
 
- "Sheffield Kinect Gesture Dataset": <http://lshao.staff.shef.ac.uk/data/SheffieldKinectGesture.htm>
 
- Usage:
 
- -# From link above download dataset files: `subject1_dep.7z`-`subject6_dep.7z`, `subject1_rgb.7z`-`subject6_rgb.7z`.
 
- -# Unpack them.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_gr_skig -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- @defgroup datasets_hpe Human Pose Estimation
 
- ### HumanEva Dataset
 
- Implements loading dataset:
 
- "HumanEva Dataset": <http://humaneva.is.tue.mpg.de>
 
- Usage:
 
- -# From link above download dataset files for `HumanEva-I` (tar) & `HumanEva-II`.
 
- -# Unpack them to `HumanEva_1` & `HumanEva_2` accordingly.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_hpe_humaneva -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- ### PARSE Dataset
 
- Implements loading dataset:
 
- "PARSE Dataset": <http://www.ics.uci.edu/~dramanan/papers/parse/>
 
- Usage:
 
- -# From link above download dataset file: `people.zip`.
 
- -# Unpack it.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_hpe_parse -p=/home/user/path_to_unpacked_folder/people_all/
 
- ~~~
 
- @defgroup datasets_ir Image Registration
 
- ### Affine Covariant Regions Datasets
 
- Implements loading dataset:
 
- "Affine Covariant Regions Datasets": <http://www.robots.ox.ac.uk/~vgg/data/data-aff.html>
 
- Usage:
 
- -# From link above download dataset files:
 
- `bark\bikes\boat\graf\leuven\trees\ubc\wall.tar.gz`.
 
- -# Unpack them.
 
- -# To load data, for example, for "bark", run:
 
- ```
 
- ./opencv/build/bin/example_datasets_ir_affine -p=/home/user/path_to_unpacked_folder/bark/
 
- ```
 
- ### Robot Data Set
 
- Implements loading dataset:
 
- "Robot Data Set, Point Feature Data Set – 2010": <http://roboimagedata.compute.dtu.dk/?page_id=24>
 
- Usage:
 
- -# From link above download dataset files: `SET001_6.tar.gz`-`SET055_60.tar.gz`
 
- -# Unpack them to one folder.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_ir_robot -p=/home/user/path_to_unpacked_folder/
 
- ~~~
 
- @defgroup datasets_is Image Segmentation
 
- ### The Berkeley Segmentation Dataset and Benchmark
 
- Implements loading dataset:
 
- "The Berkeley Segmentation Dataset and Benchmark": <https://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/>
 
- Usage:
 
- -# From link above download dataset files: `BSDS300-human.tgz` & `BSDS300-images.tgz`.
 
- -# Unpack them.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_is_bsds -p=/home/user/path_to_unpacked_folder/BSDS300/
 
- ~~~
 
- ### Weizmann Segmentation Evaluation Database
 
- Implements loading dataset:
 
- "Weizmann Segmentation Evaluation Database": <http://www.wisdom.weizmann.ac.il/~vision/Seg_Evaluation_DB/>
 
- Usage:
 
- -# From link above download dataset files: `Weizmann_Seg_DB_1obj.ZIP` & `Weizmann_Seg_DB_2obj.ZIP`.
 
- -# Unpack them.
 
- -# To load data, for example, for `1 object` dataset, run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_is_weizmann -p=/home/user/path_to_unpacked_folder/1obj/
 
- ~~~
 
- @defgroup datasets_msm Multiview Stereo Matching
 
- ### EPFL Multi-View Stereo
 
- Implements loading dataset:
 
- "EPFL Multi-View Stereo": <http://cvlab.epfl.ch/data/strechamvs>
 
- Usage:
 
- -# From link above download dataset files:
 
- `castle_dense\castle_dense_large\castle_entry\fountain\herzjesu_dense\herzjesu_dense_large_bounding\cameras\images\p.tar.gz`.
 
- -# Unpack them in separate folder for each object. For example, for "fountain", in folder `fountain/` :
 
- `fountain_dense_bounding.tar.gz -> bounding/`,
 
- `fountain_dense_cameras.tar.gz -> camera/`,
 
- `fountain_dense_images.tar.gz -> png/`,
 
- `fountain_dense_p.tar.gz -> P/`
 
- -# To load data, for example, for "fountain", run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_msm_epfl -p=/home/user/path_to_unpacked_folder/fountain/
 
- ~~~
 
- ### Stereo – Middlebury Computer Vision
 
- Implements loading dataset:
 
- "Stereo – Middlebury Computer Vision": <http://vision.middlebury.edu/mview/>
 
- Usage:
 
- -# From link above download dataset files:
 
- `dino\dinoRing\dinoSparseRing\temple\templeRing\templeSparseRing.zip`
 
- -# Unpack them.
 
- -# To load data, for example "temple" dataset, run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_msm_middlebury -p=/home/user/path_to_unpacked_folder/temple/
 
- ~~~
 
- @defgroup datasets_or Object Recognition
 
- ### ImageNet
 
- Implements loading dataset:  "ImageNet": <http://www.image-net.org/>
 
- Usage:
 
- -# From link above download dataset files:
 
- `ILSVRC2010_images_train.tar\ILSVRC2010_images_test.tar\ILSVRC2010_images_val.tar` & devkit:
 
- `ILSVRC2010_devkit-1.0.tar.gz` (Implemented loading of 2010 dataset as only this dataset has ground
 
- truth for test data, but structure for ILSVRC2014 is similar)
 
- -# Unpack them to: `some_folder/train/`, `some_folder/test/`, `some_folder/val` &
 
- `some_folder/ILSVRC2010_validation_ground_truth.txt`,
 
- `some_folder/ILSVRC2010_test_ground_truth.txt`.
 
- -# Create file with labels: `some_folder/labels.txt`, for example, using python script below (each
 
- file's row format: `synset,labelID,description`. For example: "n07751451,18,plum").
 
- -# Unpack all tar files in train.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_or_imagenet -p=/home/user/some_folder/
 
- ~~~
 
- Python script to parse `meta.mat`:
 
- ~~~{py}
 
-     import scipy.io
 
-     meta_mat = scipy.io.loadmat("devkit-1.0/data/meta.mat")
 
-     labels_dic = dict((m[0][1][0], m[0][0][0][0]-1) for m in meta_mat['synsets']
 
-     label_names_dic = dict((m[0][1][0], m[0][2][0]) for m in meta_mat['synsets']
 
-     for label in labels_dic.keys():
 
-         print "{0},{1},{2}".format(label, labels_dic[label], label_names_dic[label])
 
- ~~~
 
- ### MNIST
 
- Implements loading dataset:
 
- "MNIST": <http://yann.lecun.com/exdb/mnist/>
 
- Usage:
 
- -# From link above download dataset files:
 
- `t10k-images-idx3-ubyte.gz`, `t10k-labels-idx1-ubyte.gz`, `train-images-idx3-ubyte.gz`, `train-labels-idx1-ubyte.gz`.
 
- -# Unpack them.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_or_mnist -p=/home/user/path_to_unpacked_files/
 
- ~~~
 
- ### SUN Database
 
- Implements loading dataset:
 
- "SUN Database, Scene Recognition Benchmark. SUN397": <http://vision.cs.princeton.edu/projects/2010/SUN/>
 
- Usage:
 
- -# From link above download dataset file: `SUN397.tar` & file with splits: `Partitions.zip`
 
- -# Unpack `SUN397.tar` into folder: `SUN397/` & `Partitions.zip` into folder: `SUN397/Partitions/`
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_or_sun -p=/home/user/path_to_unpacked_files/SUN397/
 
- ~~~
 
- @defgroup datasets_pd Pedestrian Detection
 
- ### Caltech Pedestrian Detection Benchmark
 
- Implements loading dataset:
 
- "Caltech Pedestrian Detection Benchmark": <http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/>
 
- @note First version of Caltech Pedestrian dataset loading. Code to unpack all frames from seq files
 
- commented as their number is huge! So currently load only meta information without data. Also
 
- ground truth isn't processed, as need to convert it from mat files first.
 
- Usage:
 
- -# From link above download dataset files: `set00.tar`-`set10.tar`.
 
- -# Unpack them to separate folder.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_pd_caltech -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- @defgroup datasets_slam SLAM
 
- ### KITTI Vision Benchmark
 
- Implements loading dataset:
 
- "KITTI Vision Benchmark": <http://www.cvlibs.net/datasets/kitti/eval_odometry.php>
 
- Usage:
 
- -# From link above download "Odometry" dataset files:
 
- `data_odometry_gray\data_odometry_color\data_odometry_velodyne\data_odometry_poses\data_odometry_calib.zip`.
 
- -# Unpack `data_odometry_poses.zip`, it creates folder `dataset/poses/`. After that unpack
 
- `data_odometry_gray.zip`, `data_odometry_color.zip`, `data_odometry_velodyne.zip`. Folder
 
- `dataset/sequences/` will be created with folders `00/..21/`. Each of these folders will contain:
 
- `image_0/`, `image_1/`, `image_2/`, `image_3/`, `velodyne/` and files `calib.txt` & `times.txt`.
 
- These two last files will be replaced after unpacking `data_odometry_calib.zip` at the end.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_slam_kitti -p=/home/user/path_to_unpacked_folder/dataset/
 
- ~~~
 
- ### TUMindoor Dataset
 
- Implements loading dataset:
 
- "TUMindoor Dataset": <http://www.navvis.lmt.ei.tum.de/dataset/>
 
- Usage:
 
- -# From link above download dataset files: `dslr\info\ladybug\pointcloud.tar.bz2` for each dataset:
 
- `11-11-28 (1st floor)\11-12-13 (1st floor N1)\11-12-17a (4th floor)\11-12-17b (3rd floor)\11-12-17c (Ground I)\11-12-18a (Ground II)\11-12-18b (2nd floor)`
 
- -# Unpack them in separate folder for each dataset.
 
- `dslr.tar.bz2 -> dslr/`,
 
- `info.tar.bz2 -> info/`,
 
- `ladybug.tar.bz2 -> ladybug/`,
 
- `pointcloud.tar.bz2 -> pointcloud/`.
 
- -# To load each dataset run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_slam_tumindoor -p=/home/user/path_to_unpacked_folders/
 
- ~~~
 
- @defgroup datasets_tr Text Recognition
 
- ### The Chars74K Dataset
 
- Implements loading dataset:
 
- "The Chars74K Dataset": <http://www.ee.surrey.ac.uk/CVSSP/demos/chars74k/>
 
- Usage:
 
- -# From link above download dataset files:
 
- `EnglishFnt\EnglishHnd\EnglishImg\KannadaHnd\KannadaImg.tgz`, `ListsTXT.tgz`.
 
- -# Unpack them.
 
- -# Move `.m` files from folder `ListsTXT/` to appropriate folder. For example,
 
- `English/list_English_Img.m` for `EnglishImg.tgz`.
 
- -# To load data, for example "EnglishImg", run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_tr_chars -p=/home/user/path_to_unpacked_folder/English/
 
- ~~~
 
- ### The Street View Text Dataset
 
- Implements loading dataset:
 
- "The Street View Text Dataset": <http://vision.ucsd.edu/~kai/svt/>
 
- Usage:
 
- -# From link above download dataset file: `svt.zip`.
 
- -# Unpack it.
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_tr_svt -p=/home/user/path_to_unpacked_folder/svt/svt1/
 
- ~~~
 
- #### Benchmark
 
- For this dataset was implemented benchmark with accuracy (mean f1): 0.217
 
- To run benchmark execute:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_tr_svt_benchmark -p=/home/user/path_to_unpacked_folders/svt/svt1/
 
- ~~~
 
- @defgroup datasets_track Tracking
 
- ### VOT 2015 Database
 
- Implements loading dataset:
 
- "VOT 2015 dataset comprises 60 short sequences showing various objects in challenging backgrounds.
 
- The sequences were chosen from a large pool of sequences including the ALOV dataset, OTB2 dataset,
 
- non-tracking datasets, Computer Vision Online, Professor Bob Fisher’s Image Database, Videezy,
 
- Center for Research in Computer Vision, University of Central Florida, USA, NYU Center for Genomics
 
- and Systems Biology, Data Wrangling, Open Access Directory and Learning and Recognition in Vision
 
- Group, INRIA, France. The VOT sequence selection protocol was applied to obtain a representative
 
- set of challenging sequences.": <http://box.vicos.si/vot/vot2015.zip>
 
- Usage:
 
- -# From link above download dataset file: `vot2015.zip`
 
- -# Unpack `vot2015.zip` into folder: `VOT2015/`
 
- -# To load data run:
 
- ~~~
 
- ./opencv/build/bin/example_datasets_track_vot -p=/home/user/path_to_unpacked_files/VOT2015/
 
- ~~~
 
- @}
 
- */
 
- namespace cv
 
- {
 
- namespace datasets
 
- {
 
- //! @addtogroup datasets
 
- //! @{
 
- struct Object
 
- {
 
- };
 
- class CV_EXPORTS Dataset
 
- {
 
- public:
 
-     Dataset() {}
 
-     virtual ~Dataset() {}
 
-     virtual void load(const std::string &path) = 0;
 
-     std::vector< Ptr<Object> >& getTrain(int splitNum = 0);
 
-     std::vector< Ptr<Object> >& getTest(int splitNum = 0);
 
-     std::vector< Ptr<Object> >& getValidation(int splitNum = 0);
 
-     int getNumSplits() const;
 
- protected:
 
-     std::vector< std::vector< Ptr<Object> > > train;
 
-     std::vector< std::vector< Ptr<Object> > > test;
 
-     std::vector< std::vector< Ptr<Object> > > validation;
 
- private:
 
-     std::vector< Ptr<Object> > empty;
 
- };
 
- //! @}
 
- }
 
- }
 
- #endif
 
 
  |