PVM

画像のセグメンテーション(e.g. Normalized Cut)とか切り出した領域からの特徴量抽出って、結構時間がかかるものです。画像のサイズにもよりますが、400x300程度の画像でも1枚あたり、20分もNormalized Cutに時間がかかっています(パラメータにも依存しますが...)。こんなに時間のかかるものを、何万枚もの画像に対して処理させるものだから、まともにやっていたら、帰国前に実験が終わりません。
University of ArizonaのCSには、Linux Clusterがあって、それを使わせてもらうことにしました。Clusterといっても、勝手に処理を分散してくれるとかいう便利な機構はなくて、単に予約制になっている32ノードのLinuxマシンがあるだけ...
それで、PVM (Parallel Virtual Machine)のマニュアルを片手に、対象ファイルのリストを読み込み、Slaveにタスクを分散させるMasterと、指定されたコマンド(e.g. Normalized cutsのプログラム)を、Masterから指定されたファイル(e.g. 000001.jpg)に対して実行するSlaveプログラムを書いてみました。結果をマージしたりするわけではないので、プログラムは非常にシンプル。後は、ホストの動的な追加/削除に対応できればとても便利そうです。