SASでは、従来からオープン・AIプラットフォームであるSAS Viyaの機能をPythonから効率的に活用いただくためのハイレベルなPython向けAPIパッケージであるDLPyを提供してきました。
従来のDLPyは、Viya3.3以降のディープラーニング(CNN)と画像処理(image action set)のために作成された、Python API向けハイレベルパッケージです。
DLPyではKerasに似たAPIを提供し、より簡潔なコーディングで高度な画像処理やCNNモデリングが可能でした。
そして、この度、このDLPyが大幅に機能拡張されました。
最新版DLPy1.0では、以下の機能が拡張されています。
■ 従来からの画像データに加え、テキスト、オーディオ、そして時系列データを解析可能
■ 新たなAPIの提供:
・ RNN に基づくタスク: テキスト分類、テキスト生成、そして 系列ラベリング(sequence labeling)
・ 一般物体検出(Object Detection)
・ 時系列処理とモデリング
・ オーディオファイルの処理と音声認識モデル生成
■ 事前定義ネットワーク(DenseNet, DarkNet, Inception, and Yolo)の追加
■ データビジュアライゼーションとメタデータハンドリングの拡張
今回はこれらの拡張機能の中から「一般物体検出(Object Detection)」機能を覗いてみましょう。
SAS Viyaでは従来から画像分類(資料画像1.の左から2番目:Classification)は可能でした。例えば、画像に映っている物体が「猫」なのか「犬」なのかを認識・分類するものです。
これに加えて、DLPy1.0では、一般物体検出(資料画像1.の左から3番目:Object Detection)が可能になりました。
資料画像1.
(引用:Fei-Fei Li & Justin Johnson & Serena Yeung’s Lecture 11)
つまり、画像内に映っている複数のオブジェクトの位置を認識し、矩形(バウンディングボックス)で囲み、かつオブジェクトごとにカテゴリ(クラス)を検出してくれる機能です。
そして、DLPy1.0では、CNNベースの一般物体検出モデルを生成するために必要となる学習用のデータセットを簡単に作成できる機能も搭載しました。
画像分類モデル生成用のデータセットに比べて、一般物体検出モデルを生成するために必要なデータセットはより複雑で作成に手間がかかります。例えば、画像分類モデル用のデータでは、ラベルを示す列は1つですが、一般物体検出モデル用のデータでは、2つ以上のラベル列を必要とし、複数のバウンディングボックスの情報も必要になります。
しかし、DLPy1.0に搭載のcreate_object_detection_table()ファンクションを使用することで、必要な学習用データセットを簡単に生成することができます。
・data_path: 画像ファイルのロケーション
・local_path: 注釈(annotation)ファイルのロケーション
・coord_type: バウンディングボックスのフォーマット(yolo / coco)
上記ファンクションを使用して、学習用データセットを生成するために必要な元データの要件は以下の通りです:
・バウンディングボックスおよびラベルを定義するために使用される注釈(annotation)データは、PASCAL VOC形式であること。
・各画像には、同じ名前で拡張子の異なる注釈(annotation)ファイルが必要です。 このファイルには、特定の画像のグランドトゥルース情報が含まれている必要があります。
作成されたデータセット内容はdisplay_object_detections()ファンクションを使用し、表示し、確認することができます。これは、モデル生成後にテストデータを当てはめてスコアリングした結果の精度を確認する際にも有効です。
学習用のデータセットが準備できたら、この後は、モデル定義>事前学習weightsの取り込み>学習>スコアリング、という流れで進行していきますが、今回はここまで。
※DLPyの詳細に関してはgithubサイトをご覧ください。
※オープン・AIプラットフォームSAS Viyaを知りたいなら「特設サイト」へGO