とりあえず作業やテストに必要な設定を一通りインストール。
NXも同じJetpack4.4のopencv4.1.1だとYOLOv3が遅いのでスクリプトのgstreamerをオフにしする。
cmakeflugsは-D WITH_GSTREAMER=ONをOFFにするコメントアウトしても
gstreamerはインストールされる。システムにエラーが出てきたので一度クリーンインストール。
https://github.com/mdegans/nano_build_opencv
7.5FPSから9.1FPSに改善。
Jeston nano・NX setting
ファイル名を英語に変更
LANG=C xdg-user-dirs-gtk-update
sudo apt-get update
sudo apt-get upgrade
エディター、画像処理ソフト、ドライブ用ソフトをインストール
sudo apt-get install nano
sudo apt-get install ffmpeg
sudo apt-get install gparted
参考用ページ
https://www.nakasha.co.jp/future/ai/vol2_yolov3nvidia_jetson_nano.html
Full Power化
sudo nvpmodel -m 0
sudo jetson_clocks
git clone https://github.com/AlexeyAB/darknet
モデルのダウンロード
Pre-Trained Modelを~/darknetにダウンロードしておきます。
YOLOv3
YOLOv3 SPP
YOLOv3 Tiny
恐らく、Jetson Nanoでカメラと共に使うならTinyモデルの方です。ダメ元でやってみる用にYOLOv3、YOLOv3-SPPも念のため落としておきましょう。
nano .bashrc
export PATH=/usr/local/cuda/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
***********************************************************
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=1
LIBSO=1
ZED_CAMERA=0
# set GPU=1 and CUDNN=1 to speedup on GPU
# set CUDNN_HALF=1 to further speedup 3 x times (Mixed-precision on Tensor Cores) GPU: Volta, Xavier, Turing and higher
# set AVX=1 and OPENMP=1 to speedup on CPU (if error occurs then set AVX=0)
DEBUG=0
ARCH= -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=[sm_50,compute_50] \
-gencode arch=compute_52,code=[sm_52,compute_52] \
# -gencode arch=compute_61,code=[sm_61,compute_61]
OS := $(shell uname)
# Tesla V100
# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70]
# GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores
# ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]
# Jetson XAVIER
# ARCH= -gencode arch=compute_72,code=[sm_72,compute_72]
# GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
# ARCH= -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61
# GP100/Tesla P100 - DGX-1
# ARCH= -gencode arch=compute_60,code=sm_60
# For Jetson TX1, Tegra X1, DRIVE CX, DRIVE PX - uncomment:
ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]
# For Jetson Tx2 or Drive-PX2 uncomment:
# ARCH= -gencode arch=compute_62,code=[sm_62,compute_62]
*********************************************************
YOLOv3モデルを使って、WEBカメラで認識させてみます。
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights
./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -c 0
ラベリングする(アノテーション)
Yoloは上記で作ったイメージファイルの他に、これらに対応したTXTファイルが必要です。(イメージファイルのどの部分に対応するクラス画像があるかを示すテキストファイルで、イメージファイルの枚数分必要です)ここら辺が一番単調で、手作業では時間のかかる部分となります。今回ラベリングソフトはlabelimgを使いました。以下インストール方法ですが、すでにpython3をインストールしている場合は3,4行目は必要ありません。
git clone https://github.com/tzutalin/labelImg.git
sudo apt install pyqt5-dev-tools
sudo apt install python3-pip
sudo pip3 install lxml
cd labelImg
make qt5py3
python3 labelImg.py
そしてJetson NanoでexFATフォーマットのUSBメモリーが使えるように、以下コマンドで「exfat-fuse」と「exfat-utils」をインストールします。
$ sudo apt-get update
$ sudo apt-get install exfat-fuse expat-utils
続いてJetson Nanoにカードリーダーを接続し、そこにSDカードAを接続します。
さらに別のポートにUSBメモリーを接続します。
clone micro SD card
sudo dd bs=4M if=/dev/sde of=jetcard_image.img status=progress count=6250
*6250 x 4MB=25000MB
マイクロSDカードに書込み
sudo dd bs=4M if=jetcard_image.img of=/dev/sde status=progress
CUDAのサンプルコード
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0563?page=4
CUDAのサンプルコードは「/usr/local/cuda-10.2/samples/」にインストールされています。そこでサンプルコードをあらかじめユーザーが読み書き可能な領域にコピーしておきます。
$ cp -a /usr/local/cuda-10.2/samples/ ~/
サンプルコードのトップディレクトリでmakeを実行すればひととおりビルドしてくれます。時間がかかるのが嫌なら,次の例のように個別にビルドしましょう。
$ cd ~/samples/1_Utilities/deviceQuery
$ make
$ ./deviceQuery
$ cd ~/samples/5_Simulations/oceanFFT/
$ make
$ ./oceanFFT
$ cd ~/samples/5_Simulations/smokeParticles/
$ make
$ ./smokeParticles
Swapの設定
https://www.jetsonhacks.com/2019/04/14/jetson-nano-use-more-memory/
git clone https://github.com/JetsonHacksNano/installSwapfile
cd installSwapfile
./installSwapfile.sh
wiwao@wiwao-desktop:~$ free -h
total used free shared buff/cache available
Mem: 3.9G 2.1G 523M 345M 1.3G 1.3G
Swap: 1.9G 24K 1.9G
wiwao@wiwao-desktop:~/installSwapfile$ ./installSwapfile.sh
Creating Swapfile at: /mnt
Swapfile Size: 6G
Automount: Y
-rw-r--r-- 1 root root 6.0G 8月 19 10:03 swapfile
-rw------- 1 root root 6.0G 8月 19 10:03 swapfile
Setting up swapspace version 1, size = 6 GiB (6442446848 bytes)
no label, UUID=d46292ab-c15d-4c3f-937e-870c5a1f6200
Filename Type Size Used Priority
/dev/zram0 partition 506392 132 5
/dev/zram1 partition 506392 132 5
/dev/zram2 partition 506392 132 5
/dev/zram3 partition 506392 132 5
/mnt/swapfile file 6291452 0 -1
Modifying /etc/fstab to enable on boot
/mnt/swapfile
Swap file has been created
Reboot to make sure changes are in effect
wiwao@wiwao-desktop:~/installSwapfile$ free -h
total used free shared buff/cache available
Mem: 3.9G 2.1G 568M 352M 1.2G 1.3G
Swap: 7.9G 528K 7.9G
************************************************************************************
# /etc/fstab: static file system information.
#
# These are the filesystems that are always mounted on boot, you can
# override any of these by copying the appropriate line from this file into
# /etc/fstab and tweaking it as you see fit. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/root / ext4 defaults 0 1
/mnt/swapfile swap swap defaults 0 0
************************************************************************************
*********
スワップファイルのONとOFFはコメントアウトをmnt/swapfile swap swap defaults 0 0に追加もしくは削除
*********
# /etc/fstab: static file system information.
#
# These are the filesystems that are always mounted on boot, you can
# override any of these by copying the appropriate line from this file into
# /etc/fstab and tweaking it as you see fit. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/root / ext4 defaults 0 1
# /mnt/swapfile swap swap defaults 0 0
gpuGraphを使う方法
以下ソフトを使用します。
gpuGraph
For Python 3, Matplotlib may be installed as follows:
$ sudo apt-get install python3-matplotlib
$ git clone https://github.com/JetsonHacksNano/gpuGraph
$ cd gpuGraph
$ python3 gpuGraph.py
オープンフレームワークスのインストール方法
wget https://openframeworks.cc/ci_server/versions/nightly/of_v20200818_linuxarmv7l_nightly.tar.gz
tar -zxvf of_v20200818_linuxarmv7l_nightly.tar.gz
mv of_v20200818_linuxarmv7l_release openFrameworks
mv openFrameworks of_10.1
sudo apt install cmake
cd of_10.1/scripts/linux/ubuntu
sudo ./install_dependencies.sh
1.
nano of_10.1/libs/openFrameworksCompiled/project/makefileCommon/config.shared.mk
else ifeq ($(PLATFORM_ARCH),armv7l)
を
else ifeq ($(PLATFORM_ARCH),aarch64)
2.
nano of_10.1/libs/openFrameworksCompiled/project/linuxarmv7l/config.linuxarmv7l.default.mk
を開き41〜48行目付近
#PLATFORM_CFLAGS += -march=armv7
#PLATFORM_CFLAGS += -mtune=cortex-a8
#PLATFORM_CFLAGS += -mfpu=neon
#PLATFORM_CFLAGS += -mfloat-abi=hard
PLATFORM_CFLAGS += -fPIC
PLATFORM_CFLAGS += -ftree-vectorize
PLATFORM_CFLAGS += -Wno-psabi
PLATFORM_CFLAGS += -pipe
4行にコメント記号を入れ(上記#)、
さらに69〜71行目付近
#PLATFORM_PKG_CONFIG_LIBRARIES += glesv1_cm
#PLATFORM_PKG_CONFIG_LIBRARIES += glesv2
#PLATFORM_PKG_CONFIG_LIBRARIES += egl
3行にコメント記号を入れて保存。
3.追加のファイルをダウンロードしてビルドした後
Download apothecary to recompile kiss and tess2:
git clone https://github.com/openframeworks/apothecary.git
cd apothecary/apothecary/
./apothecary -t linux download kiss
./apothecary -t linux prepare kiss
./apothecary -t linux build kiss
./apothecary -t linux download tess2
./apothecary -t linux prepare tess2
./apothecary -t linux build tess2
アーカイブをコピーしてオープンフレームワークスの中と入替える
apothecary/apothecary/build/kiss/lib/linux/libkiss.a
to
openFrameworks/libs/kiss/lib/linuxarmv7l/libkiss.a
Copy
apothecary/apothecary/build/tess2_patched/build/libtess2.a
to
openFrameworks/libs/tess2/lib/linuxarmv7l/libtess2.a
最終スクリプトの実行
cd of_10.1/scripts/linux
へ行きコンパイルを実行
./compileOF.sh -j4
その後は各サンプルのフォルダーに入ってmake -j4でmake RunReleaseで実行
0 件のコメント:
コメントを投稿