はじめてのUltra96  AI EDGEに挑戦編。(シリーズ紹介）

#FPGAでAIをやってみよう。
世の中、AIブーム。AIに興味がある人、やってみようと思っている方は多いみたいです。

FPGAでAIをやらせよう、、ということも話題になっています。
しかし、どっから始めたらいいのか、、わからないことも多いです。

このAI EDGEに挑戦シリーズでは、Ultra96という、安価なFPGAボードをベースにして、
AIを使って、どんなことができるかをご紹介していきたいと思います。

各記事は、準備ができ次第、公開していきます。

#この記事の目標

もっと、身近にFPGAをを目標に、AIを気軽に使ってもらうことにあります。
はじめてFPGAを使う方、FPGAに興味のある方から、
実際に高度に細かく操作をする方法まで、ご紹介します。
パソコンもWindows、Ubuntuの両方に対応しています。

#Vitis AIを使った、AIの実施の流れ。

XILINX 社は、FPGAメーカの一つです。
そこが開発した、AIツールにVits AIがあります。
ここで、Vitis AIを使った、かんたんな開発の流れをご紹介します。

![Vitis-AI-flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/8b89fe18-c8b2-54e3-b175-5adb5f41e6b4.png)

FPGAでのAIの実現の流れは上記図のようになります。（Vitis AIの場合）

まず、学習をパソコンで行います。ここは、Tensorflow Caffe PyTorchが使えます。
また、メーカーから予め学習済みデータも使用できます。
学習済みデータは、FPGA用にデータを変換します。
別途、FPGAのIP設計を行い、ハードウェアを含めた部分を用意します。
推論用アプリケーションはFPGAで動かします。
そのため、アプリケーションをそれぞれ作成します。

すべてを一気にするのは大変なので、内容を分けて、順次ご紹介していきます。

##必要な環境
必要なものをご紹介します。順次記事でもご紹介します。
まずは、Ultra96V2は必要なので、購入してしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/3d287c2a-d645-7aae-9083-e4c0801e7c0a.png)

####ハードウェア

* [Ultra96V2](https://www.avnet.com/shop/japan/products/avnet-engineering-services/aes-ultra96-v2-g-3074457345644050668/ "Ultra96V2")
* [USB-JTAG/UART pod](https://www.avnet.com/shop/japan/products/avnet-engineering-services/aes-acc-u96-jtag-3074457345636446168/ "USB JTAG/UART pod")
* USBケーブル [TypeA-microTypeB USB2.0](https://www.elecom.co.jp/products/U2C-AMB015BK.html "USB2.0 microTypeB")
* USBケーブル [TypeA-microTypeB USB3.0](https://www.elecom.co.jp/products/DH-AMB3N05BK.html "USB3.0 microTypeB")
* [USBカメラ](https://www.logicool.co.jp/ja-jp/product/hd-webcam-c270n "Logicool C270")
* [電源１２V２A以上](https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-5AW4 "12V2A power supply")
* [電源変換ケーブル](https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=2AD6-DEK3　"cable change")



使用するパソコンはWindows10とUbuntu18.04LTSでのご紹介になります。以下のツール（無料ツール）を使うことを前提に話を進めていきます。

####Windows10の場合

* [WSL2](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 "Microsoft WSL") Windows上で、Linuxを動作させるための仕組み
*  [Ubuntu18.04 LTS](https://www.microsoft.com/ja-jp/p/ubuntu-1804-lts/9n9tngvndl3q?activetab=pivot:overviewtab "Microsoft Store Ubuntu 18.04 LTS")　Windows上で、Ubuntuを動かす 
*  [Docker for Windows]( "Docker for Windows")　Windows上でのLinuxコンテナ環境
*  [MobaXterm](https://mobaxterm.mobatek.net/ "MobaXterm") 多機能Xターミナル
*  [TeraTerm](https://ja.osdn.net/projects/ttssh2/ "TeraTerm")　ターミナルソフト
*  [Notepad++](https://notepad-plus-plus.org/ "Notepad++") テキストエディタ
* [Etcher](https://www.balena.io/etcher/ "balena Etcher") SDカードイメージを書き込む

####Ubuntu 18.04 LTSの場合

* [Docker](https://www.docker.com/get-started "Docker") Linuxコンテナ環境
* [Etcher](https://www.balena.io/etcher/ "balena Etcher") SDカードイメージを書き込む あれば便利


####開発ツール
XILINX社製のAI開発ツールです。

* [Vitis 2020.1](https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/vitis.html "Vitis 2020.1")
* [Petalinux 2020.1] (https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/embedded-design-tools.html)
* [Vitis AI](https://github.com/Xilinx/Vitis-AI "Vitis AI Github")

####その他
[はじめてのUltra96　必要なもの](https://qiita.com/basaro_k/items/e5654a0061883afea889)
[はじめてのUltra96 あれば便利なもの](https://qiita.com/basaro_k/items/e5654a0061883afea889)
などを参照してください。

#####パソコンについて
AI開発は基本的に、Linux上（Ubuntu)で、動作します。基本的にLinux(Ubuntu)の方が効率よくできます。
しかし、現状のパソコンOSのシェアは、Windows のシェアが約90%、そのうち Windows 10の方が60%を超えるくらいです。 Linux（Ubuntu) のシェアは1.5%程度です。
AIを使うのに、Linux(Ubuntu) を使わないといけないのはハードルが高くなりますので Windows でもできる方法をここでは紹介します。なお、Windows上 で使える Linux（Ubuntu) は使用します。
 
#掲載記事

####Ultra96v2向けVitis AI のデモ（SDカードイメージ）2020.1版
[Ultra96v2向けVitis AI のデモ（SDカードイメージ）2020.1版](https://qiita.com/basaro_k/items/06080c68e4450e074761) (2020年11月4日公開)
まずは、FPGAでAIが動くことを、確認してもらおう、、というこで、
Ultra96V2で動く、Vitis AIのSDカードイメージをご提供します。


####Ultra96v2でVitis AIを使った、MNIST（手書き文字）の実装。
[Ultra96v2でVitis AIを使った、MNIST（手書き文字）の実装。](https://qiita.com/basaro_k/items/1b9d8b19f0ecbad13153)(2020年11月15日公開）
MNIST　手書き数字を学習から、推論まで行います。USBカメラからの画像認識も行います。

####Ultra96V2にVitis AI IP(DPU)の実装まで
次回公開予定です。