Google Coralって何？

# ■　はじめに
本記事は、情報のまとめを行うものであり、正しい情報を伝えるものではありません。
間違っていたらコメントで教えていただければ幸いです。

なお、作業が進むと更新を行う予定です。**ストックすると通知が飛びます！！**

# ■　Google Coralって何？

https://ja.wikipedia.org/wiki/Google_Coral
出典: フリー百科事典『ウィキペディア（Wikipedia）』

    Google Coral（グーグル コーラル）とはGoogleが開発、販売するローカルAIプラットフォームのブランド。
    テンソル・プロセッシング・ユニットであるEdge TPUを備える[1]。
    アクセラレータとして既存のPCと接続して利用する事も可能。
    システムオンモジュール:SoMで迅速に機械学習推論アプリケーションを試作可能。

所謂、ディープラーニングを行う専用プロセッサー（アクセラレータ）のことを呼びます。

ディープラーニングといえば、GPUを使った計算が９割以上占めていると思います。
正直、デスクトップPCに接続されたGPUにかなう性能は出ません。
ディープラーニングを開発する目的である方は、PCIEx16に接続されたクソ高いGPUを何台も接続して、電力を食いまくりながら計算していただければと思います。

この**"専用プロセッサ"**という枠が必要な場面は、主に**組込み機器開発**での場面です。

少ない面積、少ない電力、少ないCPUやメモリ、少ない時間に少ない人件費。

そういった場面で、研究用とで使われるGPUをフルに使うという事はできません。

専用のプロセッサーを使い、ディープラーニングの演算を行い、結果を別の小さなCPUが受け取る。
そういう使い方が増えてきた様にも思えます。

え？それならNvidia jetson nanoでいいんじゃ無い？
はっきり言うと、**その通りです。**前に申したデスクトップ級のPC環境に少し小さくしたGPUが乗っていますので、GPUを回す環境としては、やはり最適だと思います。

このGoogle Coralは、そんなNvidia一択の世界を打破するために、対抗馬として登場した話になります。
Nvideaよりも小さい環境、例えばカメラ内部に搭載するや、なんとかHomeに入れるとか、スマフォに入れるとか、衛星に入れるとか・・・Nvidiaが参入できない場面に切り込む様な商品であると思っていただければと思います。

さて、謎の巨大企業Nvidiaとの違いを話しましたが、他にも似た様なアクセラレータチップはあります。

Intel Movidiusシリーズです。
これは元々Intel社が持っていた知見ではなく、Movidiusというベンチャー企業を買収し、試しにIntelブランドで販売したという経緯があり、**Intelが本気でサポートしている様なデバイスではありません**（IntelEdisonに詳しかった著者）　ただ、買収したMovidiusのエンジニアは今も頑張っている様で、ソフトウェア周りはかなりよくなっていると思われます。問題は、Intelが間に入ったせいで、ハードウェア周りの情報が開示されていない（NDA結んだメーカーにのみ公開している様で、採用基板は見受けられます）ので、不満はあります。

ただ、悔しいことに、アクセラレータチップを使った大きいニュースは、Intelが勝ち取った様です。
**インテルが人工衛星にローカルAI処理機能を提供、雲を自動的に除去し最大30％の帯域幅を節約**
https://jp.techcrunch.com/2020/10/21/2020-10-20-intel-is-providing-the-smarts-for-the-first-satellite-with-local-ai-processing-on-board/

# ■　Google Coralについて

さて、ライバルの話はおいといて、本題のGoogleが提供するCoralについてまとめていきます。

## Q.誰が作ってるの？
　メインはGoogle社です。

後述のAccelerator Moduleについては、村田製作所さんとコラボしているようです（大変高まる）
　https://www.murata.com/ja-jp/products/info/other/other/2020/0106

## Q.何ができるの？
 Google社が作っているTensorflowに対応したEdge TPU modelを実行します。
すでに動くと開示されたモデルは以下のURLにあります。
https://coral.ai/models/


### ●　画像分類用モデル
モデル名 | 認識できる数  | データセット | インプットサイズ
-----------|-------------|---------|------------
EfficientNet-EdgeTpu (S) | 1,000 types of objects | ImageNet | 224x224
EfficientNet-EdgeTpu (M) | 1,000 types of objects | ImageNet | 240x240
EfficientNet-EdgeTpu (L) | 1,000 types of objects | ImageNet | 300x300
MobileNet V1 (ImageNet) | 1,000 types of objects | ImageNet | 224x224
MobileNet V2 (ImageNet) | 1,000 types of objects | ImageNet | 224x224
MobileNet V2 (iNat plants) | 2,000+ types of plants | iNaturalist | 224x224
MobileNet V2 (iNat birds) | 900+ types of birds | iNaturalist | 224x224
Inception V1 (ImageNet) | 1,000 types of objects | ImageNet | 224x224
Inception V2 (ImageNet) | 1,000 types of objects | ImageNet | 224x224
Inception V3 (ImageNet) | 1,000 types of objects | ImageNet | 299x299
Inception V4 (ImageNet) | 1,000 types of objects | ImageNet | 299x299

細かい違いだが、認識できる数や画像サイズ等に違いがある。

### ●　物体検知用モデル

モデル名 | 認識できる数  | データセット | インプットサイズ
-----------|-------------|---------|------------
MobileNet SSD v1 (COCO) | 90 types of objects | COCO | 300x300
MobileNet SSD v2 (COCO) | 90 types of objects | COCO | 300x300
MobileNet SSD v2 (Faces) | human faces | Open Images v4 | 320x320(Does not require a labels file)
MobileNet v2 DeepLab v3 (0.5 depth multiplier) | 20 types of objects | PASCAL VOC 2012 | 513x513
MobileNet v2 DeepLab v3 (1.0 depth multiplier) | 20 types of objects | PASCAL VOC 2012 | 513x513

検知できる物体に幅があるため、それ用のモデルを探すのが良さそう。

### ●　セマンティックセグメンテーション
日本語が無い言葉なのでそのまま。なんとなく、境界認識モデルとでも言おうか。

モデル名 | 認識できる数  | データセット | インプットサイズ
-----------|-------------|---------|------------
MobileNet v2 DeepLab v3 (0.5 depth multiplier) | 20 types of objects | PASCAL VOC 2012 |  513x513
MobileNet v2 DeepLab v3 (1.0 depth multiplier) |  20 types of objects | PASCAL VOC 2012 | 513x513

そのほかは、各自で調べるなりしていただきたい。

### その他　調べたモデル

　Edge TPU - Tiny YOLO v3
https://github.com/guichristmann/edge-tpu-tiny-yolo

著者が大好きなYOLOも対応していた。しかもV3なのでそこそこ検知できるはず。

## Q.どんな商品？

### Dev Board
![スクリーンショット 2020-10-27 18.30.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/279093e6-031f-1bb8-d060-090fc99f15ba.png)

https://coral.ai/products/dev-board

最初に出てきてたが、国内では流行らず

### USB Accelerator
![スクリーンショット 2020-10-27 18.30.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/2df5e471-5ae9-8b21-bcd2-7587b76f7a31.png)

https://coral.ai/products/accelerator

USBで気軽に試せるCoral。国内で少し流行った。

### Dev Board Mini

![スクリーンショット 2020-10-27 18.30.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/2c7ac90f-c516-65db-ab11-b25793fc15c2.png)

https://coral.ai/products/dev-board-mini
これは少し期待。　CoralがPCIeで接続されて早くなったらしい。

### Mini PCIe Accelerator
   M.2 Accelerator A+E key
   M.2 Accelerator B+M key

![スクリーンショット 2020-10-27 18.42.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/6f532e80-6f90-abea-f6ea-cab598763493.png)

https://coral.ai/products/pcie-accelerator
国内では情報なく、PCIeで接続できるCoralではこっちが主力に見えるが・・・

### M.2 Accelerator with Dual Edge TPU

![スクリーンショット 2020-10-27 18.43.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/c2078634-a891-00f4-2591-6b7a6aee417e.png)

https://coral.ai/products/m2-accelerator-dual-edgetpu
調べてみると、どうもPCIE x２が乗ってて、さらに調べてみると　Coral x2らしい。
なので、通常の２倍の性能が？？？


### Accelerator Module
![スクリーンショット 2020-10-27 18.45.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/ac53120a-c9df-8076-887e-c7d50995e480.png)

https://coral.ai/products/accelerator-module
本記事を書くきっかけになったチップ。
値段がとにかく安い。１個2500円ぐらい。しかもMouserで単品購入が可能


# ■　この後何やるの？？
ここから先は著者の活動内容です。
随時更新予定です。

なお、作業が進むと更新を行う予定です。**ストックすると通知が飛びます！！**


## Accelerator Moduleを買いました。

以下のリンクから予約注文をしました。11月26日頃に発送される様です。

https://www.mouser.com/ProductDetail/Coral/G313-06329-00?qs=W%2FMpXkg%252BdQ5zuYI97qPDGQ%3D%3D

## 回路引きました

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/2eeaf417-5e6e-7540-94f4-31835a77e639.png)

こんな感じでサクッと。

## 基板作りました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/3c21a11f-28d0-f890-acd0-bd0ecdbb1032.png)

こんな感じでサクッと。
## 実装しました
基板到着待ち
 更新予定
## 動作確認しました
 更新予定