Computer Vision Image Database

by allenlu2007

 

Computer Vision 所處理的資料量都很大。不論是在 training (i.e. learning) 或是 testing 都需要 access 大量資料。例如 ImageNet (Stanford), MNIST (LeCun, NYU), CIFAR10/100 (Canadian Institute For Advance Research, University of Toronto) 等等。因此需要高 效以及 efficient 的 database. 

幾個常用 database

* LMDB:  Caffe uses Google Protocol buffer and LMDB

* LevelDB: Google create

* HDF5

* RockDB:  Facebook create

 

以下摘自 bubuko A.

Caffe 生成的數據分為兩種格式: LMDB 和 LevelDB

它們都是鍵/值對 (Key/Value Pair) embedded database.

雖然 LMDB 的 memory consumption 是 LevelDB 的 1.1倍,但 LMDB 的速度比 LevelDB 快 10%-15%.

更重要是 LMDB 允許多組 training model 同時讀取同一組 dataset. 因此成為 Caffe 的 default 產生 dataset 的格式。

 

How to install LMDB?

Python 安裝 LMDB 非常簡單。

> pip install lmdb

使用時就 

import lmdb

 

How to use LMDB?

前面提到 LMDB and other database 是 (key/value pair) 的 database.  

如何定義 key/value pair?  一個方式是用 Google Protocol Buffer.

Protocol buffer 是類似 XML 的語法,但比較 lightweight 適合用於 database access. 

在 Python 安裝 Google protocol buffer 也很容易。

> pip install protobuf

在 Caffe 中使用非常廣泛。就是定義各種 prototxt for layer definition, solver parameter, etc. 同時連結 LMDB database.

 

要parse 一個 protobuf 類型 database,首先要描述 protobuf dataset 内部格式(有哪些項,這些項的 type, byte, repeat? and repeat how many times),安裝 protobuf module 就可以用 protobuf 語法定義這些格式 (就是.proto文件),然後用protoc compile 這個 .proto 文件就可以生成你需要的目標文件。 
想要定義自己的.proto文件请參考: 
https://developers.google.com/protocol-buffers/docs/proto?hl=zh-cn

 

 

 

 

 

 

 

Advertisements