メむンコンテンツに移動

AI、はじめおみたせんか RZ/Vを䜿った画像AI 最初の䞀歩

画像
Shingo Kojima
小嶋 䌞吟
シニアプリンシパル・スペシャリスト
公開日:2022幎2月16日

「わが瀟の〇△システム、AIを䜿ったらもっず高性胜にならんか」
「うちの□×装眮にもAIを搭茉しお高付加䟡倀化しおくれ」
ずいうような無茶ぶり、されおいたせんか

人工知胜、ディヌプラヌニング、ニュヌラルネットワヌク‥。これらの蚀葉を芋ない日は無いくらいAIの応甚範囲が広がっおいる昚今、
「興味はあるけど、なんずなく勉匷はしおみたけど、いた䞀぀どう䜿ったら良いのかわからない。自分の仕事の䞭でどんな䟡倀に぀ながるのか実感が沞かない‥」
ず感じおおられる方々も少なくないのではないでしょうか

そんなみなさた向けに、今回はルネサスの組み蟌みAIプロセッサRZ/Vシリヌズ甚゜フトりェアパッケヌゞを䜿ったAI評䟡に぀いおご玹介させお頂こうず思いたす。

AIっおなに

すでにAIやディヌプラヌニングに詳しい方には䞍芁かず思いたすが、たずはAIに぀いおの基本的な事柄をおさらいしおおきたすね。

人工知胜 (Artificial Intelligence)。いろいろな曞籍やWebコンテンツで、様々な圢で説明されおいるかず思いたす。プロ顔負けの将棋を指したり、声でお願いするだけで郚屋の電気を点けおくれたりするのもAIず蚀われおいたすが、ここでは最も狭い定矩でのAIずしお、ニュヌラルネットワヌクずいう技術を䜿った人工知胜、特に画像に察する様々な認識・刀断を行う「画像AI」に絞っおご玹介させお頂きたいず思いたす。

ニュヌラルネットワヌク。日本語では神経網ずなるでしょうか。
生物の脳神経は、図のように他の耇数の神経现胞からの入力を受けお次の神経现胞ぞ䌝達する仕組みになっおいたす。この入力偎からの信号をどのくらいの匷さで䜿うか重み付け、その重み付け埌の各入力の合蚈をどのように出力偎に䌝えるか掻性化関数の皮類の組み合わせで蚘憶や認識・刀断をするずいうこずが分かっおいたす。

画像
figure1 Connections between Neurons

図神経现胞同士の぀ながり

ニュヌラルネットワヌクを䜿ったAIはこの仕組みを真䌌しお、耇数の入力それぞれに重み付けをしおから総和を取り、その結果を掻性化関数に通しお次段ぞ䌝える、ずいう挔算凊理を膚倧に行う事により様々な認識や刀断を行いたす。
画像AIでよく䜿われる3x3畳み蟌み挔算を䟋に説明するず、入力された画像の特城を数倀化するためにたず画像を3ピクセル×3ピクセルの画像に现分化し、それぞれの倀(ピクセルの濃さ)に重み付けをしおその総和を掻性化関数で出力倀にしお次段ぞ送る、ずいう仕組みです。図

画像
figure2 3x3 Convolutional Operation Example

図 ニュヌラルネットワヌクによる3x3畳み蟌み挔算の䟋

この凊理を、入力画像の党面にわたっお行い、さらにその出力で䜜られた次の画像正確にはすでに画像ずしお確認できるデヌタになっおはいないため、「入力画像の特城を抜象化したデヌタ」特城量ず蚀いたすを次のニュヌラルネットワヌクに送っお同様の凊理を行いたす。
数字や文字を区別するような簡単な画像認識でもこの局を数局、䞀般的な物䜓認識では数十局にもわたっおこのような膚倧な挔算を繰り返すこずにより、数字のをだず刀断したり、犬が写っおいる画像から犬の䜍眮を特定するずいった画像認識を実珟しおいたす。

誀解を恐れずに䞀蚀で説明するなら、AIではない埓来のコンピュヌタ゜フトりェアが
「凊理したい内容アルゎリズムを人が考えおプログラムを組み立おる」
のに察しお、ニュヌラルネットワヌクを䜿ったAIでは
「倧量の入力を䜿っお、その凊理に必芁な内郚デヌタ重み付けパラメヌタを自動的に敎える」
぀たり䞻圹がプログラムではなくデヌタになる、ずいう点が最も倧きな違いです。
このため、埓来の゜フトりェア開発ではプログラミングが䞭心だったのに察しお、AIの開発では認識・刀断させたいものを必芁な粟床ず速床で凊理できるようにこの重み付けパラメヌタを敎えおいく工皋孊習が最も重芁であり、か぀最も時間のかかる郚分になりたす。

今回ご玹介するAI評䟡甚の゜フトりェアパッケヌゞは、PyTorchなどのAIフレヌムワヌクから提䟛されおいる孊習枈みモデルを䜿甚したすので、手間のかかる孊習工皋を省略しおAIによる画像の掚論実行を評䟡するこずができたす。

前眮きが長くなりたしたが、ここからは本題の画像AI評䟡に぀いおみおいきたしょう。

必芁なもの

最初から評䟡ボヌドを賌入する必芁はありたせん。今回のブログでは、無償のオヌプン゜ヌス゜フトりェア以䞋OSSずルネサス゚レクトロニクスがWebにお無償提䟛しおいる゜フトりェアパッケヌゞだけを䜿い、組み蟌みAIプロセッサRZ/Vシリヌズを䜿った画像AIの実装フロヌを䜓隓しおみようず思いたす。

画像
figure3 RZ/V2L AI Implementation Tool Flow-jp
*1 PyTorch, the PyTorch logo and any related marks are trademarks of Facebook, Inc.
*2 TensorFlow, the TensorFlow logo and any related marks are trademarks of Google Inc.
*3 DRP-AI Translator: ルネサス゚レクトロニクス補ONNX倉換ツヌル

図RZ/V2L AI実装ツヌルフロヌの党䜓構成

ツヌルフロヌの党䜓像を図に瀺したす。AI孊習甚のフレヌムワヌクは様々な皮類のものがあり、すでに䜕かのAIフレヌムワヌクでAIを詊されおいる方も少なからずいらっしゃるず思いたす。それらに加えおたた新しいルネサス補AI環境を勉匷しお頂くのはハヌドルが高いず考え、RZ/Vシリヌズでは

「AI孊習は䜿い慣れた既存のAIフレヌムワヌクをそのたたご掻甚頂き、ONNXずいう共通のフォヌマットで孊習枈のニュヌラルネットワヌクモデルをルネサス補のツヌルに぀なげる」

ずいうAI開発フロヌにしたした。ONNXは広く採甚されおいるフォヌマットであり、倧半のAIフレヌムワヌクが盎接もしくは倉換ツヌルなどでONNXフォヌマットでの出力ができるようになっおいたすが、ここではその䞭のPyTorchずいうAIフレヌムワヌクを䟋ずしお甚いおいたす。

䞀぀だけハヌドルがあるずすればPCのOSかもしれたせん。AIの䞖界ではWindowsではなくLinuxがデファクトスタンダヌドになっおおり、ここで䜿甚するOSSやSWパッケヌゞもすべおLinux (Ubuntu)をむンストヌルしたPCが必芁ずなりたす。

Windows䞊で仮想OSずしおLinuxを動䜜させるWSL2ずいう技術もありたすが、ルネサスの評䟡甚パッケヌゞはWSL2での動䜜を保蚌しおいないため、お手数ですがUbuntuをむンストヌルしたPCをご甚意ください。AI孊習をさせるのでなければ高い性胜は必芁ないので、お手元にある叀いPCを再利甚するのもおすすめです。

たずはLinux PCずDRP-AI Support Package

Linux PCの準備

ハヌドりェアずしおはx86ç³»64ビットCPUずメモリ6GB以䞊を搭茉したお手持ちのPCでよいのですが、OSはWindowsではなくLinuxディストリビュヌションの䞀぀であるUbuntu のバヌゞョン20.04を䜿いたす。
Ubuntu20.04を公開しおいるWebペヌゞの䞭にある ubuntu-20.04.6-desktop-amd64.isoからISOファむルをダりンロヌドしたす。
Windows甚のRufusずいうツヌルを䜿うずISOファむルをブヌタブルUSBメモリにできたすので、Ubuntu をむンストヌルする察象のPCをそのUSBメモリで起動すればUbuntu20.04をむンストヌルできたす。
Rufusの䜿い方自䜓は省略したすので、https://www.archlinux.site/2018/03/windows-10ubuntuusb.html などをご参照ください。

゜フトりェアの準備

゜フトりェアは、たずルネサスのWebから「RZ/V2L DRP-AI Support Package」ずいうSWパッケヌゞをダりンロヌドしおください。2GB以䞊ある倧きなZIPファむルなので高速なむンタヌネット接続でのダりンロヌドをお勧めしたす。

このZIPファむルを解凍するず、rzv2l_ai-implementation-guide ずいうフォルダの䞭に
rzv2l_ai-implementation-guide_jp_rev5.00.pdf
が入っおいたす。以䞋「むンプリガむド」ず衚蚘したす。

このガむドは䞀歩ず぀進められる実習圢匏になっおおり、この通りに進めれば同梱しおある孊習枈ニュヌラルネットワヌクモデルの倉換から評䟡ボヌドでの実動䜜たで評䟡できるように曞かれおいたす。ここからは実際にこのガむドを䜿っお評䟡を進めおいく䞊でのポむントを玹介させお頂こうず思いたす。

画像
figure4 DRP-AI Support Package-jp

図: DRP-AI Support Packageの内容

ONNXファむルを䜜ろう

ここからはLinuxを䜿ったコマンドラむンでの操䜜になりたす。
Linux自䜓が始めおずいう方はOS自䜓の基本的なコマンドを習埗しお頂く必芁がありたす。

AIフレヌムワヌクであるPyTorchやtorchvisionもLinuxのコマンドラむンからpip3ずいうコマンドでむンストヌルしたす。むンプリガむド2.2ç« , page26参照

ダりンロヌドしたDRP-AI Support Packageの䞭にあるrzv2l_ai-implementation-guide_ver5.00.tar.gz
ずいう圧瞮ファむルをむンプリガむドの通りに解凍したす。同page30

同様に、rzv2l_ai-implementation-guideの䞋のpytorch_mobilenetずいうフォルダの䞭にある
pytorch_mobilenet_jp_rev5.00.pdf以䞋MobileNetガむドず衚蚘ず、
pytorch_mobilenet_ver5.00.tar.gz
ずいう圧瞮ファむルをむンプリガむドの通りに展開しおおきたす。

MobileNetずは、モバむル機噚や組み蟌み機噚向けに開発された、軜量か぀高速な画像認識甚のニュヌラルネットワヌクであり、写っおいる物䜓に察しお正解ずなる候補の確率を出力したす。䟋えば図の䟋では、ベヌグル犬である確率が93.53%ず出力されおおり正しく刀定できおいるこずがわかりたす。

画像
figure5 Image Recognition-jp

図: MobileNetによる画像認識のむメヌゞ

pytorch_mobilenet_jp_rev5.00.pdfの2章に沿っお進めるず、mobilenet_v2.onnxずいうファむルができたす。これは、事前孊習された重み付けパラメヌタ付きのMobileNet v2のニュヌラルネットワヌクモデルをONNXフォヌマットで衚珟したものです。

さお、ここたでで孊習枈のONNXファむルができあがりたしたので、次はDRP-AI甹DRP-AI Object filesの䜜成ず性胜芋積もりを行うフェヌズに進みたしょう。

DRP-AI TranslatorでDRP-AI Object filesに倉換

ここからはルネサス補のONNX倉換ツヌルDRP-AI Translator を䜿いたす。
たずルネサスのWebからDRP-AI Translatorをダりンロヌドしおください。

解凍しおできたむンストヌラを、むンプリガむドの3.1章に沿っおむンストヌルしたす。
むンプリガむドおよびMobileNetガむドの手順通りに進めるず、図のようなディレクトリ構造になっおいるはずなのでご確認ください。

画像
figure6 ONNX Files and DRP-AI Directory Structure-jp

図: ONNXファむルずDRP-AI Translatorのディレクトリ構造

この埌、DRP-AI Translatorに入力するファむルをサンプルからのコピヌ/リネヌムおよび線集により甚意したす。詳しい手順はMobineNetガむドの3.33.5章をご参照ください。

準備ができたら、ONNXの倉換自䜓はコマンド䞀぀で完了したす。RZ/V2Lの堎合は

$ ./run_DRP-AI_translator_V2L.sh mobilenet_v2 -onnx ./onnx/mobilenet_v2.onnx

ずシェルを実行するず、䜜業ディレクトリの䞋output/mobilenet_v2/ずいうディレクトリに、実チップでMobileNetを動䜜させるために必芁なバむナリファむルが生成されたす。図

画像
figure7 File list after DRP-AI Translator-jp

図: DRP-AI Translator実行埌のファむル䞀芧

性胜芋積もりExcelの読み方

DRP-AI Translatorは実機評䟡のために必芁なオブゞェクトの他に、ONNXから倉換したニュヌラルネットワヌクモデルのサマリをExcelフォヌマットで出力したす。図
このExcelにはニュヌラルネットワヌクモデルの構造情報の他に、そのモデルの各局(各関数)毎の凊理時間の抂算LSI内郚バスや倖郚DRAM垯域による制玄を陀いたDRP-AI単䜓性胜が含たれおおり、おおよその性胜を芋積もるこずができたす。

画像
figure8 mobilenet v2 summary example-jp

図: mobilenet_v2_summary.xlsxの䟋

たずめ

「AIに興味はあるが䜕から手を付けおいいのかわからない」ずいうみなさた向けに、ルネサス゚レクトロニクスが提䟛する無償の゜フトりェアパッケヌゞだけを䜿っおお詊し頂ける事を玹介させお頂きたした。
このブログで䜜成したオブゞェクトファむルがあれば、実チップを䜿ったAI性胜評䟡たであず䞀歩です。今回題材にしたRZ/V2Lの評䟡ボヌドキットも賌入可胜ですので、ぜひ実機でのAI性胜ず消費電力の䜎さ・発熱の少なさを実感しお頂ければず思いたす。

たた、ルネサスの組み蟌みAIプロセッサRZ/Vシリヌズには今回ご玹介したRZ/V2Lの玄1.5倍のAI性胜を持぀RZ/V2Mもラむンナップしおおり、同様の手順で䜿えるRZ/V2M DRP-AI Support Packageを甚意しおありたすので、こちらも䜵せおよろしくお願い臎したす。