今までJetBrainsのPyCharm Community EditionでPython開発を行っていたが、jupyter notebookを使う必要性がでてきた。
jupyterのインストールおよび使い方は以下を参考にしてみた。
Jupyter NotebookをWindowsのAnaconda環境にインストールする方法
札幌にてシステムコンサル、システム開発、プログラム開発、システム運用・保守等、IT関連業務に携わっている個人事業主です。 お仕事の依頼・ご相談等お待ちしております。
今までJetBrainsのPyCharm Community EditionでPython開発を行っていたが、jupyter notebookを使う必要性がでてきた。
jupyterのインストールおよび使い方は以下を参考にしてみた。
Jupyter NotebookをWindowsのAnaconda環境にインストールする方法
Webアプリの自動テスト支援ツールとして、有名なものに Selenium があるらしいが、他にTestablishなるものがあるようだ。
製品なので今の所購入する予定はないが、検討する余地はあり。
今日は朝から昨日(5日)のドカ雪のおかげで、雪かきで疲れました。(笑)
かなり腰にきています。
1日で40センチ以上積もりました。
現在もまだちらほら雪が降っています。
という事で多少疲れてはいますが、
今回は、NVIDIAが提供しているDeepStream SDKの機能を試してみました。
1.DeepStream SDK とは? (説明からの抜粋です)
(1)カメラ、センサー、IoTゲートウェイからのデータをリアルタイムで分析
NVIDIAのDeepStream SDKは、マルチセンサー処理だけでなく、AIベースのビデオおよび画像を理解するための完全なストリーミング分析ツールキットを提供します。
DeepStreamは、ピクセルとセンサーデータを実用的な洞察に変換するためのエンドツーエンドのサービスとソリューションを構築するプラットフォームであるNVIDIA Metropolisの不可欠な部分です。
(2)複雑なストリーム処理パイプラインをシームレスに開発
DeepStreamを使用すると、開発者はエッジツークラウドのストリーミング分析アプリケーションを構築できます。
SDKは、オープンソースのGStreamerを使用して、低レイテンシのストリーミングフレームワークで高いスループットを実現します。
ランタイムシステムはパイプライン化されており、ディープラーニング機能に加えて、ストリーミングアプリケーションでの画像およびセンサー処理と融合アルゴリズムを可能にします。
2.DeepStream SDKのセットアップ
方法はいくつかあるようですが、ホストPCからSDK Managerを通してセットアップするのが楽ちんのようです。
これについては以前の「【NVIDIA SDK Manager編】」で既に実施済です。
3.サンプルの動作確認
sampleの構成ファイルは /opt/nvidia/deepstream/deepstream-4.0/samples ディレクトリにあります
$ cd /opt/nvidia/deepstream/deepstream-4.0/samples/
次のコマンドを入力すると 2*4のタイル形式でサンプルmp4に対して約30FPSの物体検知の動画が表示されます。
$ deepstream-app -c ./configs/deepstream-app/source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt
※動画は割愛。
4.カメラ映像をリアルタイム検出してRTSP配信&スマフォ(Android)で見る
マニュアルや他のconfigを参考にお試し用にのconfigを編集しました。
https://docs.nvidia.com/metropolis/deepstream/4.0/dev-guide/index.html#page/DeepStream_Development_Guide%2Fdeepstream_app_config.3.2.html
下記コマンドでお試しを起動。
$ deepstream-app -c ./configs/deepstream-app/my_test.txt
スマフォ(Android)のVLCアプリを起動し、ネットワークストリームにて下記にアクセスします。
※VLCアプリは別途インストール要。
rtsp://192.168.0.18:8554/ds-test
おおっ! Jetson Nanoに接続されているカメラ映像がスマフォで見る事ができました。
物体検出も見れているようです。
※動画は割愛。
5.YOLOを試してみる。
YOLO(You Only Look Once)はdarknet(C言語で書かれたディープラーニングライブラリ)で開発された画像認識ディープラーニングネットワークで、1回ネットワークを通して、ちょっと後処理しただけで複数の対象物のクラス(種別)と位置を検出するという優れものというものです。
これについても試してみました。
(1)YOLOの準備
$ cd /opt/nvidia/deepstream/deepstream-4.0/sources/objectDetector_Yolo
以下のコマンドで、YOLOのcfgファイル(ネットワーク構造等を定義しているもの)、weight(ネットワークの係数)を次のコマンド(スクリプト)で一括ダウンロードします。
$ ./prebuild.sh
下記コマンドで、Jetson NanoにインストールされているCUDAのバージョンを環境変数として設定します。
$ nvcc -V
表示されたバージョンを確認して次の通り設定します。間違うとコンパイルでエラーになります。
$ export CUDA_VER=10.0
YOLOのPluginをコンパイルします。
$ make -C nvdsinfer_custom_impl_Yolo
(2)YOLOv3-tinyのサンプルを動かす
次のコマンドでサンプルが動きます。動き始めるまでは少し時間がかかります。
$ deepstream-app -c deepstream_app_config_yoloV3_tiny.txt
(3)USB Cameraで動かす
$ cp deepstream_app_config_yoloV3_tiny.txt deepstream_app_config_yoloV3_tiny_usb_camera.txt
deepstream_app_config_yoloV3_tiny_usb_camera.txtの[source0]を書き換えます。
[source0]
enable=1
#Type – 1=CameraV4L2 2=URI 3=MultiURI
type=1
camera-width=640
camera-height=480
camera-fps-n=30
camera-fps-d=1
camera-v4l2-dev-node=0
#uri=file://../../samples/streams/sample_1080p_h264.mp4
#num-sources=1
#gpu-id=0
# (0): memtype_device – Memory type Device
# (1): memtype_pinned – Memory type Host Pinned
# (2): memtype_unified – Memory type Unified
#cudadec-memtype=0
USB CameraでYOLOv3-tinyを動かします。
$ deepstream-app -c deepstream_app_config_yoloV3_tiny_usb_camera.txt
Jetson Nanoに接続されているカメラ映像でYOLOが動作しました。
※動画は割愛。
DeepStream技術は様々なニーズがあるようです。
今後も勉強していきたいと思います。
今回はJetson Nanoでリアルタイム画像類推についてです。
1.jetson-inferenceの構築
Jetson NanoにはGitHubでjetson-inferenceというサンプルがあるので、これを試してみました。
以下の手順で、構築しました。
$ git clone https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ git submodule update –init
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
$ sudo reboot
2.サンプルを試す
$ cd jetson-inference/build/aarch64/bin
・ペットボトルが検出されるか?
$ ./detectnet-camera –camera=/dev/video0 –network=googlenet coco-bottle
以下は、結果画像です。77%の割合で検出されました。
・ペットボトルがどのように認識されるか?
$ ./imagenet-camera –camera=/dev/video0 –network=googlenet
以下は、結果画像です。23,25%の割合で薬箱もしくは常備薬戸棚として認識されました。(笑)
面白いですね~。
3.自分作成済のものを試す
それでは、昔PC上で私がちょっと作成してみたもの(一部)もJetson Nanoに落として、試してみます。
※python3で開発したもの。
・物体認識
以下が結果画像です。
丸で色のついた部分で物体認識されているようです。
※本当は動画で物体が動く軌跡が描かれるんですが、動画サイズが重いので割愛。
・顔認識
以下が結果画像です。
赤の四角で顔が囲まれていて認識されています。
必要なpython3のライブラリをインストールする必要がありましたが、ちゃんと動作しました。
次回はTensorflowをインストールして何か作成してみようと思います。
※最終的にはJetBotを試してみたいです。
1.ホストPCの構築
NVIDIA SDK Managerを使用するにはホストPCを構築する必要があります。
VMwareにUbuntu_18.04.4 LTSを構築しました。
また下記URLを参考に日本語化を実施。
https://www.server-world.info/query?os=Ubuntu_18.04&p=japanese
タイムゾーンも変更し、時間を再設定しました。
# timedatectl
# timedatectl list-timezones
# retimedatectl set-timezone Asia/Tokyo
2.NVIDIA SDK Managerのセットアップ
下記を参考にNVIDIA SDK Managerをインストールし、開発環境をセットアップしてみました。
https://developer.nvidia.com/nvidia-sdk-manager
https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html
以下は、作業した画面イメージです。
3.カメラの接続
現在チャットなどで使用しているUSB-Webカメラが使えないかと思い、試しにJETSON NANOに接続して確認してみた所、何と認識してくれました。(笑)
・BUFFALO BSWHD06Mシリーズ
4.リモートデスクトップ接続の設定
JETSON NANO本体にディスプレイやキーボード・マウスを繋げて、というのはスペース問題もあるので、Windows PCからリモートデスクトップ接続できる環境を構築しました。
以下の手順で、とりあえずはできました。
# sudo apt-get update
# sudo apt-get -y upgrade
# sudo apt-get -y install ubuntu-desktop xrdp
# sudo systemctl enable xrdp
# sudo systemctl start xrdp
# sudo reboot
※でも動作がちょっと遅いです・・・VNCの方がいいのかな?
次回は、画像認識にチャレンジです。
年明けの1月15日~16日、「JETSON NANO」を1台手に入れたので、早速遊んでみる事にしました。
まずは、セットアップから起動までを試してみました。
1.事前準備
①JETSON NANO:
手に入れたもの
②microSDカード:
microSDXC 128GB SanDisk サンディスク
Extreme UHS-1 U3 V30 4K Ultra HD A2対応
SDアダプター付 [並行輸入品]
③ACアダプター:
SUCCUL ACアダプター 5V 4A 大手メーカーOEM社製品 センタープラス スイッチング式
最大出力20W 出力プラグ外径5.5mm(内径2.1mm)PSE取得品
④ジャンパーピン:
Bullet ジャンパーピン(小) 取手付き JP04
※ACアダプターを使用する場合、基板のJ68にジャンパーピンを挿してあげる必要があります。
⑤USB Wifiドングル:
Buffalo WLI-UC-G301N
※昔Wifiハッキングで使用していたもの(笑)
※今後NVIDIA SDK Mangerを使用する事を考慮しSSH接続させる為、必要としました。
※microSDにインストールしたアーキテクチャはarm64で、SDK Managerはamd64で動作する為。
②~⑤は自分で手配・購入しました。
以下は、今回の接続イメージです。
2.セットアップ
下記URLを参考にmicroSDへのOSイメージの書き込みを実施しました。
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write
3.起動
以下は、OSが起動されログインした直後の画面です。
※初回時OSが起動された際にはちょっとした設定手順があります。
取りあえずは成功!といった所でしょうか。
4.Wifi接続の設定
起動後にいちいちコマンド実行してWifi接続するのは面倒ですので、OS起動時に自動接続させるように起動スクリプトを作成しました。
/etc/rc.localファイルにその内容を記載し作成しました。
以下は、その内容です。
————————————————————————–
#!/bin/sh -e
nmcli device wifi list
nmcli device wifi connect <ここは接続先のSSID> password <ここはパスワード>
exit 0
—————————————————————————
セットアップしたUbuntu 18.04.3 LTSでは、rc-local.serviceが既に自動起動されるように設定されているので、/etc/rc.localファイルを作成するだけでOKでした。
以下コマンドでOSを再起動し、Wifi自動接続される事を確認しました。
# shutdown -r now
5.SSH接続の設定
セットアップしたUbuntu 18.04.3 LTSでは、SSHが既に自動起動されるように設定されているので、特に何もしなくてもOKでした。
ホストPCからJETSON NANOのIPアドレスへSSH接続し、無事接続される事を確認しました。
次回はホストPCにVMwareでUtbuntuをインストール、そこにVIDIA SDK Managerをインストールし、JETSON NANOとの開発連携をしてみようと思います。
apt-Kali Linuxリポジトリの無効な署名:「次の署名は無効でした:EXPKEYSIG ED444FF07D8D0BF6 Kali Linuxリポジトリ」
https://qiita.com/halspring/items/115ab22de1a3be032950
sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com [キー]
Dockerを使ってKali Linuxの環境を構築した時のメモ
DockerでKali Linuxコンテナ立ち上げ(ホㇲトOSはWindows10 Pro)
UbuntuでKali Linux(GUI)コンテナを利用する
※コンテナのIPで直接アクセスできるかどうか
route add 172.17.0.0 MASK 255.255.0.0 10.0.75.2
IPアドレスは、
docker runの場合は、172.17.x.x
docker-compose up -d の場合は、172.18.x.x
になる
※Kali Linuxの日本語化
Kali Linuxで日本語入力するためにパッケージを追加インストール