ニューラルネットワークの登場によって、AI技術はより幅広い発展をしています。その中でも画像認識の技術は自動運転や不良品検知、画像生成などさまざまな分野で活用されており、生活や仕事の身近な分野で価値を創出しているのです。
本記事ではそんな画像認識技術で使用されている「畳み込みニューラルネットワーク(CNN)」について紹介していきます。
目次
1.畳み込みニューラルネットワーク「CNN」とは
畳み込みニューラルネットワーク(CNN:Convolutional neural network)とは、「ディープニューラルネットワーク(DNN:Deep neural network)」の1つです。ディープニューラルネットワークとは、「入力層」「中間層」「出力層」で3階層で構成されるニューラルネットワークの層をより複雑な多層構造にすることでより性能を高めたものを指します。
フィルタリングにより画像の特徴抽出を行う「畳み込み層」という処理を持つことが「畳み込みニューラルネットワーク」と呼ばれる由来です。
機械学習との関係性
AI技術にとって欠かせない機械学習の一つに深層学習(ディープラーニング)という手法が
あります。ディープラーニングに活用される技術にニューラルネットワークがあり、そのうちの技術の1つがCNNです。
機械学習とCNNは親子のような関係性であると考えれば良いでしょう。
CNNの構造
CNNの構造について、通常のDNNと比較して紹介していきます。
【CNN】
構造:「畳み込み層」→「プーリング層」→「全結合層」
用途:「一般物体認識」と呼ばれる画像認識のタスクや動画の認識・分類が主な用途です。
【DNN】
構造:「入力層」「複数の中間層」「出力層」
用途:音声や自然言語の処理など多様な機械学習のタスクに用いられています。
DNNは中間層次第でさまざまな適用範囲がありますが、CNNは「畳み込み層」「プーリング層」といった独自の画像処理に特化していることが一番の特徴です。
CNNの特徴とメリット・デメリット
特徴
CNNの特徴は「画像認識に特化していること」になります。構造で示した「畳み込み層」「プーリング層」で行っている処理は人間が視覚情報を処理する際の仕組みを参考に作成したものです。
通常の機械学習では画像に対するフィルタリングなどの処理で学習量が増えてしまい困難であった画像認識をニューラルネットワークの活用することで再現しています。
専用のアルゴリズムを構築するのに学習を必要とする代わりに画像認識の分野では高い性能を発揮できるのです。
メリット
CNNを活用するメリットは「高精度の画像認識」になります。
詳しくは次章で解説いたしますが、CNNの処理は畳み込み層で「局所的な特徴を抽出」、プーリング層で「特徴の位置に関係ない抽出を実現」、全結合層で「畳み込み層とプーリング層の出力を総合的に判定」という流れです。
これによって、「顔認証」「動物や建造物などの物体の検出」「医療画像などの専門的な画像解析」などの位置や大きさに左右されない複雑なパターンの検出を可能にしています。また、学習が成功すれば、新たなデータに対してもすぐに適応でき、リアルタイムでの処理も実現可能です。
そのため、自動運転や監視システム、自動生成ツールなどさまざまな分野に活用できます。
デメリット
CNNのデメリットは「学習データとリソースの増大」「過学習のリスク」「ブラックボックス問題」です。
まず、「学習データとリソースの増大」ですが、複雑な画像認識に対応できるようにするためには、大量の学習データが必要であり、学習データの量に比例して、処理に必要なリソースも増えてしまいます。
次が「過学習のリスク」です。過学習とは、学習データから過剰な訓練を行ってしまうことで新しいデータに対する予測の精度や能力が低下する現象を指します。複雑な処理には大量の学習が必要であり、使用されるデータに偏りがあると過学習が発生しやすくなるため、データの選定には最新の注意が必要です。
最後の「ブラックボックス問題」とは、学習や判定を行う過程がわからず、過学習や学習・判定の失敗などの原因がわからなくなる現象を指します。他のニューラルネットワークでも共通しますが、複雑なアルゴリズムを使用する場合、学習後の処理過程をひも解くことはとても困難です。
CNNはこれらをしっかり理解した上で活用しましょう。
関連記事
機械学習と深層学習(ディープラーニング)の違い|基礎から活用例をわかりやすく紹介
2.CNNの仕組み
CNN独自の要素である「畳み込み層」「プーリング層」「全結合層」の仕組みと構造についてそれぞれ紹介していきます。
畳み込み層(convolution)
この層の役割は、各ピクセルをフィルタリングして、特徴量を抽出する「画像の畳み込み」です。
具体的には周りのピクセルとの関連性を見つけ、形状や色の変化などの部分的な特徴の検出を行います。それにより、画像の情報を損なわずに認識に必要な特徴の取得が可能です。
また、各ピクセルに対して行うフィルタリングは同じなので、統一的なパラメータを共有して、過学習や複雑化を防ぐという特徴もあります。
プーリング層(pooling)
ここでの役割は、畳み込み層で抽出された特徴が画像内の移動していても関係なく検知できる「移動不変性」の付与と「情報の圧縮」です。
具体例を画像データに人間が「いるか」「いないか」を分類する場合で考えてみましょう。
画像データから人間を検出する際、人間が画像のどの位置に写っているかは関係ありません。
しかし、畳み込み層の処理だけでは周りのピクセルに関する情報などにより、画像内での人間の位置に左右されてしまいます。そのため、プーリング層が判別に必要な特徴は保持しつつ、位置に関する情報をなくす役割を担うのです。
全結合層(Affine)
全結合層はニューラルネットワークの出力層にあたる部分で「最終決定とその出力」が役割です。
前の畳み込み層やプーリング層から出力される複数の情報には、判定に対する関連性の深さや重要度などの重みが付与されております。それらの情報を統合することでより高度な判定や予測といった結果の出力が可能です。
上記を成立させるために大切な要素があります。それが以下の考え方です。
活性化関数
受容野
重み共有
それぞれの要素についても解説していきます。
活性化関数
活性化関数は、他のニューロンから入力された値を出力する前に別の数値として変換する関数のことです。主に全結合層で使用される関数で、重要性や優先度などの重みのついた入力値(加重和ともいう)を活性化関数で変換し、さまざまな出力方式への対応を行います。
警察の捜査をイメージして考えてみましょう。
捜査では物証や被告人の行動などの多種多様な証拠(入力)を集めた上で「犯人の可能性が84%」「犯人でない可能性が16%」のため、起訴(出力)という結果を導き出します。その際のさまざまな入力から確率を導く際の計算式が「活性化関数」です。
受容野
人間の脳が視覚情報を処理する際には網膜と接続されている「単純型細胞」「複雑型細胞」を必要とし、それらによりニューロンに影響を与える網膜上の領域を「受容野」と呼びます。
受容野において、単純型細胞は部分的な特徴を検出することが役割です。しかし、同じ特徴があっても、位置が違うと検出が困難であるという欠点があります。例えば、正面から見た犬と正面以外から見た犬が同じ犬であっても、その判断ができないのです。
そこで活躍するのが複雑型細胞になります。複雑型細胞は同じ特徴を持つ要素を位置に関係なく同じであると判断が可能です。
気づかれた方も多いと思われますが、単純型細胞は「画像の畳み込み」を、複雑型細胞は「移動不変性の付与」を行っています。この2つの働きは畳み込み層とプーリング層の基となっているのです。
重み共有
重み共有とは、「画像から検出された重要な特徴は位置に関係なく高確率で重要である」という手法を指します。畳み込み層に活用され、この手法を取り入れることにより、学習の際に必要なパラメータの減少が可能です。
具体例を画像内の猫を検出する場合で考えてみましょう。
重み共有を活用しない場合、さまざまな位置に写っている猫をそれぞれ別のフィルタで学習し、複数のパラメータを扱うことになります。その場合の同じ要素なのに別のパラメータで扱うため、複雑な学習が必要です。
しかし、重み共有を活用する場合、それぞれの猫の検出で使用するフィルタを同じにできるようにします。そうすれば、パラメータを統一して学習の難易度を格段に下げることが可能です。
以上のことからも、重み共有は畳み込み層の学習を最適化するにあたって欠かせない要素になります。
3.CNNの学習方法
CNNの学習手法では「誤差逆伝播法」「勾配降下法」の利用が代表的です。それぞれ、解説していきます。
誤差逆伝播法
誤差逆伝播法とは、「判定する際の精度向上」を目的とする学習手法の1つです。実際に出力された結果と期待する結果を比較し、重みやバイアスを改善していきます。
例えば、10メートル先に自動車を移動させたい場合、9メートル移動したとすると期待値との誤差は-1メートルなので、この誤差をもとにアクセル操作をプラスして(バイアスを変えて)、再実施するでしょう。
この誤差を0にするためのバイアスの計算を行うのが、この学習手法です。
具体的には、以下のような流れになります。
初期値で実施
出力結果と期待値の誤差を計算(プラスマイナスを無視するため微分して計算)
誤差を0にするため、パラメータにバイアスを付与
バイアスを付与したパラメータで再実施、誤差の再計算
誤差が減少した場合:同じようにバイアスを付与
誤差が増加した場合:逆のバイアスを付与
誤差が0の場合:付与したバイアスを出力
この手法により、検出した特徴に合わせたバイアスを畳み込み層やプーリング層での出力に付与し、それをもとに全結合層が結果を導き出すのです。
勾配降下法
勾配降下法とは、機械学習での「パラメータ更新の最適化」で活用される学習手法の1つです。主な用途は、ある関数で最小化または最大化を行うための最適なパラメータを見つけるなどになります。
例えば、損失関数が最小となる場合で考えてみましょう。
損失関数とは予測値と正解値の誤差を求める関数で、2乗誤差などの2次関数で表されることが一般的です。
流れとしては以下のようになります。
損失関数をA、調整パラメータをbとしてグラフを作成
収束条件の設定
初期パラメータを設定
初期パラメータでの勾配を計算(偏微分を使用)
勾配から次のパラメータの設定
収束条件に基づく収束チェック(収束していない場合は3に戻る)
最適化されたパラメータの出力
CNNでは畳み込み層でのフィルタリングや全結合層の活性化関数などで活用が可能です。
4.CNNの活用事例
類似画像の検索機能
身近な活用事例としてあげられるのが、Googleレンズやホットペッパービューティーアプリなどで使用されている類似画像の検索機能です。これらはCNNの活用により、指定した画像内にある特徴を検出し、類似の要素を持つ画像を表示してくれます。
例えば、ネイル画像を基にすると色やデザインなどの特徴を検出して、同じ色のネイルや似たデザインのネイルを表示してくれます。
顔認証システム
最近ではスマートフォンやPCなどに標準で搭載されるようになった顔認証システムも活用事例の1つです。
CNNにより、顔の輪郭や目、鼻、口などの特定部位などの特徴やパターンを高い精度で学習することが可能となりました。
現在では、一般向けのスマートフォンやPCへのログイン以外にも、ライブの入場や会社内の入退室などの高いセキュリティを必要とする分野でも活用が可能です。
画像の自動生成ツール
最近話題の画像やイラストの自動生成ツールにもCNNが活用されております。
これは基礎となる画像と表情や構図などに関する情報を入力することでCNNが学習し、新たな画像を生成してくれるツールです。最近では水彩画や油絵などの「絵画風」やアニメーションの追加といった機能を持っているツールも登場しています。
自動運転技術
次に紹介するのが自動運転技術への活用です。
近年登場した自動運転可能な車両や運転サポート機能がついた車両には、さまざまな個所にカメラが設置されています。CNNを活用しているのは、そのカメラから得た情報を基に自動運転の操作やサポートのタイミングです。
具体例としては白線の位置や人・動物・車両などの障害物、道路標識などを検出して警告を出したり、ブレーキなどの操作をサポートしてくれます。
画像診断
医療現場や生産工場などにおける異常の検出にもCNNは活用されています。
医療現場では、レントゲンや患部の画像などから得た特徴から異常部分や病状の変化などを検出して病気の可能性を判断するといった役割です。
がんや生活習慣病の早期発見にも貢献し、医師の診断サポートとして活躍しています。
生産工場での役割は、製品に異常が確認された場合の仕分けや生産設備の異常を検知し、警告や動作の一時停止などです。
不良品の減少や品質改善、故障前のメンテナンスなどで活躍しており、工場内の安全性向上にも貢献しています。
関連記事
機械学習とは?3種類の学習手法と10のアルゴリズム、活用例を紹介
PythonでAI開発!【初心者向け】ライブラリの紹介学習のヒント、未来展望など解説
5.CNNの最新動向
CNNの課題
CNNの課題はデメリットで紹介した「学習データとリソースの増大」「過学習のリスク」「ブラックボックス問題」もありますが、実用化するにあたって問題となっているのが「技術面の問題」です。
これはCNNの畳み込み層とプーリング層の欠点でもある「ノイズへの弱さ」にあります。
具体的には画像内のノイズにより「特徴の検出漏れの発生」「情報圧縮時に特徴部分の削除」が起こり、判定の失敗や別のものとして検出されるなどの問題が発生するのです。
医療分野や自動運転の画像認識ではカメラの性能や撮影対象の状態などの条件により、予期していないノイズが入ってしまう場合があります。それにより、ノイズに関する情報も学習してしまい、期待する結果を得られなくなり、学習のやり直しが必要になるのです。
他にもプーリング層で位置情報をなくすため、レントゲン写真などでその位置に「あってよい要素」「あってはならない要素」を判定することが難しくなります。その場合、別のアルゴリズムや応用的なCNN技術の開発などが必要です。
今後の発展
前述の活用事例以外にも活躍する可能性があるのが、教育や福祉、公共サービスの分野になります。
教育では、生徒の状態(表情、筆跡、学習の速度など)を認識することで、理解度や精神状態を知り、より最適化された学びを与えるきっかけを作ることが可能です。
福祉では、視覚障害者に周囲の状況を認識して説明したり、表示されている文字の読み上げなどがあげられます。それ以外にも高齢者や障害者の生活や行動のパターンを認識して、異常の検知による病院や家族への連絡、自動運転などのサポート機能を応用した車いすや介護ベッドの操作支援なども可能です。
公共サービスでは、監視カメラとAIの組み合わせによる犯罪の防止や災害時の迅速な状況把握による支援が可能になります。
その代わり、プライバシーポリシーやAIが原因での問題発生時の対応などの新たな課題が出てくると考えられるため、細心の注意も必要です。
関連記事
AIにできること・できないことは?AIに仕事が代替される?その他活用事例を解説
6.まとめ
画像認識の分野において、CNNは欠かせない技術です。顔認識や自動運転、医療などのさまざまな分野への活用により、私たちの生活にも深くかかわってくることも考えられるでしょう。
他のAI技術もそうですが、仕組みや構造についてをしっかり理解した上で学習や活用を進めていくことが大切です。
CNNをきっかけに他のAI技術にも触れるのも良いと思います。
本記事が皆様にとって少しでもお役に立てますと幸いです。