Skip to content

Latest commit

 

History

History
51 lines (42 loc) · 2.06 KB

File metadata and controls

51 lines (42 loc) · 2.06 KB

video streaming

Raspberry Piのカメラで撮影した画像をGPUノードで処理し、その結果をクライアントで表示するシステムを構築します。システム構成を次図に示します。

flowchart LR
  subgraph R["Sensor: Raspberry Pi"]
    C(PiCamera)
    WR(SINETStream)
    C==>WR
  end
  subgraph S[Server]
    subgraph K[Kafka node]
      B[Kafka Broker]
    end
    subgraph G[GPU node]
      OP[OpenPose]
      Y[YOLO]
    end
  B<==>OP
  B<==>Y
  end
  subgraph V["Viewer: VideoViewer.py"]
    RD(SINETStream)
  end
  WR==>B===>RD
Loading

構築するシステムは3つのパートから構成されます。

  • Sensor

    • Raspberry Pi のカメラで撮影した画像をサーバに送信します
    • カメラの撮影には Python ライブラリの picameraを利用します
    • 撮影した画像は SINETStreamライブラリ によりサーバのKafkaブローカに送信されます
  • Server

    • Raspberry PiとViewerの間で画像の送信を中継します
    • ブローカに送信された画像を GPU ノードの OpenPose/YOLO で処理します
  • Viewer

    • Kafkaブローカに送信された画像のストリームをクライアントで表示します
    • Kafkaのトピック名を指定することでビューアが表示する画像を選択することができます
    • Kafkaブローカからの画像の取得にはSINETStreamライブラリを利用します

システムの各パートの構築手順と構築のための資材がサブディレクトリに格納されています。

このシステムで送受信されるメッセージ(画像ファイル)は、全て Server の Kafka ブローカを経由してやり取りされます。そのため Server の構築を始めに行ってください。