きゅうりの仕分けから始めるAI(2022.5.29)

# 前置き
　一個人のまとめです。間違いや勘違いがあると思いますので、ご注意下さい。建設的な批判、アドバイス、ご意見等は有難くお受けします。よろしくお願いします。
　自分は全体を軽く把握してから、まとめていきたいので、個別の事象よりは一つの出来上がった物やシステム、制度・政策から見がちです。ただ、それをやっていくと歴史を見てみたくなり、私にとって、まとめるのに途方もない学習コストがかかります。G検定をまとめる際は、個別の事象や政策が丁度良い粒度の様に思えます。
# 背景
　前置きが長くなりました。上でも触れましたが、G検定の全体を把握しつつ、学習を進める為、ディープラーニングでは有名過ぎる「きゅうりの仕分け」の例を取り上げます。
# 概要
まずはこちら([Google Japan(2022.5), デジタルの力で日本の未来にさらなる可能性を。- AIが切り開く農業の未来 -, YouTube](https://youtu.be/Z5I0RuB4K1U))をご覧下さい。こちらの動画(1:57時点)で見ると、きゅうりを物体検出で仕分けている様です。次に物体検出について見ていきます。
# きゅうりの仕分けに使われている技術：物体検出とは
キーワード：画像認識、物体検出
## 概要
詳細はこちら([Ryo Tanohata(2022.5), "物体検出とは", Qiita](https://qiita.com/tan0ry0shiny/items/7f766d72c3774fd0ac0a))に記載します。
簡単に説明させて頂きますと、「物体検出の技術を使って、きゅうりの大きさを分類している」と言えそうです。先程紹介した動画を見てみると、複数のきゅうりを一度に分類しています。物体検出のタスクは「一枚の画像の中にある複数の物体を同時に検出する」事なので、動画中には物体検出というワードは出てきませんが、確かに物体検出をやっている様です。
## 物体検出の手順：領域探索、特徴量抽出、画像分類、出力調整
ざっくり順を追って説明します。
1. 入力画像を読み込んだら
1. 詳細に分析する個所(領域)を検出します。これは「Region Proposal」と言われます。
1. 検出した領域の画像をモデル(CNN)で学習します。これを「教師あり事前学習」と言うみたいです。
1. 学習したモデルで物体検出を行います。最終的には画像分類のラベルと検出した領域の位置とサイズが出てきます（この部分は憶測が混じっているので後日、確認して修正します）。


物体検出はこのような流れですが、G検定に出てくるのは物体検出のベースとなる画像分類の方が多そうです。次に画像分類を見ていきます。

## 画像分類
画像分類は、第3次AIブームのきっかけになったのもあるのか、要素技術まで突っ込んでいる気がしています。詳細は別の記事にお任せして、ここでは軽く要素技術に触れたいと思います。まずは、画像分類の流れを見ていきます。
1. 画像の読み込みます。
1. 前処理：モデルの入力サイズに合わせる、等します。
1. 学習：CNN（畳み込みニューラルネットワーク）で学習します。
1. 予測：学習したモデルを使って、予測したい画像の分類をします。

ざっくり過ぎて不安になると思いますが、画像分類だけだったらこの流れで十分だと思います。次にG検定で出てくるような要素技術について見ていきます。前処理でも正規化や水増し等いろいろ考えられますが、ここではCNNの基本的な構造を見ていきます。

## CNN(Convolutional Newral Network：畳み込みニューラルネットワーク)に出てくる要素技術
キーワード：CNN、畳み込み層、プーリング層、全結合層、準伝搬、逆伝搬、活性化関数、誤差関数

詳細は[別の記事](https://qiita.com/hara_tatsu/items/8dcd0a339ad2f67932e7)にお任せします。後日自分でも作りますが未定です。ここでは簡単にCNNを構成する要素を見ていきます。また、「[ヨビノリ(2022.5), "高校数学からはじめる深層学習入門(畳み込みニューラルネットワークの理解)", YouTube](https://youtu.be/xzzTYL90M8s)」が分かり易かったので、引用させて頂きます。座学だけではディープラーニングの具体的な構造がイメージし辛いと思います。大変お見せ苦しいのですが、最低限の事は書いてあると思いますので、コードも載せておきます。「[Ryo Tanohata(2022.5),CNN_CIFAR10_Keras.ipynb](https://colab.research.google.com/drive/1_yltniaJxjGKgTchzwe1wrhdYKYm8VPc?usp=sharing)」
1. 活性化関数
1-1. rele関数：
1-2. softmax関数：出力を確率に変えます。例えば、上のリンクでは10クラス分類なので、10個のラベルについて確率が出力されますが、全部足すと1になります。)
1. 畳み込み層：カーネルを用いて特徴量を抽出します。実際にどのような計算をしているかは「[Ryo Tanohata(2022.5),"畳み込み層について(2022.4.26)",Qiita](https://qiita.com/tan0ry0shiny/items/34767ab4e09369f72c50)」を参照下さい。
1. プーリング層：畳み込み層で得られた特徴量をより強調します。処理としては$n\times n$の最大値だけを取っていきます。これをmaxプーリングと言います。
1. 全結合層：
1. 誤差関数：交差エントロピー(教師データと出力が違うと大きな値が返ってきます。)

# まとめ
有名なディープラーニングの実例である「きゅうりの仕分け」について見ていきました。あくまでG検定での勉強の一環なので、物体検出というより画像分類の方を詳しく見ていきました。流れとしては
1. キュウリ農家でAIを使用した例を見ました｡
1. 物体検出について軽く触れました｡
1. 画像分類について軽く見ていきました｡
1. 画像分類の要素技術について､コードを交えて見ていきました｡

# 感想
有名なディープラーニングの実例である「きゅうりの仕分け」について見ていきました。あくまでG検定での勉強の一環なので、物体検出というより画像分類の方を詳しく見ていきました。と言っても掘り下げようと思うともっと掘り下げられますし、AIの農業への利用は他にも見ていく必要があります。まだまだ不完全ではありますが、これを始めに膨らませていく予定です。不完全な部分は随時更新します。ご指摘・アドバイス等ありましたら大変助かります。
こちらは[G検定についてまとめている記事](https://qiita.com/tan0ry0shiny/items/8c6bf6d7c03ae268679a)です｡実例がやっと一つ出来た気がしています｡ただ､粗すぎるので修正が必要なのはいうまでもありません｡

# 参考
1. [Google Japan(2022.5), デジタルの力で日本の未来にさらなる可能性を。- AIが切り開く農業の未来 -, YouTube](https://youtu.be/Z5I0RuB4K1U)
1. [小林(2022.5),"実践Deep Learning：物体検出",YouTube](https://youtu.be/5nmVHoA-A2E)
1. [Ryo Tanohata(2022.5),"畳み込み層について(2022.4.26)", Qiita](https://qiita.com/tan0ry0shiny/items/34767ab4e09369f72c50)
1. [ヨビノリ(2022.5), "高校数学からはじめる深層学習入門(畳み込みニューラルネットワークの理解)", YouTube](https://youtu.be/xzzTYL90M8s)
1. [Ryo Tanohata(2022.5),CNN_CIFAR10_Keras.ipynb](https://colab.research.google.com/drive/1_yltniaJxjGKgTchzwe1wrhdYKYm8VPc?usp=sharing)
1. [Ryo Tanohata(2022.5),G検定をまとめる(2022.4.14~),Qiita](https://qiita.com/tan0ry0shiny/items/8c6bf6d7c03ae268679a)