AI入門講座付属プログラムコード(宮本崇)
土木学会誌2021年1月号に掲載された「AI入門講座」のプログラムコードです。
■概要
「画像の分類」「画像の説明文生成」という2種類のタスク処理のプログラムコードを紹介します。各プログラムコードはプログラミング言語Pythonで記述されています.リンクを記載しましたので,ぜひ気軽に試行ください。
■Google Colaboratoryについて
プログラムコードは,Web上でプログラムコードの記述から実行までを行うことのできるクラウドサービスGoogle Colaboratory上で記述されています.Google Colabotaroty上では,ある1つのコンテンツはセルと称される複数のブロックから構成されています.セルには,説明を記述したテキストセルとプログラムコードを記述したコードセルの大きく2種類があり,コードセルは左端の実行ボタンを押すことでセル内のプログラムコードを実行することができます.リンク先では,実際にGoogle Colaboratoryを用いながらその使い方を解説しています.
Google Colaboratoryの使い方
https://colab.research.google.com/drive/1Tk92upYYNy1gjqiF46ZM1UqDWLsJ5r1K?usp=sharing
■コード事例1:AIによる画像の分類(「AI入門講座(2)」より)
画像の分類は,ある画像が全体として表しているものが,予め用意してある選択肢のどれに属するかを判断するタスクです.同タスクに対応するAIモデルは,画像を入力x,それぞれの選択肢に属するかという確率を出力yとして,入出力データペアを学習することによって実現されています.
画像の分類タスクの例としては,入力画像が犬を表しているか,それとも猫を表しているか,という判断を行わせるようなものがああります.この事例では,分類先の選択肢は犬か猫かという2種類が予め用意されており,選択肢以外の判断を行うことは出来ません.例えば,実際には画像が表すものがネズミであっても,AIモデルは犬か猫かという出力しか行えないことには注意する必要があります.
以下のプログラムコードでは,それぞれ手書き数字を分類するAIモデル,構造物の撮影画像から腐食のランクを判断・分類するAIモデルが構築されています. 共に,画像認識に特化したAIモデルである,畳み込みニューラルネットワークと呼ばれるモデルが利用されています.
画像分類のAIモデル例_その1・手書き数字を分類する
https://colab.research.google.com/drive/1Mf89852g6k-yDd2vFloKnHrQ6IYR0pZd?usp=sharing
画像分類のAIモデル例_その2・構造物の撮影画像から腐食のランクを判断・分類
https://colab.research.google.com/drive/1-IeR46lCmBrA4biDGDY5PXieaU8Elhwm?usp=sharing
■コード事例2:AIによる画像の説明文生成(「AI入門講座(3)」より)
画像の説明文(キャプション)生成は,画像を入力データとして与えると,その画像の内容を説明する文章を出力として生成するタスクです.同タスクに対応するAIモデルは,画像を入力x,対応する説明文を出力yとして,入出力データペアを学習することによって実現されています,
画像の説明文生成の例としては,写真のタイトルや解説を自動的に作成するようなものがあります.近年は,同様の概念が動画の説明文生成にまで拡張されており,画像認識や自然言語処理,情報の時系列性の認識など,複数の技術が総合的に利用された先端的な分野の一つとなっています.
以下のプログラムコードは,そのような入出力データのセットの一つであるMicrosoft COCO を元に,画像の説明文生成を行う深層学習モデルを作成し,その性能の評価を行うと共に,出力である説明文を生成する上でAIが着目した画像上の領域を可視化しています.
画像の説明文生成のAIモデル例
https://colab.research.google.com/drive/1x_erYexyQ1_bIO8UHH__28DJeCJ-AXIU?usp=sharing