---
title: 畳み込みニューラルネットワークによる画像分類について
tags:  #cnn #deep learning #image #classification  
author: [Masato MIWADA](https://convert.docswell.com/user/masato_miwada)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LE3R26M575.jpg?width=480
description: About image classification using convolutional neural networks
published: October 20, 24
canonical: https://convert.docswell.com/s/masato_miwada/K821YE-2024-10-20-120730
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LE3R26M575.jpg)

日本絵画に描かれた人物の
顔分類に機械学習で挑戦！！
（ミワダ マサト）
三和田 将人


# Page. 2

![Page Image](https://bcdn.docswell.com/page/8EDYZV6YEG.jpg)

成果物について
日本画に描かれた人物を複数クラスに分類する学習器（モデル）を深層学習で作成
正答率：Cross Validation（CV） = 80.8％（Ensambled）、スコア：Leader Board （LB） = 0.8830
コンペの成績 順位 2位（34人中）
正答率（ACC）： 77.5%
コンペの成績：7 / 30クラス
順位 11位/34人
（上位４割以内）

学習期間：3日

試作品（精度が出るまで）：10日 （13日）

現在の成績まで：10日（23日）


# Page. 3

![Page Image](https://bcdn.docswell.com/page/V7P6DVY2J8.jpg)

成果物の作成について


# Page. 4

![Page Image](https://bcdn.docswell.com/page/2JV31ZGXEQ.jpg)

データセットについて
出典：情報・システム研究機構 データサイエンス共同利用基盤施設 人文学オープン
データ共同利用センター『顔コレデータセット』, DOI:10.20676/00000353.
画像データ：256x256, 24bit （学習データ：4,238枚、試験データ：1,060枚）
• 画像の枚数が少ない（一般に分類一つあたり、最低、1,000枚は必要）
• 全体的に男性の画像が多いなど、分類に偏りがある
• 「女性×武士」は１枚しかない
• 見分けのつかない画像もある


# Page. 5

![Page Image](https://bcdn.docswell.com/page/5EG3248R7L.jpg)

開発環境
ソフトウェア
• Python
3.7.x
• Tensorflow
2.x
（-DirectML, -Metal）
• matplot lib
3.5.x
• numpy
1.21.x
• Pandas
2.0.x
• Scikit-learn
1.4
アーキテクチャ：事前学習済みモデル（ImageNet）
• mobile-net
• DenseNet121
• VGG19
ハードウェア
⚫ Google Colab（無課金、T4GPU）× ３ （Linux）
⚫ Lenovo 「IdeaPad Flex 5 14ALC7
(2022年製)」 （Windows11 HOME）
演算装置：AMD Ryzen 7 5700U with Radeon
Graphics 1.80 GHz
• Frequency （ Base:1.8GHz, Max 4.3GHz ）
• Cores : 8, Threads : 16, Cache : 4MB L2 /
8MB L3
⚫ MacBook Air M1 2020
演算装置：Apple M1チップ
• Frequency：3.2GHz
• CPU Cores：8, GPU Cores：7


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4JQ5PG9Y7P.jpg)

解析の流れ
計算条件
：50（Early Stopping）
⚫
Epoch
⚫
ミニバッチサイズ ： 50枚
⚫
最適化手法
： Adam（学習率 = 0.001）
⚫
データ拡張
： 水平反転、回転、拡縮
⚫
交差検証
： 9 回（層化K-分割交差検証）
⚫
学習期間：3日
⚫
試作品（精度が出るまで）：10日 （13日）
⚫
現在の成績まで：10日（23日）


# Page. 7

![Page Image](https://bcdn.docswell.com/page/K749Y5XZE1.jpg)

畳み込みニューラルネットワーク（CNN）に
ついて
• ディープラーニングとは「深いニューラルネットワークでの最小二乗法」である
（東京大学 松尾教授）
• ディープラーニングとは「非線形問題における最適化」である。
• CNNとは、学習中に画像にフィルタリング処理に加え、特徴量を自動的に検出する
ディープラーニングの一手法である。
東京大学 数理・情報教育研究センター, 二反田篤史, , 「3-4 深層学習の基礎と展望」,
http://www.mi.u-tokyo.ac.jp/pdf/3-4_dl_basic_and_future.pdf, 2021 から


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LJ1K6WND7G.jpg)

心掛けたこと
⚫ 泥臭くても、「一歩、一歩」と確実に進めていく！！
⚫ 解答（過去の同じコンペの記事）をすぐに見ない！！
⚫ 理屈があっているなら、自分が選んだツールで結果を出す！！
⚫ 無課金で勝つ！！（与えられた環境を十分に活かす練習）
当初はラベルデータ（CSVファイル）からExcelでバッチファイルを作成し
て、学習用画像を各フォルダに振り分けデータセットを作成していた。
→ 現在ではPythonでデータセットの作成可能。


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GJWDW64872.jpg)

苦労、実践したこと
開始時期 ： CNNとはなんぞや？ ＆ なんでディープラーニングが良いのか？
実装時期
1.
GPUメモリにデータが乗り切らず、精度がでない （クリア後、試作段階が完成）
→ ミニバッチでデータを分割し学習させる(TensorflowのimageDataGenerator型）
2.
データ数が足りない。
→ データ拡張（Data Augmentation：DA）を適用
3.
一回学習させた程度では、十分な精度を得られない。
→ 交差検証（Cross Validation：CV）を導入
4.
データに分布の偏りがある。
→ CVの層化K-分割交差検証を用いる
5.
正答率（ACC）： 77.5%、LB：0.7764
コンペの成績：7 / 30クラス
順位 11位/34人
（上位４割以内）
単体のモデルだけでは、どうしても６位までしかいけない
→ 複数のモデルを作成して、アンサンブル（多数決）をとる


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4EZG5Y29J3.jpg)

苦労、実践したこと
開始時期 ： CNNとはなんぞや？ ＆ なんでディープラーニングが良いのか？
実装時期
1.
GPUメモリにデータが乗り切らず、精度がでない （クリア後、試作段階が完成）
→ ミニバッチでデータを分割し学習させる(TensorflowのimageDataGenerator型）
2.
データ数が足りない。
→ データ拡張（Data Augmentation：DA）を適用
3.
一回学習させた程度では、十分な精度を得られない。
→ 交差検証（Cross Validation：CV）を導入
4.
データに分布の偏りがある。
→ CVの層化K-分割交差検証を用いる
5.
正答率（CV）： 80.8%、LB：0.8688
コンペの成績：4 / 30クラス
順位 6位/34人
（上位2割以内）
単体のモデルだけでは、どうしても６位までしかいけない
→ 複数のモデルを作成して、アンサンブル（多数決）をとる


# Page. 11

![Page Image](https://bcdn.docswell.com/page/Y76Y9DVDEV.jpg)

苦労、実践したこと
開始時期 ： CNNとはなんぞや？ ＆ なんでディープラーニングが良いのか？
実装時期
1.
GPUメモリにデータが乗り切らず、精度がでない （クリア後、試作段階が完成）
→ ミニバッチでデータを分割し学習させる(TensorflowのimageDataGenerator型）
2.
データ数が足りない。
→ データ拡張（Data Augmentation：DA）を適用
3.
一回学習させた程度では、十分な精度を得られない。
→ 交差検証（Cross Validation：CV）を導入
4.
データに分布の偏りがある。
→ CVの層化K-分割交差検証を用いる
5.
正答率（CV）： 80.8%、LB：0.8830
コンペの成績：2 / 30クラス
順位 2位/34人
（上位1割以内）
単体のモデルだけでは、どうしても６位までしかいけない
→ 複数のモデルを作成して、アンサンブル（多数決）をとる


# Page. 12

![Page Image](https://bcdn.docswell.com/page/G75GN3D874.jpg)

モデル毎の損失関数の値と正答率の推移
mobile-net CV = 80.8% Time = 2hour
Loss
DenseNet121 CV =78.4% Time = 4.7hour
Loss
Accuracy
Accuracy
VGG19 CV =76.0% Time = 10hour
Loss
Accuracy


# Page. 13

![Page Image](https://bcdn.docswell.com/page/9J2Y5Z8VJR.jpg)

成果物について（再掲）
日本画に描かれた人物を複数クラスに分類する学習器（モデル）を深層学習で作成
正答率： CV = 80.8％ （Ensambled）、 スコア： LB = 0.8830
コンペの成績 順位 2位（34人中）

学習期間：3日

試作品（精度が出るまで）：10日 （13日）

現在の成績まで：10日（23日）


# Page. 14

![Page Image](https://bcdn.docswell.com/page/DEYGKR6QEM.jpg)

今回の振返りと今後について
⚫ 結果を出したので過去のコンペ記事を解禁すると上位者は、「性別」と
「階級」で分けて学習器をそれぞれ複数作成し、２段階でアンサンブル
をしていたようだった。
→ 当時のLBは0.9000ポイント以降が上位をひしめき合っていたので、
自分の成績では３位以内に入れなかっただろう。
⚫ 今回でDNNの一手法とツールの使い方がわかったので、他分野（信号
データなどの時系列分析やテキスト分析）にも広げたい。
⚫ 一方で、これまで習得したテーブルデータと画像の機械学習について
複雑な課題に取り組みレベルを上げるとともに、直接的に企業へ売り
込める作品を製作していきたい。


# Page. 15

![Page Image](https://bcdn.docswell.com/page/VJNGRDZ278.jpg)

売込みポイント
⚫ 新しい技術や概念を習得できる能力
大学院で培われた、技術開発の経験
⚫ とにかく、早く、試作品を作成できる能力
公務員時代に培われた、手堅く進めて個々を積み上げる手法
（古い意味でのハック：Hack）
⚫ ざっくりと大枠を理解し、説明できる能力
学生時代からの心掛け
⚫ 仮説と検証を積み重ねる能力
これまでの人生で培ってきたもの


# Page. 16

![Page Image](https://bcdn.docswell.com/page/YE9WMGZDE3.jpg)

ご清聴ありがとうございました


# Page. 17

![Page Image](https://bcdn.docswell.com/page/GE8NLV157D.jpg)

参考にした情報源
公式情報

Tensorflow公式リファレンス（日、英）
・・・ https://www.tensorflow.org/

MicroSoft Learn（英）
・・・ https://learn.microsoft.com/en-us/windows/ai/directml/gpu-tensorflow-plugin

Apple Developper（英）
・・・ https://developer.apple.com/metal/tensorflow-plugin/
ブログなど

Qiita（日）
・・・ https://qiita.com/

teratail（日）
・・・ https://teratail.com/

Stack Overflow（日、英）
・・・ https://stackoverflow.com/

Kaggle（英）
・・・ https://www.kaggle.com/

Analytics Vidhya（英）
・・・ https://www.analyticsvidhya.com/blog/

Medium（英）
・・・ https://medium.com/

GitHub（日、英）
・・・ https://github.com


