AIと機械学習、画像認識のまとめ

これは [フェンリル デザインとテクノロジー Advent Calendar 2023](https://adventar.org/calendars/9360) 10日目の記事です。


2023年にフェンリルに入社したウェブエンジニアのyukiです。


昨年まで１年ほど画像認識系の会社にインターンを通じて関わっていました。そこでは主にデータ収集、加工から学習、結果の比較検討までを担当しました。


機械学習の業界から離れ、ウェブエンジニアとして出発した今だからこそ知識を再整理したいと思い、今回の記事では最近話題の人工知能と機械学習の違い、画像認識の種類などについて書きます。なお、中身のアルゴリズムの構築等は専門的に行っていないため、正しい知識と異なる点があるとは思いますがご了承ください。


# AI（人工知能）と機械学習の違い
## AI（人工知能）
> 人工知能は、通常は人間の知性を必要とするような方法で、または人が分析できないような規模のデータを扱う方法で、推論、学習、行動を行えるコンピュータとマシンの構築に関する科学分野です（[人工知能（AI）とは](https://cloud.google.com/learn/what-is-artificial-intelligence?hl=ja)より引用）。

>[人工知能](https://cloud.google.com/learn/what-is-artificial-intelligence?hl=ja)は多くの場合、それ自体がシステムと考えられていますが、複雑な問題を解決するために推論、学習、および行動できるようにするために、システムに実装された一連のテクノロジーです（[人工知能（AI）と機械学習（ML）の比較](https://cloud.google.com/learn/artificial-intelligence-vs-machine-learning?hl=ja)より引用）。


要約すると、AIは単一の機能を実現するものではなく、幅広いさまざまな事象に対して人が扱えない規模のデータ等を用いて解決方法を導き出すものです。今話題の ChatGPTなどの大規模言語モデルは、人工知能に当たると思います。


## 機械学習
> [機械学習](https://cloud.google.com/learn/what-is-machine-learning?hl=ja)は、人工知能（AI）のサブセットで、機械またはシステムが経験から学習して改善を自動的に行えるようにします。明示的なプログラミングの代わりに、機械学習はアルゴリズムを使用して大量のデータを分析し、分析情報から学習してから、情報に基づいた意思決定を行います。
>機械学習アルゴリズムでは、時間の経過とともにパフォーマンスが向上し、より多くのデータが公開されるようになります。機械学習モデルは、出力データ、つまりトレーニング データに対してアルゴリズムを実行することでプログラムが学習するものです。データ使用量が多いほど、モデルの精度が向上します（[人工知能（AI）と機械学習（ML）の比較](https://cloud.google.com/learn/artificial-intelligence-vs-machine-learning?hl=ja)より引用）。


要約すると、機械学習は人工知能の一部であり、システムが自律してデータを学習・改善し、分析結果から情報に基づいた意思決定を行うものです。

私が関わった画像認識というジャンルは、こちらの機械学習の一部になります。



# 画像認識
画像認識の種類について大まかに紹介します。


## Classification
1つ目は、Classification（画像分類）です。こちらは1枚の画像がどのようなものに当てはまるのかを推測するものです。


例えば、AかBかを自動で判別させたいという時に使えるものになっています。工場では異物の混入の検知などで使われています。主なモデルとして、ResNetやMobileNetなどが有名です。どちらかというと少し古いイメージがあります。

## Object Detection



2つ目は、Object Detection（物体検知）です。こちらは1枚の画像の中に事前に学習した特定の要素を検出し、それをバウンディングボックスとクラス名、信頼度を推測するものです。


![yolo.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764631/9b877b82-dfa1-dc94-2a3e-15cd43bb422e.jpeg)


(https://github.com/ultralytics/yolov5 より引用)


上記の画像はObject Detection+segmentationの結果が出力されています。赤色と緑色の線で囲った四角のクラス名（Person, tie）と信頼度（0.9, 0.89, 0.73）が出力されているものになります。主なモデルとしてYolo（you only look once）などが有名です。


実際の事例としては、交通量調査の車両のカウントや工場等の異常検出、顧客分析、人流検知などがあります。Object Detectionをメインで扱っていたため、この画像を見ると懐かしい気持ちになります。


## Segmentation
3つ目は、Segmentationです。

![yolo.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764631/1e7255de-8cbc-8dc4-d9a0-d39c01b41015.jpeg)


(https://github.com/ultralytics/yolov5 より引用)


上記の画像の人物が赤色の線で囲った領域で重ねられている部分があるものがSegmentationの出力結果です。


SegmentationはObject Detectionとは違って出力結果がより細かく物体を特定して出力されていることが分かると思います。こちらの主なモデルとしてMask R-CNNがあります。実際の事例としては、医療分野でのMRIのような病気検知などで使われることがあります。


改めてSegmentationについて調べてみると、現在は、Semantic Segmentation、 Instant Segmentation、Panoptic Segmentationの３種類があります。中には個別の領域にそれぞれIDが振られ、認識できるようなものもできているようです。

ReID（Person Re-Identification）と呼ばれる人認識の分野では、背景等のノイズ除去のために使用することなどがありました。

## 感想
AIと機械学習、特に画像認識の分野の知識の再整理をしました。振り返るにあたって、さまざまなリポジトリや記事を見ましたが、業務で使っていた時よりもどんどん技術が進んでいるなという印象を持ちました。


この記事ではあまり書いていませんが、自分の好きな分野であるReIDでは、生成AIほどの急成長はないものの、さまざまなアプローチから衣服交換問題や前から見る姿と後ろ姿の違い等の課題を解決していく動きがありました。今後、一気に急進化する可能性があるため、今後ともしっかりチェックしていこうと思います。


参考資料：

[人工知能（AI）とは](https://cloud.google.com/learn/what-is-artificial-intelligence?hl=ja)
[人工知能（AI）と機械学習（ML）の比較](https://cloud.google.com/learn/artificial-intelligence-vs-machine-learning?hl=ja)
[Yolov5公式リポジトリ](https://github.com/ultralytics/yolov5)
[画像分類・物体検出・セグメンテーションの比較](https://data-analysis-stats.jp/%E6%B7%B1%E5%B1%9E%E5%AD%A6%E7%BF%92/%E7%94%BB%E5%83%8F%E5%88%86%E9%A1%9E%E3%83%BB%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA%E3%83%BB%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%AF%94%E8%BC%83/)
[【Person Re-Identification】 CVPR2022 論文まとめ](https://qiita.com/shiro-manju/items/a029fabc8680e65ea2cb)
[CVPR2019でPerson Re-Identificationの話をしている論文全てに1人で目を通す(加筆修正中)](https://qiita.com/TodayInsane/items/818af421a224fa463c84)