応用生物学基礎実験
2018.6.5

畳み込みニューラルネットワーク(CNN)とその利用

東京大学大学院農学生命科学研究科 大森宏


畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)

画像系深層学習

 近年、機械学習(machine learning)の分野で深層学習(deep learning)が注目を 浴びている。囲碁や将棋などのボードゲームではコンピュータの方が人間より強くなっている。 深層学習は、非常に多層のニューラルネットを組み合わせたネットワークから なり、莫大な量(数10万~数100万)の訓練データを用いて学習することでネットワークの 係数を求めている。
 画像系の深層学習では、物体認識や物体検出に著しい発展を見せているが、この契機 となったのが2010年から始まった大規模画像認識コンペティションILSVRC (ImageNet Large Scale Visual Recognition Challenge)である。2012年の大会で畳み込みニューラル ネットワーク (Convolutional Neural Network : CNN)を用いたAlex netが圧倒的な成績で 優勝し、これまでの画像認識の常識を根底から覆した。

ImageNet

ImageNetタグ付けされた 100万を超える画像データセットであり、この画像を訓練データとして画像認識 コンペティションが開かれている。

VGG16による画像1000クラス分類

 python上で動くKerasには現在10程度のCNNのCNNが利用可能である。本実験ではVGG16とInceptionResNetVer.2を用いて1000クラス分類を行ってみる。KERASを動かすようにするのは少々面倒なので、この実験では画像データをVGG16とInceptionResNetVer.2を用いて1000クラス分類した結果をダウンロードして解析を行う。

1000クラス分類名前データダウンロード
VGG16、1000クラス分類データダウンロード
InceptionResNetVer.2、1000クラス分類データダウンロード

 解析する写真は、2012年と2013年の学生実験で収集した 学生生活写真200枚(必ずクリックして見てね) である。
 関数"top5(j)"は、j番目の学生生活写真の画像認識top5を表す。 認識物(英語)とその確信度が表示される。 認識英語がわからないときは、googleに聞いてみる。一般に、1000クラスに入っていない 写真の確信度は低いと考えられる。
 写真間の距離は、1000クラス分類ベクトル間のマンハッタン距離で計算した。

解析手法

多次元尺度法(MDS)

 多次元尺度法(Multi Dimensional Scaling : MDS)は、対象間の非類似度(距離)が与え られたときに、距離の小さい対象を近くに、距離の大きい対象を遠くに配置する手法である。 対象間の類似関係を視覚化したものである。Rでは"cmdscale()"で行える。

クラスター分析

 対象間の非類似度(距離)が与えられたときに、距離の小さいものからクラスターにまとめ上げて いく手法である。階層的クラスター分析では、最終的に樹形図(デンドログラム)が 描かれる。Rでは"hclust()"で行える。

Rスクリプト

##################################
top5 <- function(obj, j){
    o <- order(obj[j,], decreasing=T)
    obj[j,o[1:5]]
}
####################################
classname <- read.table("classname.csv")	# 1000クラスの名前
# 学生生活写真1000クラス分類結果読み込み
# VGG16
life_vgg16 <- t(read.table("life_preds.txt", sep=","))	
dim(life_vgg16) 
# InceptionResNetVer.2
life_incepresnet <- t(read.table("life_inceptionresnet.preds.txt", sep=","))

colnames(life_vgg16) <- colnames(life_incepresnet) <- classname[,1]
rownames(life_vgg16) <- rownames(life_incepresnet) <- 1:200

top5(life_vgg16, 31)		# life031.jpg のVGG16による画像認識 
top5(life_incepresnet, 31)	# life031.jpg のInceptionResNetVer.2による画像認識
top5(life_vgg16, 39)	# life039.jpg のVGG16による画像認識
top5(life_incepresnet, 39)

# life_vgg16のtop5の確信度の和を算出
top5sum <- apply(life_vgg16,1,function(x) sum(sort(x,decreasing=T)[1:5]))
hist(top5sum, nclass=30)
o <- order(top5sum, decreasing=T)
o[1:10]		# 確信度上位10
top5(life_vgg16, o[1])
o[191:200]	# 確信度下位10
top5(life_vgg16, o[200])

# VGG16による1000クラス分類による写真間の距離
vgg16.Dist <- as.matrix(dist(life_vgg16, method="manhattan", diag=T, upper=T))
# 写真間距離からの多次元尺度法(MDS)
vgg16.cmd <- cmdscale(vgg16.Dist, k=4, eig=T, add=T) 
colnames(vgg16.cmd$points) <- paste("MDS", 1:4, sep="")
# 写真MDS配置
com <- c(1,2)	# MDS1, MDS2 軸で表示
x <- vgg16.cmd$points[,com]
plot(x, type="n")
text(x, rownames(x), cex=0.8)
# クラスター分析
vgg16.clus <- hclust(dist(vgg16.Dist))
plot(vgg16.clus) 
vgg16.class <- rect.hclust(vgg16.clus, h=4.5)
# MDS配置上でクラスターごとに色分け
plot(x, type="n")
for(k in 1:length(vgg16.class))
   text(x[vgg16.class[[k]],], rownames(x)[vgg16.class[[k]]], col=k, cex=0.8)
                                                                          
課題1
様々な学生生活写真をCNNの1000クラス分類にかけて見て、正しい画像認識を与える写真と 正しくない画像認識を与える写真とでどのような違いがあるか述べよ。
課題2
VGG16とInceptionResNetVer.2のどちらの画像認識が正しそうか。
課題3
クラスター分析の結果、学生生活写真はどのようなクラスターに分かれたか。

様々な写真間距離の比較

 写真間の類似度を計測する方法として、CNN1000クラス分類のほかに、 人間の目を利用したものがある。類似度を計測したい 写真セットを20~30人程度の被験者に渡し、類似した写真を同じグループに入れて分類して もらうタスクをやってもらう。写真間の類似度は2つの写真を同じグループに入れた人数の割合 で計測できる。
 以下に、様々な方法で取得した学生生活写真の類似度に基づいたMDS配置がある。
life

MDSパターンA(クリックするとより詳しいのが出ます。写真動かせます。)

life

MDSパターンB(クリックするとより詳しいのが出ます。写真動かせます。)

life

MDSパターンC(クリックするとより詳しいのが出ます。写真動かせます。)

課題4
上の3つのMDSパターンA、B、C、のうちどれが最も良い (似た写真が近くにあり、似ていない写真同士は遠くにある)と思われるか。理由 を付けて答えよ。

集合知による印象調査(宿題)

 多くの人の予想や意見を総合すると,よい予想や結果が得られることがある.これを, 集合知(collective inteligence)あるいは, 群衆の英知(wisdom of crowds)と呼んでいる.
 現在,多くの学生が写真機能つき携帯や,スマートフォン,デジカメを所有している. また,ネット環境も充実しているので, 写真データを収集するのはとても容易になってきた.そこで,多くの学生に何らかのテーマに沿った 写真データを収集してもらい,そのパターンや意味を分析する.

 前回の「学生生活」調査から5年が経過したので、昨今の学生気質の変化を考察する。 学生生活の中で,個人的にふと気になったことや 感動したこと,おもしろいと感じたことの中で,画像情報に重要な役割があると思われたものの スナップショット(写真)を撮る.
 このとき,このスナップショットを撮った理由や感じたことなどを 記したなるべく長いコメントを記載する.また,GPSや1号館 x 教室付近などの撮影地点情報,スナップ ショットに撮影した木や建物,器具などのオブジェクト情報,「癒された」,「楽しい」,「悲しい」などの その時の基本感情を合わせて記載する.スナップショットは電子メール の添付ファイル,コメントや撮影地点情報,オブジェクト,基本感情は電子メールで送付する.
人の顔のアップなど個人情報に直接関わるものや公序良俗に反するもの 以外は,スナップショットは基本的に何でもよい.
 撮影機材を持っていない学生は,友達のを借りる.  一人あたり数点(最大10程度)のスナップショットを撮影する.締め切りは,6月17日(日).収集された データは6月19日の実験で解析する.
 なお、データを送信した時点で、データの著作権は大森に帰属する(学会等で撮影者の許諾なく公開する等)ことをご承知いただきたい。 いやな場合は、データを送信しないでください。  送信先は,

hihiomori@gmail.com
である.

調査方法

  1. 学生生活の中で「気になった状況」を見いだす.
  2. 「気になった状況」のスナップショット(写真)を撮り,メールの添付ファイルで送信する.
  3. 撮影理由や感じたことなどのコメントをメールで送信する.
  4. 撮影地点の情報をメールで送信する.
  5. 撮影対象の具体的オブジェクト名をメールで送信する.
  6. 撮影時の基本感情をメールで送信する.
  7. 上記調査を数回行う.
締切:6月17日(日)
Copyright (C) 2009, Hiroshi Omori. 最終更新日:2018年 6月5日