画像データの前処理と変換(convert_imageset, compute_image_meanなど)

Caffeにおける画像データの前処理と変換は、効率的な学習のために非常に重要です。Caffeでは、画像を直接読み込むのではなく、あらかじめLMDBやLevelDBなどの形式に変換しておきます。このプロセスでは、主に以下の2つのコマンドラインツールが使われます:


1. convert_imageset:画像データをLMDB/LevelDB形式に変換する

概要

convert_imagesetは、画像ファイルとそれに対応するラベル情報を、Caffeが読み込めるデータベース形式(LMDBまたはLevelDB)に変換するためのツールです。

基本構文

bash
convert_imageset [options] <root_folder> <list_file> <output_db>

引数の説明

  • <root_folder>:画像ファイルのルートディレクトリ(パスは相対的に解釈される)

  • <list_file>:画像ファイル名とラベルを記述したテキストファイル(例:dog.jpg 0

  • <output_db>:出力先のデータベースディレクトリ(例:examples/mydataset/train_lmdb

主なオプション

  • --resize_height=256:高さを256ピクセルにリサイズ

  • --resize_width=256:幅を256ピクセルにリサイズ

  • --shuffle:画像とラベルの順序をランダムにシャッフル

  • --backend=lmdb:使用するデータベースの種類(lmdb または leveldb

実行例

bash
convert_imageset \ --resize_height=256 \ --resize_width=256 \ --shuffle \ ./images/ \ ./train.txt \ ./examples/mydataset/train_lmdb

2. compute_image_mean:平均画像の計算

概要

compute_image_meanは、学習時の正規化に用いるための平均画像を算出するツールです。学習画像全体の平均値を求め、ネットワークの入力データから引くことで、学習の安定性を向上させます。

基本構文

bash
compute_image_mean <input_db> <output_binaryproto>

引数の説明

  • <input_db>convert_imagesetで生成したLMDB/LevelDB

  • <output_binaryproto>:平均画像を保存するファイル(binaryproto形式)

実行例

bash
compute_image_mean ./examples/mydataset/train_lmdb ./examples/mydataset/mean.binaryproto

補足

mean.binaryprotoは後でtransform_param内のmean_fileとして指定します。


補足:transform_paramとの連携

train_val.prototxtなどのネットワーク定義ファイルでは、transform_paramにより前処理を指定できます:

protobuf
transform_param { mean_file: "examples/mydataset/mean.binaryproto" mirror: true crop_size: 224 }

これにより、データ読み込み時に以下が自動で行われます:

  • 平均画像による正規化

  • 左右反転(データ拡張)

  • 中央/ランダムクロップ


まとめ

ツール名 目的 出力形式
convert_imageset 画像とラベルをデータベース化 LMDB / LevelDB
compute_image_mean 平均画像の算出 binaryproto

これらのツールを活用することで、Caffeでの画像分類モデルの学習を効率的かつ高精度に行うことができます。必要に応じてデータのリサイズやシャッフルも加え、学習データの品質を高めましょう。

生成日:2025/05/23