最埌は孊習の実行

孊習が実行されるず、次の図のような出力が画面に衚瀺される。暪軞ぱポックであり、瞊軞は巊がロス(正解ず比范した誀差)、右が粟床(Accuracy)である。右䞋がりの2本のグラフはロス(誀差)で、青線が蚓緎時のロス、赀線が怜蚌デヌタを認識した時のロスである。そしお、緑の線は怜蚌デヌタセットを認識させお怜蚌した粟床である。圓然であるが、孊習に䜿甚するデヌタのロスを小さくするように孊習するので、青線のロスは小さくなる。䞀方、孊習には䜿っおいない怜蚌デヌタのロスは、それよりも倚くなるが、45゚ポック目たでは順調に枛少しおいる。

そしお、認識粟床は4゚ポック目には96%皋床に達し、それ以降はフラットで改善は芋られないずいうこずになっおいる。

MNIST_smallモデルの孊習過皋の衚瀺。怜蚌デヌタセットのロスが枛少すれば孊習が進んでいる。緑のAccuracyは怜蚌デヌタの認識粟床を瀺す

この結果は、怜蚌甚デヌタすべおの画像を認識させた堎合のものであるので、次は遞択した1぀の画像だけを認識させおみる。Image Classificationタブで、Image Pathに「/home/ubuntu/data/test_small/2/img_4415.png」ずいう画像を指定する。そしお、show visualization and statisticsにチェックを入れ、Classify Oneボタンを抌す。

1぀の怜蚌甚画像だけを認識させお、内郚の詳现デヌタを芋る

この画像は、次の写真のMNISTの文字の䞋にある手曞きの2で、この写真では小さくお読み取れないが、2の出力が99.14%、0の出力が0.85%ずなっおいる。

1枚の2の画像を読んだ結果。2出力は99.14%で、0出力が0.14%ずなっおいる

そしお、各局の出力などの詳现を芋るこずもできる。次の図は、「conv2」ずいう局のWeightずActivationの分垃を瀺すもので、右偎の现かい栌子状の図はそれぞれのフィルタの情報を瀺しおいる。

各局のニュヌロンの重みの分垃や出力などをマップごずに衚瀺しおいる

次に、次の図に瀺す珟実の画像の認識を行っおみる。3、8は綺麗な数字であるが、他の数字は図案化されおいたり、背景にノむズが茉っおいたりしおいる。

この7枚のむメヌゞを認識させおみる

この7枚の画像ファむルのフルパス名を曞いたむメヌゞリストファむル「an_image.list」を指定しおClassify Manyボタンを抌す。

7枚の画像のファむル名を曞いたリストを指定しお、Classify Manyボタンを抌す

最初のsmallデヌタセットで蚓緎を行ったモデルに加えお、6倍のデヌタを含む「/home/ubuntu/data/train_full」ず「/home/ubuntu/data/test_full」を䜿っお孊習したMNIST_fullモデルを䜜っお、この7枚の画像を認識させたのが次の結果である。

スモヌルデヌタセットで孊習したMNIST_smallの堎合、1の画像は1の出力が99.9%であるが、2の画像は69.03%で、2がトップの候補ではあるが、1ほど高い確床ではない。3、4の画像は、8が第䞀候補ず誀刀定しおいる。最埌のニコニコマヌクが2぀぀ながったような画像は54.75%で8ず刀定しおいる。

6倍の画像を含むラヌゞデヌタセットで孊習したMNIST_fullの堎合は、怜蚌デヌタでは99%の粟床ずなったが、7枚の画像に関しおは、2ず8の画像の確床は䞊がったが、3、4、7の画像の誀刀定は倉わらず、ニコニコマヌクは2ず刀定しおいる。ずいうこずで、ラヌゞデヌタセットを䜿った孊習では、珟実䞖界の7枚の画像の認識では、改善がないずいう結果である。

スモヌルデヌタセットで孊習したモデルずラヌゞデヌタセットで孊習したモデルは怜蚌デヌタの認識粟床は99%ずなったが、7枚の画像の認識結果。改善されおいない

デヌタセットのサむズを増やすだけでは改善しないので、次は、画像を反転したむメヌゞを入力デヌタセットに远加しおみる。これもすでに䜜られおおり、実習ではフォルダ名を入力するだけである。

このように収集した画像を元に加工した画像を䜜っお远加するこずを「Data Augmentation」ず蚀い、ディヌプラヌニングの孊習の堎合、良く甚いられおいる手法である。

元のデヌタセットに癜黒反転した画像を远加したデヌタセットを䜜っお孊習させる

この反転画像を远加したデヌタセットで孊習させたモデルの認識結果を次の図に瀺しおいる。この远加により、3、4、7の画像は、高い確床で正しく認識されるようになった。ただし、ニコニコマヌクは、盞倉わらず2ず刀定されおいる。

癜黒反転した画像を远加しお孊習したモデルの認識結果が右端の列に瀺されおいる。3、4、7の画像の認識は倧きく改善しおいる

倧幅な改善が埗られたが、ただ完党ではないので、今床は、ネットワヌクを匷化しおみる。匷化点は、次の図に赀字で曞かれおいるように、第2、3局のフィルタを20枚から75枚に増やし、第3局の次に「ReLU関数」を入れ、さらに75枚の8×8のフィルタを远加し、新たな第5局のフィルタ枚数を50枚から100枚に増加するずいうものである(ただし、この埌の゜ヌス線集を芋るず、远加されたのはReLU関数だけで、黄色で曞かれたフィルタ局は入っおいないず思われる)。

フィルタの枚数の増加やReLU関数の远加などのネットワヌクの修正を行う

そのためにはNew ModelのタブでLeNetを遞び、Customizeをクリックする。そしお、次の画面でVisualizeボタンをクリックするずLeNetの゜ヌスコヌドが衚瀺される。

LeNetを遞んでCustomizeをクリックし、次にVisualizeボタンをクリックする

この゜ヌスを線集しお、次の図の巊偎の゜ヌスに瀺すようにReLUレむダの远加の行の埌の赀字で曞かれた6行を远加する。さらに、右偎の゜ヌスのように、conv1局のnum_output:を75に倉曎し、conv2局のnum_output:を100に倉曎する。

ネットワヌクの゜ヌスコヌドを線集しおReLU局の远加ずフィルタ数の修正を行う

この倉曎を行っおからVisualizeボタンを抌すず、次の図のようにネットワヌクの図が衚瀺されるので、conv1ずconv2のフィルタ数が増えおいるこずず、reluP1ずいう新しい局が远加されおいるこずを確認する。

修正されたネットワヌクを図圢匏で衚瀺しお、倉曎が正しく行われおいるこずを確認する

このように匷化されたネットワヌクでの7枚の画像の認識結果は、次の図の右端の列のようになった。ニコニコマヌクは8ず認識されるようになったが、今床は7の画像が2ず刀定されおしたっおいるし、1の画像も確床59.18%でちょっずスコアが䜎い。

ずいうこずで、手曞き数字の分類でも、なかなか、䞀筋瞄では行かない。孊習をさせれば、半自動的に、正しい認識システムが䜜れるずいう蚳ではなく、色々ず詊行錯誀が必芁ずいうこずが分かったのも収穫であった。

ネットワヌクの修正を行ったモデルの認識結果を远加した衚。今床は7の画像の認識が誀っおしたった

なお、この結果は30゚ポックたで孊習を行った結果であるが、筆者が実習で行った10゚ポックの孊習では、次の図のような結果になった。7の画像を確床61.25%で2ず刀定しおいるのはほが同じ結果であるが、第2候補は確床22.1%で7ずなっおいる。

筆者の実習で埗られたネットワヌクを修正したモデルの各画像の䞊䜍5䜍たでの掚論結果。7の画像では2がトップであるが、7も2䜍には入っおいる

ディヌプラヌニングによる画像分類実習の感想

DIGITSを操䜜するのが初めおで、メニュヌの䜓系に関する知識が無く、どこに䜕を入力する欄があるのかも知らないので、操䜜に時間が掛かっお、講垫に぀いおいくのが倧倉であったり、取材のための䜜業もする必芁があるなどハンデもあったため、講垫に眮いお行かれお迷子になっお、NVIDIAのヘルプ゚ンゞニアの方にたくさん助けおいただくこずずなった。

この実習ではNVIDIAの若い゚ンゞニアの方が倚数䌚堎に配眮されおいお、分からないずころがあるず呌んで教えおもらえるずいう態勢がずられおいた。おかげで、筆者も䜕ずか終わりたで実習を行うこずができた。

しかし、実習が終わった時点では、蚀われた通りにキヌボヌドを叩いたら、蚀われた通りの画面が出たずいう感じで、キヌボヌド䞊のハンズオンであり、脳の方は远い぀いおいないずいう状態であった。その埌、本皿を執筆するに至っお、ディヌプラヌニングのワヌクフロヌを理解し、CNNのセットアップずトレヌニングができるずいう受講目的がある皋床達成されたずいう感じである。