Google AIYキットの機械学習モデル

機械学習は、データで発見されたパターンと関係に基づいて予測を行うことができるソフトウェアモデルを構築するための手法です。 これらのモデルを試して、機械学習の実際の動作を確認してください。

![2_vision-kit-user-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/054999b9-7c12-fa86-f522-ab56db9efb89.jpeg)


- サポートされているデバイス：Google AIY Vision kit, ここで入手: https://store.gravitylink.com/global

独自のモデルを作成しましたか？ 今後のプロジェクトへの寄付を受け付けています。

###顔検出器
顔検出器モデルは、画像から顔を見つけて識別します。 また、各顔の「喜びスコア」も提供します。

##### デモ：顔検出器
このデモでは、Vision Kitカメラまたは画像を使用して、存在する顔の数を推測します。

#####必要なもの
最新のSDカードイメージでビジョンキットを組み立てました。

#####ステップ1：接続する
まず、キットに接続し、ターミナルを開いていることを確認します。 以下のすべてのコマンドは、キットのRaspberry Piで実行する必要があります。

#####ステップ2：現在のデモを停止する
ビジョンキットでは、キットの電源を入れるとデフォルトで実行されるJoy Detectorなどの別のデモを実行している場合があります。 キットの前面にある緑色のプライバシーLEDが点灯していれば、動作していることがわかります。 次のコマンドでJoy Detectorを停止できます:

```
sudo systemctl stop joy_detection_demo
```
または、カメラを使用する別のデモを実行している場合は、ターミナルでControl + Cを押して停止します。

#####ステップ3：保存された画像で顔検出器を実行する
最初に、1つ以上の顔を含む画像を見つけて、コマンド`wget <URL>`を使用してダウンロードします。

たとえば、クリエイティブコモンズの下でライセンスされている画像は次のとおりです:

```
wget https://farm3.staticflickr.com/4109/5031905069_cd67b182e3_o.jpg -O faces.jpg
```
ファイルは、`faces.jpg`という名前の現在のディレクトリにダウンロードされます。

次に、次のコマンドを使用してデモを実行します:

```
~/AIY-projects-python/src/examples/vision/face_detection.py --input faces.jpeg --output faces-result.jpeg
```

検出された顔ごとに、デモは顔のスコアや喜びのスコアなどの情報を出力します。 また、出力場所に画像を作成します。これは、各顔の周りにボックスを含む画像のコピーです。

顔が検出されなかった場合、画面には何も印刷されません。 顔がより明るく、カメラに直接向いている画像を使用してみてください。

#####ステップ4：Vision Kitカメラで顔検出器を実行する
Vision Kitのカメラを使用して、リアルタイムで顔を検出することもできます。

実行したい連続推論の数を指定して、次のコマンドを実行するだけです（開始するには20を試してください）:

```
~/AIY-projects-python/src/examples/vision/face_detection_camera.py --num_frames 20
```

> 注：`num_frames`を指定しない場合、Control + Cを押して停止するまで、デモは永久に継続します。

デモの開始には時間がかかります。 しばらくお待ちください。 開始されると、各フレームでの顔の検出は非常に高速です。

そのカメラをいくつかの顔に向けます！ ターミナルウィンドウに、キットが各フレームの顔の数を印刷していることがわかります。 また、キットをモニターに接続している場合は、検出された各顔の周りのボックスとともに、カメラの表示内容を示すウィンドウが表示されます。

端末に印刷されたすべての行が`num_faces = 0`と表示されている場合、モデルは顔を検出していません。 もう一度試してください。ただし、被写体が正面から十分に照らされており、被写体の真後ろに明るい光がないことを確認してください。

### 犬/猫/人間検知器

Dog / Cat / Human Detectorは、画像に犬、猫、または人がいるかどうかを識別し、識別されたオブジェクトの周りにボックスを描画できます。 MobileNetモデルアーキテクチャに基づいています。

#### デモ：人間、猫、または犬？
人、猫、犬を見つけるのは非常に簡単ですが、コンピューターでも同じように行うのは非常に難しい場合があります。 このデモでは、画像認識モデルを使用して画像を取得し、その上に人、猫、犬がいるかどうかを推測します。

##### 必要なもの
最新のSDカードイメージでビジョンキットを組み立てました。

##### ステップ1：接続する
まず、キットに接続し、ターミナルを開いていることを確認します。 以下のすべてのコマンドは、キットのRaspberry Piで実行する必要があります。

##### ステップ2：現在のデモを停止する
ビジョンキットでは、キットの電源を入れるとデフォルトで実行されるJoy Detectorなどの別のデモを実行している場合があります。 キットの前面にある緑色のプライバシーLEDが点灯していれば、動作していることがわかります。 次のコマンドでJoy Detectorを停止できます:

```
sudo systemctl stop joy_detection_demo
```
または、カメラを使用する別のデモを実行している場合は、ターミナルでControl + Cを押して停止します。

#####ステップ3：モデルで使用する画像を見つける
このデモでは、カメラを使用する代わりに、画像を渡す必要があります。 オンラインで画像を見つけて、コマンドwget <URL>を使用してダウンロードします。

たとえば、クリエイティブコモンズの下でライセンスされている画像は次のとおりです:

```
wget https://c8.staticflickr.com/8/7580/15865399370_3857b60669_o.jpg -O dog.jpg
```
ファイルは、dog.jpgという名前の現在のディレクトリにダウンロードされます。

##### ステップ4：犬/猫/人間検知器を実行する
次のコマンドでデモを実行します:

```
~/AIY-projects-python/src/examples/vision/object_detection.py --input dog.jpg
```

モデルは画像を取得し、その中にあるものを検出しようと試み、端末画面にその推測を印刷します。 人、猫、犬と一緒にいくつかの異なる画像を試してください。

また、--output引数でファイル名を指定して、検出された犬、猫、または人間の周りの境界ボックスを示す画像を受け取ることもできます。 例えば：

```
~/AIY-projects-python/src/examples/vision/object_detection.py \
--input dog.jpg --output result.jpg
```
> 注：生の画像データをRaspberry PiメモリからVision Bonnetに転送する必要があるため、デモの開始には少し時間がかかります。実際の画像分類は非常に高速に行われます。 face_detection_camera.pyデモに示すように、Piカメラから直接画像を処理する場合、この遅延は回避されます。

### ディッシュ分類器

Dish Classifierモデルは、画像内の食品を識別するように設計されています。 MobileNetモデルアーキテクチャに基づいており、2,000種類以上の食品を認識するようにトレーニングされています。

#### デモ：私の皿には何がありますか？
画像をデモに送信すると、画像内の食べ物を推測しようとします。

#####必要なもの
最新のSDカードイメージでビジョンキットを組み立てました。

#####ステップ1：接続する
まず、キットに接続し、ターミナルを開いていることを確認します。 以下のすべてのコマンドは、キットのRaspberry Piで実行する必要があります。

#####ステップ2：現在のデモを停止する
ビジョンキットでは、キットの電源を入れるとデフォルトで実行されるJoy Detectorなどの別のデモを実行している場合があります。 キットの前面にある緑色のプライバシーLEDが点灯していれば、動作していることがわかります。 次のコマンドでJoy Detectorを停止できます:

```
sudo systemctl stop joy_detection_demo
```
または、カメラを使用する別のデモを実行している場合は、ターミナルでControl + Cを押して停止します。

#####ステップ3：モデルで使用する画像を見つける
このデモでは、カメラを使用する代わりに、画像を渡す必要があります。 したがって、食べ物の画像を見つけて、コマンド`wget <URL>` を使用してダウンロードします。

たとえば、クリエイティブコモンズの下でライセンスされている画像は次のとおりです。

```
wget https://farm5.staticflickr.com/7284/16301478750_b036c617cb_o.jpg -O food.jpg
```

ファイルは、food.jpgという名前の現在のディレクトリにダウンロードされます。

##### ステップ4：Dish Detectorを実行する
次のコマンドでデモを実行します。

```
〜/ AIY-projects-python / src / examples / vision / dish_classification.py --input food.jpg
```

食物探知機は食物を推測し、その答えを端末画面に表示します。

果物、野菜、または穀物の他の写真を試してください。 または、1つのリンゴのようなオブジェクトを1つだけ試し、次にアイテムの束を試します。

> 注：生の画像データをRaspberry PiメモリからVision Bonnetに転送する必要があるため、デモの開始には少し時間がかかります。実際の画像分類は非常に高速に行われます。 `face_detection_camera.py` デモに示すように、Piカメラから直接画像を処理する場合、この遅延は回避されます。

### 画像分類器

Image Classifierデモは、1,000種類のオブジェクトを識別するように設計されています。 このデモでは、SqueezeNetモデルまたはGoogleのMobileNetモデルアーキテクチャを使用できます。

####デモ：画像分類
このデモでは、オブジェクト検出モデルを使用して、画像からオブジェクトを識別します。 好きな画像を試して、モデルの精度を確認してください。

SqueezeNetモデルまたはGoogleのMobileNetモデルを使用して、このデモを実行できます。 MobileNetは通常、ImageNetデータベースからより多くのオブジェクトを正確に識別しますが、どちらもモバイルデバイスでの画像認識の競合モデルアーキテクチャです。 両方を試して、どちらが最適かを確認してください。

#####必要なもの
最新のSDカードイメージでビジョンキットを組み立てました。

#####ステップ1：接続する
まず、キットに接続し、ターミナルを開いていることを確認します。 以下のすべてのコマンドは、キットのRaspberry Piで実行する必要があります。

#####ステップ2：現在のデモを停止する
ビジョンキットでは、キットの電源を入れるとデフォルトで実行されるJoy Detectorなどの別のデモを実行している場合があります。 キットの前面にある緑色のプライバシーLEDが点灯していれば、動作していることがわかります。 次のコマンドでJoy Detectorを停止できます。

```
sudo systemctl stop joy_detection_demo
```
または、カメラを使用する別のデモを実行している場合は、ターミナルでControl + Cを押して停止します。

#####ステップ3：モデルで使用する画像を見つける
このデモでは、カメラを使用する代わりに、画像を渡す必要があります。だから、何でもの画像を見つけてください！そしてモデルがそれが何であるかを知っているかどうかを確認してください。コマンドwget <URL>を使用してダウンロードできます。

たとえば、クリエイティブコモンズの下でライセンスされている画像は次のとおりです。

```
wget https://farm4.staticflickr.com/4110/5099896296_2e2617a0a8_o.jpg -O flower.jpg
```

ファイルは、`flower.jpg` という名前の現在のディレクトリにダウンロードされます。

####ステップ4：デモを実行する
次のコマンドでデモを実行します。

```
〜/ AIY-projects-python / src / examples / vision / image_classification.py --input flower.jpg
```

分類結果は端末に出力されます。

デフォルトでは、デモはMobileNetアーキテクチャを使用します。 SqeezeNetで試してみたい場合は、次のようにそのモデルを指定します。

```
〜/ AIY-projects-python / src / examples / vision / image_classification.py --input flower.jpg --model squeezenet
```

両方のモデルアーキテクチャを試して、ユースケースに最適なものを見つけてください。

注：生の画像データをRaspberry PiメモリからVision Bonnetに転送する必要があるため、デモの開始には少し時間がかかります。実際の画像分類は非常に高速に行われます。 `face_detection_camera.py` デモに示すように、Piカメラから直接画像を処理する場合、この遅延は回避されます。

###Nature Explorer

Nature Explorerには、iNaturalistコミュニティから提供された写真でトレーニングされた、MobileNetに基づく3つの機械学習モデルがあります。 これらのモデルは、4,080の異なる種（〜960鳥、〜1020昆虫、〜2100植物）を認識するように構築されています。

種と画像は、Visipediaが整理したiNaturalist 2017競争データセットのサブセットです。

####デモ：NATURE EXPLORER
このデモでは、画像を使用してモデルがそれらを検出および識別できるかどうかを確認することで、植物、昆虫、鳥を検出できる3つのNature Explorerモデルを試すことができます。このモデルは〜4,080を超える異なる種を検出できるため、あらゆる種類の画像を試すことをお勧めします。

#####必要なもの
最新のSDカードイメージでビジョンキットを組み立てました（このサンプルは2018-11-16リリースで追加されました）。

#####ステップ1：接続する
まず、キットに接続し、ターミナルを開いていることを確認します。以下のすべてのコマンドは、キットのRaspberry Piで実行する必要があります。

#####ステップ2：現在のデモを停止する
ビジョンキットでは、キットの電源を入れるとデフォルトで実行されるJoy Detectorなどの別のデモを実行している場合があります。キットの前面にある緑色のプライバシーLEDが点灯していれば、動作していることがわかります。次のコマンドでJoy Detectorを停止できます。

```
sudo systemctl stop joy_detection_demo
```

または、カメラを使用する別のデモを実行している場合は、ターミナルでControl + Cを押して停止します。

#####ステップ3：分類する画像を見つける
このデモでは、カメラを使用する代わりに、画像を渡す必要があります。鳥、昆虫、または植物の画像を見つけて、コマンドwget <URL>を使用してダウンロードします。

たとえば、クリエイティブコモンズの下でライセンスされている画像は次のとおりです。

```
wget https://c1.staticflickr.com/1/542/19730052293_4e9bede5d0_o.jpg -O bird.jpg

```

ファイルは、`bird.jpg` という名前の現在のディレクトリにダウンロードされます。

#####ステップ3：Nature Explorerを実行する
次のコマンドで鳥の分類器を実行します。

```
〜/ AIY-projects-python / src / examples / vision / inaturalist_classification.py \
  --input bird.jpg --model birds
```

分類結果は端末に出力されます。

代わりに昆虫または植物を分類するには、適切な画像を提供し、モデル名を鳥から昆虫または植物に変更します。

> 注：生の画像データをRaspberry PiメモリからVision Bonnetに転送する必要があるため、デモの開始には少し時間がかかります。実際の画像分類は非常に高速に行われます。 `face_detection_camera.py` デモに示すように、Piカメラから直接画像を処理する場合、この遅延は回避されます。

![vision-075.8532d.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/08c0ce94-b4b0-328a-7153-41cf6633c65b.jpeg)