ディープラーニングについて調べていると、画像認識に使われる手法として畳み込みニューラルネットワークの解説が見つかりますが、
「図も数式もわかりにくくて頭の中が真っ白。どんな仕組みか、数式なしで知りたい!」
という方のために、本記事では、画像認識において最もホットな「畳み込みニューラルネットワーク」について、数式なしで丁寧に解説していきます。
初心者でも理解できるよう、画像分析に至るまでの手順も解説していますので、ぜひ最後まで読んで、畳み込みニューラルネットワークの概要を掴んでください。
公開日:2017年12月14日
専門領域:人工知能(AI) / 生成AI / ディープラーニング / 機械学習
我妻 幸長 Yukinaga Azuma
「ヒトとAIの共生」がミッションの会社、SAI-Lab株式会社の代表取締役。AIの教育/研究/アート。東北大学大学院理学研究科、物理学専攻修了。博士(理学)。法政大学デザイン工学部兼任講師。オンライン教育プラットフォームUdemyで、十数万人にAIを教える人気講師。複数の有名企業でAI技術を指導。「AGI福岡」「自由研究室 AIRS-Lab」を主宰。著書に、「はじめてのディープラーニング」「はじめてのディープラーニング2」(SBクリエイティブ)、「Pythonで動かして学ぶ!あたらしい数学の教科書」「あたらしい脳科学と人工知能の教科書」「Google Colaboratoryで学ぶ! あたらしい人工知能技術の教科書」「PyTorchで作る!深層学習モデル・AI アプリ開発入門」「BERT実践入門」「生成AIプロンプトエンジニアリング入門」(翔泳社)。共著に「No.1スクール講師陣による 世界一受けたいiPhoneアプリ開発の授業」(技術評論社)。
…続きを読む畳み込みニューラルネットワーク(CNN)とは?何に使えるの?
畳み込みニューラルネットワーク(Convolution Neural Network)とは、AIが画像分析を行うための学習手法の1つで、一部が見えにくくなっているような画像でも解析することができます。略してCNNとよばれることもあります。
畳み込み層とプーリング層という2つの層を含む構造の順伝播型のネットワークで、特徴として、それぞれの層の間に生物の脳の視覚野に関する脳科学の知見にヒントを得た、「局所受容野」「重み共有」という結合をもっています。
”多層構造”に加え、工夫された2つの隠れ層という”構造”が組み込まれたニューラルネットワークといえます。
分析する画像が入力層に読み込まれた後、このデータをくまなくスキャンし、データの特徴(勾配、凹凸など)を抽出するために使われるのがフィルタです。抽出された特徴データは畳み込み層に送られ、そこで更に特徴の凝縮されたデータが作成されます。
多くは、最後に全結合の層を重ねて結果を得ますが、一般的なニューラルネットワークと異なり、重みを共有しているため、学習が効率的に行われ、良い(精度の高い)結果を得ることができます。
畳み込みニューラルネットワークの活用例
畳み込みニューラルネットワークは、例えば顔認識システムによく利用されています。
Facebookのタグ付けシステムDeepfaceは有名でしょう。
近年の具体例としては、コーネル大学のコーネル鳥類学研究室が開発した鳥用の顔認識システム「Merlin Bird Photo ID」、韓国科学技術院がベンチャー企業と共同開発した低電力で97%の精度をもつ顔認証システム「K-Eye」などがあります。
ニューラルネットワークについては「ニューラルネットワークとは?人工知能の基本を初心者向けに解説!」で解説していますので、詳しくはそちらをご覧ください。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >畳み込みニューラルネットワークの手順を、例を用いてわかりやすく解説!
畳み込みニューラルネットワークを利用した画像処理の流れを簡単に説明すると、
①フィルターを使用し、入力画像の全体に対して畳み込み層でフィルター処理を行う。
②処理した画像をプーリング層に流し込む。
③プーリング層で画像の解像度を下げる処理を行う。
④③の結果を用いて全結合層で結合することで、画像認識が可能、という流れになります。
なお、畳み込みニューラルネットワークを決定するためには、フィルタや重み、バイアスを具体的に決める必要があります。それぞれの手順を追って説明していきます。
畳み込みニューラルネットワークの手順① 画像から特徴を抽出
フィルタを使って、入力層データの中で位置を変えながらスキャンした部分のデータと、フィルター自体の持つデータとの差異を畳み込みの結果として畳み込み層に書き込んだものを特徴量といい、入力層の全データをスキャンしてできた畳み込みの結果の値の集まりを特徴マップといいます。
複数のフィルタを用意することで、入力層のデータの特徴を捉えやすくしています。
下の図は、用意した複数のフィルタのうち、一つが完全に入力層のデータの一部と同じであることを示しています。
畳み込みニューラルネットワークの手順② 画像を畳み込み
入力層のデータをフィルタのデータとピクセル毎に比較することで、畳み込み層にその類似度(特徴量)を書き込みます。下記の図はフィルタを利用して特徴量を抽出し、特徴マップを作成した例です。
畳み込みニューラルネットワークの手順③ 画像をプーリング
畳み込み層の情報はプーリング層で集約します。例えば最大プーリングという集約方法をとる場合、各ユニット(領域)のピクセルを比較し、その中の最大値をそのユニットの特徴量とします。
出力には、プーリング層のユニットすべてと全結合し、計算結果を利用して、フィルタ、重み、バイアスを更新していきます。
いかがでしたか? 畳み込みニューラルネットワークとは何かお分かりいただけましたか?
AIによる画像分類を学ぼう!【PyTorch+Colab】-CNNの基礎からTransformerの応用まで-
人工知能(AI)を使った画像分類について学ぶコースです。CNNの基礎、CNNベースの有名モデル、Vision Transformer(ViT)などについて学び、Google Colaboratory環境でPythonを使い実装しましょう。
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
このコースは素晴らしかったです。まず、PyTorchとColabの使い方を丁寧に解説していただき、AIで実務に役立つ基本的なスキルを身につけることができました。また、CNN、ResNetやTransformerなど幅広い有名モデルの内容・仕組みを学び、画像分類の基礎から高度な内容まで網羅的に理解できました。特に役に立った点は、実業務に生かせるや有名モデルを用いた実装内容の説明・提供でした。このコースは非常に価値のあるもので、AIに興味を持つ人やスキルを向上させたい人に強くおすすめします。
評価:★★★★★
訓練済みのモデルを一部使って、画像分類を行う方法を学べました。また、世界的に有名なモデルを沢山知れたのでこれから活用していきたいと思いました。ありがとうございました。
最新情報・キャンペーン情報発信中