2015年06月19日(金)

チャーミングな画像解析ツールwndchrm(3)実行編

投稿者:

インストールが済んだところで、いよいよwndchrmを使ってみます。手始めにこの細胞

たちを分類出来るか見てみましょう。まずはこの記事の下のほうにある「添付ファイル」のところにあるwndchrm_demo/zipをダウンロードして解凍してみてください(こちらからでもダウンロードできます)。wndchrm_demoというフォルダの中に、細胞4種類A, B, C, Dそれぞれについて20枚の画像が別々のフォルダに入っています。ここではDocumentフォルダ(「書類」フォルダ)直下にwndchrmというフォルダを作って、解凍した親フォルダのwndchrm_demoをその中に入れた時の操作例を示します。ちなみに画像は基本的にTIFF形式。白黒でもカラーでも使えます。今回は白黒です。

次にターミナルに移動してルンルン気分でコマンドラインを入力します。あらかじめwndchrmフォルダに移動しておくと、出力されたファイルを探しに行かなくて楽です。

cd /Users/Nakagawa_imac/Documents/wndchrm

あとはwndchrmのコマンドを打ち込むだけ。まずはwndchrm trainコマンドで、親フォルダの場所を指定して、画像の各特徴をまとめたファイル.fitを作らせます。ここではwndchrm_demo.fitにしてみましょう。-mはマルチコアを使うためのオプション。-lはなるべくたくさんのカテゴリーについて特徴値を計算するためのオプションです。カラーのときは-cのオプションをつけるようです。

wndchrm train -m -l wndchrm_demo wndchrm_demo.fit

すると、画像が置いてあったフォルダに.sigというファイルが生成されていきます!

次々とスクロールするターミナルのこういう画面を見ているとなんか働いてる気がする。知らない人が横から見たら、データサイエンティストに見えるかしらん。

.sigファイルをテキストエディットなどで開いてみると各カテゴリーにおける特徴値を見ることができます。Chebyshev-Fourier CoefficientsやらOtsu Object FeaturesやらHaralick Texturesやらありますが、何のことやらさっぱりわかりませんね。まあ、コンピューター将棋で言うところの、<玉ー銀ー金>や<玉ー馬ー金>といった三駒関係みたいなものでしょう(余計わからない)。ともあれ、画像を特徴づける2919項目について数値化しているようです。我々が発表論文数、招待講演数、H-indexなどで評価されるようなものでしょうか(わかりやすい)。終了するとwndchrmフォルダのところにwnchrm_demo.fitというファイルが生成されてきます。

次に、これらの評価値でどれぐらい上手に分類できるかテストさせます。何も指定しないと、全体の3/4の画像を無作為に抜き取って評価関数を作り、残りの1/4の画像でどれぐらいの正確さで分類できるか計算します。このテストを30回実行させて、どれだけ正しく分類できたかの結果をwndcrhrm_demo_result.htmlとして出力させてみます。

wndchrm test -m -l -n30 wndchrm_demo.fit wndchrm_demo_result.html

さて、結果ですが、htmlファイルを開いてみます。たとえば、

 

Confusion Matrix (sum of all splits)
  A_Cell B_Cell C_Cell D_Cell   Total Tested Per-Class Accuracy
A_Cell 143 7 0 0   150 95.3 +/- 3.4%
B_Cell 2 148 0 0   150 98.7 +/- 1.8%
C_Cell 0 0 83 67   150 55.3 +/- 8.0%
D_Cell 0 0 64 86   150 57.3 +/- 7.9%

Intervals based on 95% confidence using Normal Approximation method.
 

Average Similarity Matrix
  A_Cell B_Cell C_Cell D_Cell
A_Cell 1.00 0.05 0.00 0.00
B_Cell 0.03 1.00 0.00 0.00
C_Cell 0.00 0.00 1.00 0.90
D_Cell 0.00 0.00 0.87 1.00

Average Class Probability Matrix
  A_Cell B_Cell C_Cell D_Cell
A_Cell 0.9599 +/- 0.0242 0.0395 +/- 0.0242 0.0002 +/- 0.0001 0.0004 +/- 0.0003
B_Cell 0.0247 +/- 0.0173 0.9753 +/- 0.0173 0.0000 +/- 0.0000 0.0000 +/- 0.0000
C_Cell 0.0000 +/- 0.0000 0.0000 +/- 0.0000 0.5475 +/- 0.0417 0.4524 +/- 0.0417
D_Cell 0.0001 +/- 0.0000 0.0000 +/- 0.0000 0.4534 +/- 0.0354 0.5466 +/- 0.0354

95% confidence intervals
 

Confusion Matrixという項目。これはA_cellのフォルダに入っていた画像をランダムに5つ選んで30回テストしたときに、それがA_Cellとして分類されたのが143回、B_Cellとして分類されたのが7回、CやDと見間違えることはなかった、ということになります。ですので、Per-Class Accuracyは95.3%。かなり正確に分類できています。一方、C_Cellの場合は67回もD_Cellとして分類されてしまっています。ほぼ半分も間違えてるんかいな?wndchrm使えんなあ、、ではなくて、実はこれ、CとDは同じ細胞なんです。ですので、正しく働いているということになります。こんな人を試すような陰湿なことをしても怒らないし惑わされないのがコンピュータの偉いところですね。はい。

また、前回インストールしたphylipの場所を-pオプションに続けてスペースを入れずに指定すると、それぞれの細胞がどれぐらい似ているのかというのを系統樹を書いてくれ、ファイル名.psの形式で出力してくれます。たとえば僕の場合phylipはこんな感じ

のフォルダ構造で入っていますので、

wndchrm test -m -l -n30 -p/usr/local/Cellar/phylip-3.695 wndchrm_demo.fit wndchrm_demo_result.html

になります。で、出てきた結果がこちら。

CとDはほとんど変わらんということがきちんと見えています。

ついでに、未知の細胞の画像をwndchrmに投げて、どのカテゴリーに分類できるか判断させることもできます。たとえば、あんまり意味ないですがデモ画像のA_Cellの#1の画像を判断させるときは、

wndchrm classify -m -l wndchrm_demo.fit /Users/Nakagawa_imac/Documents/wndchrm/wndchrm_demo/A_Cell/A_Cell_#1.tif

結果はターミナルのウインドウに出てきます。当然ながらこの場合、Aに分類されます。

以上、wndchrmはインストールも使うのも非常に簡単、中身はわからないけれどもかなり正確、冷静に客観的に画像の類似度を判断してくれるツールとして、かなり優秀なのではないかと思っています。ノックダウンの効果にイマイチ自信が持てないときなど、画像を撮りまくってwndchrmに投げて、分類精度が80%を超えてくるようであればまず効果があるとみて間違いなし、と自信を持てるのではないでしょうか。

あと、熊大の斉藤さんから教わったポイントですが、

画像のサイズと枚数は各条件で揃えておいたほうが良い。
画像は多ければ多いほど良いが、20-30枚あればかなり精度の良い分類ができる。
当然ながら同じ条件(露出)で撮影しないと結果がばらつく。

僕が学んだのは、相変わらずコンピュータ音痴ぶりを発揮していますが、

ファイル名にはスペースを入れない(間を空けたいときはアンダーバー_を使う)。
-nや-pなどのオプションの後にスペースを入れない(入力フォルダとして認識されてしまう)。
現時点ではphylipsはhomebrewでインストールしない。
マニュアルをちゃんと読む。
困ったらググる。
それでも解決しない時は斉藤さんに聞く。

というわけで、サルでも使えるwndchrmの紹介でした。実験医学の単行本に斉藤さんのはるかに丁寧な解説がありますので、羊土社の回し者ではありませんが、これを機会にぜひこちらの本も。 

 
 
 
中川 真一

北海道大学 薬学研究院 教授
▶ プロフィールはこちら

ブログアーカイブ

ログイン

サイト内検索