GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

DT42

BerryNet – ラズベリーパイの深い学習ゲートウェイ

投稿日:

ラズベリーパイの深い学習ゲートウェイ

BerryNet:ラズベリーパイのディープラーニングゲートウェイ

このプロジェクトは、Raspberry Pi 3を深い学習を実行するインテリジェントなゲートウェイに変えます。 インターネットに接続する必要はありません。すべてがローカルでRaspberry Pi 3自体で行われます。 DT42では、最先端のデバイスに深く学ぶことが将来の傾向であると考えています。 データの送信と保存のコストを節約するだけでなく、クラウドに接続せずに画像やビデオに表示されたイベントに応じてデバイスを応答させることができます。

図1は、プロジェクトのソフトウェア・アーキテクチャーを示しています。Node.js、MQTT、およびAIエンジンを使用して、深い学習でイメージまたはビデオ・フレームを分析します。 これまでは、分類エンジンとオブジェクト検出エンジンの2つのAIエンジンがサポートされていました。 図2は、分類とオブジェクト検出の違いを示しています。

このインテリジェントゲートウェイのアプリケーションの1つは、カメラを使用して気になる場所を監視することです。 たとえば、図3は、DT42オフィスでホストされているカメラの分析結果を示しています。 フレームはIPカメラによってキャプチャされ、AIエンジンに提出されました。 AIエンジンの出力がダッシュボードに表示されます。 私たちは電子メールとIM通知に取り組んでいますので、次のリリースで犬が会議エリアに入ったときに通知を受けることができます。

AIエンジン

現在サポートされているAIエンジンは、次のプロジェクトの作業を活用します。

現在サポートされている分類モデルはInception v3 [1] 、検出モデルはTinyYOLO [2]

インストール

$ git clone https://github.com/DT42/BerryNet.git
$ cd BerryNet
$ ./configure

BerryNetの起動と停止

BerryNetはsystemdによって管理されます。 berrynet-manager使用してberrynet-managerを管理できます:

$ berrynet-manager [start | stop | status | log]

構成

すべての設定はconfig.jsます。

  • AIエンジンを選択します。

    • AIエンジンには現在、オブジェクト分類器とオブジェクト検出器の2種類があります。
  • IPカメラのスナップショットアクセスインターフェースを設定します。

  • MQTTのトピック。

ダッシュボード

RPi3上のダッシュボードを開く(タッチスクリーン付き)

ブラウザを開き、URLを入力してください:

http://localhost:8080/index.html#source=dashboard.json

デフォルトのダッシュボード構成ファイルがロードされます。

どのコンピュータからでもブラウザのダッシュボードを開く

ブラウザを開き、URLを入力してください:

http://<gateway-ip>:8080/index.html#source=dashboard.json

データ・ソースをクリックし、MQTTブローカーのIPアドレスをゲートウェイのIPに変更します。

ダッシュボードの設定(ウィジェットの追加方法など)の詳細については、 フリーボードプロジェクトを参照してください。

画像入力を提供する

設定済みのIPカメラを使用して画像をキャプチャするには

$ mosquitto_pub -h localhost -t berrynet/event/camera -m snapshot_ipcam

ボードに接続されたカメラ(RPiカメラまたはUSBウェブカメラ)を使用して画像をキャプチャするには、

$ mosquitto_pub -h localhost -t berrynet/event/camera -m snapshot_boardcam

ローカルイメージを提供するには

$ mosquitto_pub -h localhost -t berrynet/event/localImage -m <image_path>

ボード接続されたカメラからストリーミングを開始および停止するには

$ mosquitto_pub -h localhost -t berrynet/event/camera -m stream_boardcam_start
$ mosquitto_pub -h localhost -t berrynet/event/camera -m stream_boardcam_stop

Nest IPカメラからストリーミングを開始および停止するには

$ mosquitto_pub -h localhost -t berrynet/event/camera -m stream_nest_ipcam_start
$ mosquitto_pub -h localhost -t berrynet/event/camera -m stream_nest_ipcam_stop

データコレクタを有効にする

データ分析のためにスナップショットと推論の結果を保存することができます。

データコレクタを有効にするには、config.jsにストレージディレクトリパスを設定します。

config.storageDirPath = '<data-storage-dirpath>';

BerryNetを再起動します。

列車にデータを使用する

YOLOv2モデルの再学習のオリジナルの指示は、darknetのgithubリポジトリを参照してください

現在のBerryNetでは、YOLOv2の代わりにTinyYoloが使用されています。 主な違いは次のとおりです。

  1. tiny-yolo.cfgと同じ内容のファイルyolo-obj.cfgを作成します
  2. 畳み込みレイヤ(6.1MB)のために、あらかじめ訓練されたダークネット参照モデルのダークネット・ウェイトdarknet.weights.12ダウンロードしてください。https: //drive.google.com/drive/folders/0B-oZJEwmkAObMzAtc2QzZDhyVGM?usp=sharing

残りの部分は、YOLOを再訓練するのと同じです。

LabelMeを使用してデータに注釈を付ける場合、 utils/xmlTotxt.pyはxml形式をutils/xmlTotxt.pyが使用するテキスト形式に変換するのに役立ちます。

討論

質問、提案、またはアイデアに関するディスカッションについては、 Googleグループに問い合わせてください。







-DT42
-, , , ,

執筆者: