Chainer を使って細胞を数えてみた
2016.7.2
samacoba
Chainer Meetup #03
1
細胞カウント
試薬は細胞にダメージを与える
⇒細胞画像から細胞を数えたい
・細胞を数えることは培養の基本作業
B:核画像 C:合成画像A:細胞画像
カウントが難しい
カウントが容易
試薬が必要
2
Convolution
当初のモデル案
正解T=102個出力Y=88個
loss=
Mean squared
error(Y,T)fully connect
T-Yの差を縮めるよう学習させる
教師となる情報は「数情報」のみ、「位置情報」は入ってない
X:細胞画像
B:核画像
数える
教師に正解の「数」を与える
3
核位置の推定
X:細胞画像 ⇒ Y:核「推定」画像に変換後、
カウントする
核の場所を推定
カウント
DNN
Y:核推定画像
T:核画像(教師)
X:細胞画像
教師に「核画像」を与える
画像 ⇒ 画像の変換方法は?
⇒「位置情報」が与えられる
4
Chainerで顔イラストの自動生成
Deconvolution2Dを使って画像を合成
5
12 34 29
94 28 44
67 58 33
1 0 0
0 1 0
0 0 1
*
12 0 0
0 28 0
0 0 33
= sum 77
1 0 0
0 1 0
0 0 1
*
30 0 0
0 30 0
0 0 30
=30
畳込みconvolution
逆畳込みDeconvolution
画像を小さくできる
画像を大きくできる
Convolution-Deconvolution
Convolution Deconvolution
元画像サイズへの画像変換が可能 6
convolution
前半はconvolution、後半はdeconvolution
deconvolution
X:細胞画像 Y:核推定画像
学習モデル
T:核画像(教師)
Loss = Mean squared error(Y,T)
核の位置を推定させるように学習させる
7
Y’: 極大位置Y:核推定画像
maxpooling など使って
極大値の位置を抽出
位置の抽出とカウント
0 0 10 0 0
0 10 30 10 0
10 30 50 30 10
0 10 30 10 0
0 0 10 0 0
10 30 30 30 10
30 50 50 50 30
30 50 50 50 30
30 50 50 50 30
10 30 30 30 10
0 0 0 0 0
0 0 0 0 0
0 0 50 0 0
0 0 0 0 0
0 0 0 0 0
A B A*(A==B)
3×3
maxpooling
8
極大値抽出例
ポイントの数を
カウント
8個
0
200
400
600
800
1000
1200
1400
1600
pic_2 pic_4 pic_6 pic_8 pic_10
細胞個数
T:正解数
Y:推定数
カウント結果
精度はまずまず
ただし、異なる状態だと精度は出ない
9
おまけ
10
クリックしたら○が付き、位置が出力される
・100円ショップの☆型の飾り
・通常のデジカメで撮影
☆を数えてみた
11
手動教師データ作成ソフト(javascript)
入力 出力
Y:位置推定画像
convolution-deconvolution
学習流れ
T:位置教師画像
クリックして位置を出す(88個)
X:元写真
Backpropagation
12
トレーニング(元画像1枚 TAITAN X 10分程度)
Y:位置推定画像 Yより位置抽出
学習結果
1枚(88クリック)の画像から、別画像での推定が可能 13
・トレーニング画像と別画像にて推定
従来の画像処理
エッジ抽出 2値化
ヒストグラム フィルタ選択
照明の均一化
数分間クリックするだけでOK
しきい値設定
ディープラニング
専門知識が必要
だれでも使える
ハレーション画素数
露光時間
従来の画像処理とディープラニング
14
別の特徴の抽出
星の「角」の教師にして、同様にトレーニング 15
Y:位置推定画像 Yより位置抽出
教師の与え方で、別の特徴をとらえてくれる
学習結果
16
・トレーニング画像と別画像にて推定
・花粉を数える
・菌を数える
・部品を数える
・角を数える
・車を数える
・人を数える
応用先
・集団の動きをトレースする
Ex.蟻の集団行動の研究
17
位置を抽出カウント
18
ご清聴ありがとうございました
最後に昨年よりchainerを使ってきて、
・WEBでの解説の投稿者の皆さま
・Chainer開発チームの皆さま
いつもありがとうございます

Chainerを使って細胞を数えてみた