Caffeにおけるデータの準備では、学習や検証に用いるデータを特定の形式で保存・読み込むことが重要です。Caffeは主に以下の3種類のデータフォーマットに対応しています:
1. LMDB形式(Lightning Memory-Mapped Database)
概要:
-
Caffeで最も推奨されているデータフォーマット。
-
読み書き速度が速く、大規模なデータセットに適している。
-
データはキーと値のペアで格納され、値には通常
DatumというCaffeのシリアライズ形式が使われる。
特徴:
-
メモリマップドI/Oを用いて高速アクセスが可能。
-
スレッドセーフで複数のプロセスから読み込み可能(書き込みは単一プロセス)。
-
内部でB+木を使っているため、ソートされた順序でアクセス可能。
作成手順(Pythonスクリプト例):
2. LevelDB形式
概要:
-
LMDBと同様にCaffeがサポートするキー・バリュー型データベース。
-
Caffeの初期のバージョンでは標準として使われていた。
特徴:
-
Googleが開発した軽量なKVS(Key-Value Store)。
-
書き込み・読み込みは高速だが、LMDBと比較するとパフォーマンスや安定性に劣るとされる。
-
クロスプラットフォーム性に課題があるため、現在はLMDBの使用が推奨される。
作成にはconvert_imagesetツールが使用可能。
convert_imagesetツールが使用可能。
3. HDF5形式(Hierarchical Data Format)
概要:
-
階層構造を持つ柔軟なバイナリデータ形式。
-
画像、音声、センサーデータなど様々な形式のデータを格納可能。
-
PythonやMATLABなど様々な言語で利用されている。
特徴:
-
データの構造が柔軟で、多次元配列や複数のラベル形式にも対応。
-
一括読み込みや任意のチャンク単位の読み出しが可能。
-
通常は小規模なデータセットや研究用途で使用される。
利用方法:
-
HDF5ファイル内に
dataとlabelのデータセットを作成する。 -
Caffeの
HDF5Dataレイヤーを用いて読み込む。
例(Python):
そして、リストファイル(例: train.txt)を作成して、プロトファイルで指定します。
まとめ表
| フォーマット | 利用用途 | 長所 | 短所 |
|---|---|---|---|
| LMDB | 大規模学習 | 高速、安全、安定 | 書き込みは単一プロセスのみ |
| LevelDB | 古い互換性 | 軽量、比較的高速 | サポートが弱く、LMDBに劣る |
| HDF5 | 小中規模、研究用途 | 柔軟なデータ構造、多様なツール対応 | 大規模データには不向き、I/Oがやや遅い |
生成日:2025/05/23