カテゴリー
AI・IoT・Computer BLOG

AIの学習、はじめました。 | NES’s blog

非接触時代の人間代替論

 新型コロナウイルス感染症流行拡大後、3密回避など人との接触を8割減らすことが新たに常態化しつつあります。

 私たちは以前より、コンピュータープログラミング、特にデータベース関連を開発して参りましたが、これは業務効率化とデータ二次利用の2つの面を持っていましたが、効率化といっても手書きやExcel入力を代替する程度の物でした。

 このたび、AIの医療応用について検討すべく、自らAIでシステムを開発することに挑戦する事となりました。

 開発に成功しなくても、何か得る物はあるだろうと期待し、本来であれば東京五輪で盛り上がっていたであろう本日、AI学習をスタートしました。




Jetson (NVIDIA)

Jetson Nano 開発者キット

 今回、AI端末として調達したのはNVIDIA社の『Jetson Nano 開発者キット』(B01)です。

NVIDIA: JETSON NANO (日本語サイト)

NVIDIA: JETSON (English)

NVIDIA: JETSON Download Center (English)



調達品

 Jetson Nanoは、簡単に言えばデスクトップパソコンの本体部分です。
 動作させるにはいくつかの周辺機器が必要になります。
 今回、以下の物も一緒に調達しました。

NVIDIA Jetson Nano 開発者キット B01
【本体】Jetson Nano 開発者キット、Jetson Nano B01本体です。これが無ければ始まりません。
ACアダプタ 5V 4A
Jetson NanoはmicroUSBでの給電に対応しています。しかし、カメラなどを装着すると容量不足で停止していしまいますので、外付けのACアダプタで給電させます。外径5.5mm、内径2.1mm、センタープラスの物を指定されていますので、Amazonなどで適当な物を選ぶと良いでしょう。USBと同じ5V、4アンペア流せなければ意味がありません。3Aで失敗した事例がネット上にありますので、4Aを探してください。
カメラモジュール (Raspberry Pi V2モジュール)
Raspberry Pi用の高精細カメラを調達しました。ラズパイ公認、SONY製のセンサを搭載した8メガピクセルのカメラです。取付方法などはラズパイと同じで簡単。装着しただけで何もせずに認識されました。注意点は電源です。microUSB給電でカメラを起動したら落ちました。ACアダプタ給電に切替後は、何ら問題ありません。
HDMIケーブル
Jetson Nanoには画面がありません。映像出力ポートとしてHDMIが備わっていますので、HDMIケーブルさえあればパソコン用ディスプレイでも、液晶テレビでもモニタとして使えます。HDIMIケーブルは汎用品で問題ないので、手元にあればそれを使います。私たちは、Amazon Basicsブランドの安価なケーブルを接続しました。 
USBキーボード
普通の日本語キーボードです。マウスは予備を持っていても、キーボードは余分が無いので調達しました。Jetson Nanoが小型なので、キーボードも小型を選びました。有線のUSBキーボードです。実行画面では認識されないキーもありますが、操作に必要なキーは揃っていますので問題なく使えています。
マウス
 普通のUSBマウスです。ブラウザなどでスクロールボタン普通に使えました。使用しているのはバッファローの静音マウスで、Amazonでは1000円以下で買える物です。
microSDカード
 32GB UHS-I以上の物を指定されています。防犯カメラ(ネットワークカメラ)用にと買ってあったシリコンパワーの64GBを使いました。先を見据えると、もう少し大容量でも良かったかもしれません。
ディスプレイ
 他で使っていた物を共用しています。フルHD(1920×1080)の27型ディスプレイを使用していますが20型モニタでも十分に作業できました。
ファン
 本体の主幹部には放熱フィンが付いていますが、たくさんの仕事を与えると放熱フィンだけでは熱がこもってしまいます。そこで、ファンが必要になる訳ですが、ファンは付属していません。
LAN (ケーブル)
 有線LANは既存のHUBから分けて使いました。CAT5の安価な物です。特に指定は無いようです。
microUSBケーブル
 電源を供給するためのケーブルです。microUSB-B⇔USB-Aです。公式サイトではAmazon Basicsを紹介していました。
USB充電器
スマホ用に持っていた2Aの充電器とケーブルを使いました。
USBウェブカメラ
 公式チュートリアルではロジクールのC270を指定しています。私はラズパイのカメラを搭載してしまいましたが、USBカメラでも良いと思います。



最初の準備 (1) microSDカード

イメージファイルをダウンロード

 Jetson Nanoの基盤となるソフトウェアをダウンロードします。

 丸ごとSDカードに書き込んで、そのままJetson Nanoに搭載します。

 ファイルサイズが6GB(2020年7月現在)ありますので、ダウンロードに相当の時間を要します。
 使う順番は後ですが、先にダウンロードを開始しておきましょう。

 ダウンロード後、Zipファイルは解凍しておきます。

NVIDIA: Jetson Nano Developer Kit SD Card Image

NVIDIA: JetPack SDK

NVIDIA: (3) Write Image to the microSD Card, Getting Started With JetsonNano Developer Kit



microSDカードセットアップ

 Jetson Nanoはハードウェアです。動作にはソフトウェアが必要です。

 まずはOSの準備となります。

 用意するのはインターネットに接続できるパソコン、microSDカード、カードリーダーです。パソコンにリーダーが内蔵していればそれで用が足ります。

 パソコンにmicroSDを挿入し、専用ソフトを使ってフォーマットします。

NVIDIA: (2) Prepare for Setup, Getting Started With Jetson Nano DeveloperKit



SDカードフォーマッター (Windows)

 『SD Card Formatter』というソフトをダウンロードし、インストールし、使います。

 ファイルはSDアソシエーションのサイトからダウンロードします。NVIDIAの公式サイトからもリンクがありますので、安全なルートからダウンロードしましょう。

 アプリ(SD Card Formatter)を起動し『カードの選択』(Select card)でmicroSDのドライブを選択します。
 フォーマットオプションは『クイックフォーマット』(Quick format)が選択されているので、そのままにし、右下の『フォーマット』(Format)をクリックします。

 確認画面『フォーマットでこのカードのすべてのデータが消去されます。続行しますか?』と出るので『はい(Y)』をクリックします。
 完了すると『フォーマットが正常に終了しました。』という画面が出てきます。

SD Association: SD Memory Card Formatter for Windows Download

NVIDIA: (3) Write Image to the microSD Card, Getting Started With JetsonNano Developer Kit



Etcherでディスクイメージを書込

 『Etcher』というソフトをダウンロードし、インストールし、使います。

 ファイルはBalenaのサイトからダウンロードします。NVIDIAの公式サイトからもリンクがありますので、安全なルートからダウンロードしましょう。

 アプリ(Etcher)を起動し、中央左側の十字マークが付いた『Select Image』をクリックし、NVIDIAのサイトからダウンロードした『JetsonNano Developer Kit SD Card Image』を選択します。ファイルはZipファイルではなくディスクイメージファイル(.img)です。

 中央のドライブのアイコンでは、先ほどフォーマットしたmicroSDカードを選択します。

 準備が整うと中央右側の『Flash』のアイコンがアクティブに変わります。クリックすると書き込みがスタートします。

 書き込むファイルサイズは10GB以上ありますので、しばらく時間を要します。

Balena: Etcher

NVIDIA: (3) Write Image to the microSD Card, Getting Started With JetsonNano Developer Kit




最初の準備 (2) Jetson Nano 本体

開封

 まずは、届いたJetson Nano 開発者キット B01の外観チェック。
 箱に損傷が無いので封印テープを2か所カットし、開封しました。

 外箱は潰しません。

 箱から出てきたのは本体、説明書、折り畳まれた箱です。

 この箱、緩衝材でも折紙でもなく、台座でした。
 本体が入っていた箱に嵌るように組み立て、Jetson Nanoを置く台座として使います。

NVIDIA: (1) Introduction, Getting Started With Jetson Nano Developer Kit



本体にmicroSDカードを挿入

 Jetson Nano本体のUSBコネクタ類がある方と逆側、放熱フィンの下にmicroSDスロットがありますので、向きに気を付けてカードを挿入します。

NVIDIA: (4) Setup and First Boot, Getting Started With Jetson Nano DeveloperKit



ケーブル接続

 USBコネクタにはマウスとキーボードを、HDMIコネクタにはディスプレイを接続します。

 microUSBコネクタには電源を接続します。
 電源を投入すると自動的に起動しますので、マウスやディスプレイなどを先に接続しておきます。

NVIDIA: (4) Setup and First Boot, Getting Started With Jetson Nano



最初の設定

 microUSB電源を接続すると、横にある緑色のLEDが点灯します。

 最初にEULA(NVIDIA End User license Agreements: ユーザーライセンス条項)が表示されるので、同意します。

EULA同意

 ソフトウェアの使用許諾に関する同意です。

 ”I accept the terms of these licenses”にチェックを入れ”Continue”をクリックします。

言語選択

 一覧から使用する言語を選択します。

 英語仕様なら”English”、日本語なら”日本語”を選択し”Continue”(続ける)をクリックします。

キーボードレイアウト選択

 使用するキーボードのレイアウトを選択します。

地域選択

 使用する地域を選択します。

ユーザー情報登録

 Jetson Nanoにログインするためのユーザー情報を登録します。パスワードは随時必要になります。

インストール

 インストールが進みます。


 インストールが完了すると上記画面が表示されます。
 今回は日本語でインストールしました。元々は英語で開発されていると思いますので、英語仕様の方が不具合の確率が少ないかもしれません。

NVIDIA: (4) Setup and First Boot, Getting Started With Jetson Nano DeveloperKitDeveloper Kit



TensorFlowのインストール

 テンソルフロー(TensorFlow)という機能を追加します。今回行う画像認識には不可欠という事ですので、インストールしました。

 詳細な手順はNVIDIAのサイトで確認しながら行いましょう。

NVIDIA: Deep Learning Frameworks Documentation

TensorFlow




最初の準備 (3) ACアダプタ対応

ACアダプタ

 microUSB給電でもJetson Nanoを動かす事は可能ですが、カメラデバイスなどを動かそうとすると動作が不安定になったり、停止してしまいます。

 そこで、ACアダプタを使った給電が必要になります。
 対応しているアダプタはDC5V(ボルト)、4A(アンペア)以上給電可能、コネクタは外径5.5mm、内径2.1mm、センタープラス(+)です。

 ACアダプタを使う場合には、基板上のピンの接続を変更する必要があります。旧製品(A02)では別途ジャンパーコネクタを調達する必要があったようですがB01では付属しています。ここではB01で説明します。

 初期状態ではHDMIやUSBコネクタ等を差し込む方向に対して垂直を向いているピンを、平行の向きに変更すれば完了です。
 この作業をするとき、必ず電源を切った状態で行いましょう。


ACアダプタ 5V 4A
Jetson NanoはmicroUSBでの給電に対応しています。しかし、カメラなどを装着すると容量不足で停止していしまいますので、外付けのACアダプタで給電させます。外径5.5mm、内径2.1mm、センタープラスの物を指定されていますので、Amazonなどで適当な物を選ぶと良いでしょう。USBと同じ5V、4アンペア流せなければ意味がありません。3Aで失敗した事例がネット上にありますので、4Aを探してください。




最初の準備 (4) カメラ搭載

Raspberry Pi カメラモジュール V2

 カメラはRaspberry Pi (通称:ラズパイ)のカメラモジュールV2以降がそのまま使えます。

 カメラ用のフラットケーブルを挿入できるポートが2つありますので、間違えないように挿入します。
 カメラ側のケーブルにも表裏がありますので、間違えないようにします。

 ポートは上端にあるツメを上に持ち上げるとロックが解除され、ケーブルを挿入できるようになります。
 ケーブル先端が平らに、全体が底付きしたことを感触で確認し、先ほど解除したロックを元に戻して固定します。


カメラモジュール (Raspberry Pi V2モジュール)
Raspberry Pi用の高精細カメラを調達しました。ラズパイ公認、SONY製のセンサを搭載した8メガピクセルのカメラです。取付方法などはラズパイと同じで簡単。装着しただけで何もせずに認識されました。注意点は電源です。microUSB給電でカメラを起動したら落ちました。ACアダプタ給電に切替後は、何ら問題ありません。



試運転

 カメラ搭載後はACアダプタを電源として使うように心がけます。今回はカメラの試運転なのでACアダプタは必須アイテムです。

 ディスプレイを用意しHDMIケーブルを接続、マウスやキーボードも接続した上で電源を投入します。
 Ubuntu(ウブントゥ)というLinuxを母体としたOSが起動します。

 左上にあるアイコンをクリックすると端末内検索ができます。
 そこで『Terminal』と入力し、”Terminal”というアプリを起動します。

 Terminalの画面で『ls -al /dev/video0』と入力すると、カメラが認識されていれば日時などが記された行が表示されます。

@-desktop:~$ ls -al /dev/video0

 続けて映像を確認します。NVGSTCAPTURE (NVIDIA GStreamer camera model Test)という機能(ソフト)を使います。
 『nvgstcapture』と入力すると、映像が表示されます。Ctrlとcを押すか、qを押すと終了します。

@-desktop:~$ nvgstcapture



Jetson NanoでAIを使ってみる。