Jetson NanoでYoloをすぐ利用する

###Jetson NanoでYoloをすぐ利用する

[Jetson Download Center ](https://developer.nvidia.com/embedded/downloads)でSD Card Imageをダウンロードする
<img width="598" alt="スクリーンショット 2020-07-16 22.30.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674266/cdb5b165-861c-1e3d-5a5b-871040a27489.png">
この**5Gバイト**の**ISOファイル**の中にCudaやOpenCv、TensorRTが既にインストールされおり、開発環境を整えずにOSをインストールすればすぐに利用することができます。(パスは設定する必要あり)

インストールされているソフトの中身はここから見ることができます
[JetPack](https://developer.nvidia.com/embedded/jetpack)

- TensorRT
- cuDNN
- CUDA
- Multimedia API
- Developer Tools
- 他 DeepStrem SDK

###Cudaのパスを設定する

```
#　vimをインストール
sudo apt install vim

$ sudo vim ~/.bashrc

export PATH=/usr/local/cuda/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}

#保存する
$ source ~/.bashrc

# 確認する
$ nvcc -V
```

###Yoloを試してみる

```
$ sudo apt install git

$ git clone https://github.com/AlexeyAB/darknet.git

$ cd darknet

darknet$ vim Makefile
#GPU CUDNN OEPNCVの設定を有効にする
GPU=1
CUDNN=1
OPENCV=1

darknet$ make

#weightsをダウンロード
$ wget https://pjreddie.com/media/files/yolov3.weights

#Yoloを実行してみる
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
```
<img width="400" alt="スクリーンショット 2020-07-16 22.56.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674266/7bb9fe8d-d74d-0a01-00b9-19c1b8b5dfa3.png">
インストールでつまずくことなくYoloを試すことができました。

###Cudaに元々あるサンプルプログラムを試してみる

Cudaのフォルダの中に試すようにサンプルファイルがあります。
このファイルをmakeでビルドし、Cudaが実行できるか試せします。

```
# 既にパスが通った状態でshファイルを実行する　samplesのバージョンは確認ください
$ cuda-install-samples-10.0.sh フォルダ名

$ cd フォルダ名/NVIDIA_CUDA-10.0_Samples

$ make

$ cd NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release

$ ./deviceQuery

$ ./bandwidthTest

$ ./volumeRender 
```
<img width="400" alt="スクリーンショット 2020-07-16 23.35.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674266/bc9e0db7-04a8-6e9d-1f29-a3865da06447.png">
簡単に実行できました。

**[Jetson RaspberryPi の画面をPCディスプレイに表示させる](https://qiita.com/aqzihb/items/d2fc45dc1993a3cfbcf1)**

###感想
数学の知識が必須で難しいと思われていた機械学習、深層学習もNvidiaが提供してくれるソフトを使えば、関数を叩くだけである程度のことができてしまう。Webプログラマーやスマホアプリ開発者でも参入できる気がしてきました。物体検出を例に取れば、Yoloというソフトがあり、１から独自開発の検出プログラムを書かなくてもライブラリーの関数を組み合わせればできる気がする。Nividiaのライブラリー物体検出、物体分類、骨格検出、映像の配信などがあり、これらを中心に学んでいければ、難しいことをやらなくても、関数を組み合わせていけば開発できるのではないか？仕事にできるのではないか？そういう気がしています。
pythonも環境が整ってきています。Pylance(インテリセンス)やPyright（型指定）を拡張するライブラリーがでてきており、静的言語やる感覚でかけそうな気がします。
PythonとNividaのライブラリを勉強すれば、他業種のプログラマーでも仕事にありつけるかもしれない。
####Jetsonに含まれているソフト群
<img width="900" alt="スクリーンショット 2020-07-16 22.56.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674266/24c555a3-82c4-1acb-5e60-572936617b19.png">

**[Jetson実用例 50例以上](https://developer.nvidia.com/embedded/community/jetson-projects)**
Gitソースとビデオと作り方が載っています

**[Jetson Yolo USBカメラで物体を認識させる](https://qiita.com/aqzihb/items/7a8b9b4e21aa3e21585e)**

<a href="https://px.a8.net/svt/ejp?a8mat=3HA5YE+3SXPWY+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fpython-beginner%2F" rel="nofollow"><img width="350" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674266/4706654b-9785-84d2-ee97-17ce9f7e4b11.jpeg"></a>
<a href="https://px.a8.net/svt/ejp?a8mat=3HA5YE+3SXPWY+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fpython-beginner%2F" rel="nofollow">現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル</a>
Pythonを学ぶ際にとても役に立ちました！

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B08MZFQWDP/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B08MZFQWDP&linkCode=as2&tag=iotana-22&linkId=37b7556bf63c7b4bb3652296b3e8cc7a"><img width="300" alt="NVIDIA Jetson Nano 2GB 開発者キット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674266/7370d26c-43d1-3a68-c233-5167e1df46e4.jpeg"></a>
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B08MZFQWDP/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B08MZFQWDP&linkCode=as2&tag=iotana-22&linkId=37b7556bf63c7b4bb3652296b3e8cc7a">NVIDIA Jetson Nano 2GB 開発者キット</a>