自動運転技術や製造業界の不良品検知、また高クオリティな画像を一瞬で生成できる「画像生成AIツール」など、画像に関する機械学習技術は急激な発展を遂げています。
今回の記事は、そんな画像認識に欠かせない技術「CNN」の概要をわかりやすく紹介した内容になります。
機械学習との関係性や「DNN」との違い、また活用事例や注意点なども理解できるので、画像認識の知見を深めるために参考にしてください。
CNN(畳み込みニューラルネットワーク)とは?
CNNとは「Convolutional Neural Network」の頭文字から作られた造語で「画像認識や音声認識で使われている技術」の名称です。「畳み込みニューラルネットワーク」という名称でも知られています。
おおまか「より高性能になったニューラルネットワーク」という認識で差し支えないでしょう。実際にCNNはディープラーニングの技術であるニューラルネットワークに、畳み込みの技術を追加したものだからです。
具体的には、処理工程が以下のように異なります。
名称 | 処理工程 |
ニューラルネットワーク | データ入力 → 入力層 → 中間層 → 出力層 |
CNN(畳み込みニューラルネットワーク) | データ入力 → 畳み込み層 → プーリング層 → 全結合層 |
畳み込み層では画像の特徴を抽出するためのフィルタを使用し、プーリング層では特徴マップを圧縮します。これにより画像の階層的な特徴を学習し、高度なパターン認識を実現しているのです。
くわしい構造については、本記事の中盤でも解説しています。
そもそも「ニューラルネットワーク」の概要について理解を深めたい方はこちらも参考にしてください。
CNN(畳み込みニューラルネットワーク)と機械学習の違い
「CNN」と「機械学習」は、そもそもの括り・関係性が違います。図にすると、次のようになります。
機械学習の中の技術として、ディープラーニングがあります。そしてディープラーニングの中の技術のひとつにニューラルネットワークがあり、ニューラルネットワークの技術のひとつがCNNというわけです。
そして機械学習技術を要する大きなITジャンルが、AI(人工知能)となります。
CNNとディープラーニングの違いについては、こちらの記事も参考になります。
CNN(畳み込みニューラルネットワーク)とDNNの違い
CNNとよく混同される技術として「DNN(Deep Neural Network)」というものがあります。両者の違いをまとめると、以下のようになります。
構造 | 用途 | |
CNN | データ入力 → 畳み込み層 → プーリング層 → 全結合層 畳み込み層とプーリング層が配置され、最後に全結合層が続く | 主に画像認識。また動画データの認識や分類にも使用される |
DNN | データ入力 → 入力層 → 隠れ層 → 出力層 隣接するすべての各層は前の層のすべてのニューロンと結合している | 音声認識や自然言語処理など、あらゆる機械学習タスクに使用される |
どちらもニューラルネットワークの進化系という認識で間違いないですが「CNNは画像認識に特化、DNNは汎用性が高くいろんなシーンで用いられる」という違いがあります。
CNN(畳み込みニューラルネットワーク)の構造
CNNの構造を図にすると、大きく以下のようになります。
CNNの最大の特徴は「畳み込み層」「プーリング層」そして「全結合層」が並んでいることです。それぞれの役割を見ていきましょう。
畳み込み層
畳み込み層の主な役割は「画像内の局部的な特徴の抽出」です。
まず入力された画像に対し、フィルターを適用して特徴を生成します。このフィルターは隣り合うピクセル上の関係性および局部的な特徴(エッジ、テクスチャなど)を抽出する機能をもっています。
また畳み込み層はがもつ特性は「パラメータ共有」です。さまざまな画像の位置で同じフィルタを使用して特徴を抽出しているため、学習パラメータを削減し過学習を防ぐことを可能にしています。
プーリング層
プーリング層は、主に以下の2つの役割を持っています。
- 位置の不変性の向上
- 情報圧縮
まず「位置の不変性の向上」とは、画像内の特徴が移動しても問題ないようにする機能を付け加えることです。
具体的には「プーリング」という技術を用いて、特徴の位置に対するネットワーク感度を低くしているのです。
そうすることでオブジェクトが画像内で移動しても、特徴を識別することが可能になります。
また「情報圧縮」とは、プーリング層が畳み込み層から得られた特徴を再サンプリングして情報を圧縮することです。
たとえば2×2のプーリングの場合、それぞれの2×2の領域から最大値を取り出して1つの値にまとめます。
これにより特徴のサイズが縮小されることで認識の精度が上がるメリットがあります。
全結合層
全結合層はニューラルネットワークにおいて、これまでのすべての層のニューロンと接続される層です。
主な役割は「最終的な出力の生成」となります。
直前の層からのすべての入力信号がニューロンに対して合計され、その合計値が活性化関数によって変換されて伝達されます。
これによって入力データの特徴が交わり、高度な結果の出力を実現しているのです。
このように全結合層は「ニューラルネットワークの中で情報を統合し最終的な意思決定を行う」という、重要な役割を果たしています。
CNN(畳み込みニューラルネットワーク)が活用されている事例
CNN(畳み込みニューラルネットワーク)は、画像認識が用いられるほとんどの場面で活用されています。
ここではとくに代表的な具体例として、以下の4つをご紹介します。
- スマホやパソコンの顔認証システム
- 画像・イラスト自動生成ツール
- 車の自動運転技術
- 医療現場での画像診断
スマホやパソコンの顔認証システム
ほとんどのスマートフォンやパソコンなどのデバイスに搭載されている顔認証システムは、まさにCNN(畳み込みニューラルネットワーク)の代表的な活用例といえます。
顔のパターンや特徴を学習し、顔の位置や形状、特定の部位の特徴を認識のうえ事前に登録しておいた本人の顔と参照するロジックです。
CNNによって高い精度での個人識別が可能になり、セキュリティや利便性の向上に貢献。
その高いセキュリティ性能の実現ゆえに、デジタルデバイスのみならず企業の入退室管理デバイスなどにも採用されています。
画像・イラスト自動生成ツール
画像およびイラスト自動生成ツールも、CNNが活用されているわかりやすい事例です。
これらのツールは一般的に、入力されたプロンプトや画像データに基づいて自動で画像やイラストを生成します。
CNNはプロンプトの内容や画像データの特徴を把握し、それを元に新しい画像を生成するプロセスで使用されます。
現代の画像自動生成ツールは「絵画調」や「アニメーション調」などの条件も指定できるうえ、さらには生成された画像内の人物の表情まで細かく調整可能です。
これもCNNの機能が存分に活かされている証拠といっていいでしょう。
画像生成ツールについてはこちらの記事で詳しく解説しています。
車の自動運転技術
CNNの代表的な活用事例なら、車の自動運転技術も欠かすことはできません。
自動運転車は周囲の環境を認識して安全な運転をサポートするため、あらゆる箇所に膨大な数のカメラやセンサーを埋め込んでいます。
CNNが使われるのは、そのカメラやセンサーから入力された画像データを処理し車の操作を制御するタイミングです。
たとえば車内のセンサーが道路上の標識や信号、歩行者や車両などの障害物を検出すると、それを運転手に知らせて注意を促します。
また白線をもとにした車両の位置推定などにも使用され、車の運転の安全性を大きく向上させています。
自動運転はとくに機械学習の進化速度が顕著にあらわれている分野でもあり、CNN技術のさらなる応用によって完全無人運転が実現する日もそう遠くないでしょう。
医療現場での画像診断
医療現場ではX線やCT、MRIなどの医療画像を解析し疾患や異常の検出や診断支援を行うためにCNNが利用されています。
具体的にはCNNが医療画像の特徴やパターンを学習して病変や異常部位を正確に識別することで、病気の可能性を正確に判断するといった具合です。
これによって乳がんの検出や糖尿病網膜症の早期診断など、さまざまな疾患の診断にも役立てられています。
また医師の診断支援にも活用され、診断の精度向上や効率化が図られています。
CNN(畳み込みニューラルネットワーク)を活用する際の注意点
CNNは実務にあらゆるメリットをもたらしていますが、いくつかの注意点およびデメリットもあります。
この章では、CNN活用で注意したいポイントを以下のとおり3つご紹介します。
- 導入に大きなコストがかかる
- 「推論の根拠が必要な用途」への利用が難しい
- ノイズ混入で見当違いな結果になることがある
導入に大きなコストがかかる
CNNを導入するとなると、何かと大きなコストがかかります。
高度な計算処理には膨大なデータ量が必要になるため、大きな負荷がかかることから高性能な専用マシンの準備が求められるためです。
その高性能マシンに大きなコストがかかるだけでなく、それを扱うだけの技術をもつ人材の確保や育成にも時間とお金がかかります。
それだけでなくCNNを実務で有効活用するためには、あらかじめ社内の膨大なデータを読み込ませて学習させるプロセスも欠かせないため、時間とお金にある程度余裕のある状態で検討しなければなりません。
「推論の根拠が必要な用途」への利用は難しい
推論の根拠が必要な用途とは「AIが誤った判断を下すことで命に関わってしまう類のもの」のことです。たとえば診療システムや自動運転などが挙げられます。
この類のものにCNNを活用するなら高度な経験と実績をもつスペシャリストを複数人雇ったり、途方に暮れるようなテストを長期間繰り返すなどの対策が必須となるので安易な導入は危険です。
CNNの処理はとても複雑で繊細であることから、ブラックボックス化(なぜそのような予測や分類結果が得られたのかを説明することが難しい状況)に陥りがちだからです。
予測や判断の根拠を明確に示す必要がある場合、CNNを使用する際に慎重に検討する必要があるので、代替手段や他のモデルの選択肢を検討するのもひとつです。
ノイズ混入で見当違いな結果になることがある
CNNの現状の技術的な問題として、データセットに含まれるノイズや偶発的な特徴も学習してしまうことがあります。
ノイズの多い環境で学習されたCNNは本来の目的とは異なる情報を重要視してしまうので、結果として見当違いな結果を招いてしまいます。
たとえば自動運転などでノイズが多発してCNNが判断ミスをしたら、大きな事故が起きてしまう可能性があるということです。
社内にCNNを導入するなら適切なデータ前処理やノイズ除去手法、改良モデルの使用などを検討してノイズの影響を最小限に抑える必要があります。
まとめ
CNNは画像認識に欠かせない技術のひとつです。現状ではブラックボックス化やノイズをはじめとする問題もありますが、今後は改良が進んでより使いやすいものになることが期待されています。
ふだん何気なく使っている各種AIツールでも、概要や構造がわかるようになると見え方も変わってくるものです。
ぜひAI機器のみならず、機械学習技術の動向にも興味をもってほしいと思います。
また本記事で紹介したCNN以外にも、AIにはさまざまな技術があります。
Proskilllの「ビジネス向けAI完全攻略セミナー」では、実務で即戦力になれる機械学習の基礎や、AIビジネスのノウハウを効率良くリーズナブルに学べるので興味のある方はぜひご検討ください。