Slide 1

Slide 1 text

2022年02月16日 大田黒 紘之 https://mlops.connpass.com/event/236071/ 第16回 MLOps 勉強会(Online) LT枠

Slide 2

Slide 2 text

Confidential 自己紹介 大田黒 紘之 @xecus , Born in Chiba 1994 ■東京都立産業技術高専 医療福祉工学科 コース (2009/4 - 2014/3) メカトロニクスとか数値計算周りを専攻。 人工衛星開発も一部。 ■首都大学東京に編入 電気電子工学、半導体周りを専攻(量子効 果デバイスとか) ■ABEJA 2015年〜 ・Insight for Retail (IoT x AI利活用プロダク ト)の立ち上げ・拡販 ・AIプロダクト事業部 プラットフォーム グループMGR (2022年1月現在) 社内勉強会用

Slide 3

Slide 3 text

Confidential 突然ですが.... 車を買ったので、世界で一つだけのMyドライブレ コーダーを作りたい!! 社外勉強会用

Slide 4

Slide 4 text

Confidential 何がやりたいか 4 ドライブ レコーダー <従来のドライブレコーダー> SD Card <今考えているドライブレコーダー案> ドライブ レコーダー SD Card 動画 ストレージ AI推論による 意味づけ 車両情報 (運転情報) BIツ ール 等 事故が起きた時に自分・警察・保険会社が見る (それ以外のシーンではほとんど使わない) ECU 車を運転し続けるという体験をアップデートできる Something GPS 社外勉強会用

Slide 5

Slide 5 text

Confidential 機能の指向性を妄想 5 ● ①細かい車両情報(OBD)を蓄積&BIツールで分析できるようにする (オレオレドラレコ基本機能) ● ②撮影した動画をクラウド上で見ることができる(オレオレドラレコ基本機能) ● ③車の維持が楽になる世界 ○ 時間・走っている場所毎のガソリン消費量や燃費変動の見える化。ガソスタレコメンド。 ○ 車の部品のリアルタイム故障検知・予測(車のオルタネータが劣化してきた、BAT電圧低い等) ○ オイル交換やオイルフィルター交換等の目安と近くのお店をレコメンドしてくれる世界 ● ④車と家族の思い出を振り返られるような世界 ■ GPSを用いた走行ログの蓄積と可視化。動画と連携。携帯のアプリから見る事ができる。 ● ⑤解像度の高い運転危険情報が見えるようになる世界 ○ 動画情報の意味解析を通じて、地域ごとのヒヤリハット情報等を蓄積化 & カーナビ反映 ○ 例:地域ごとの危険イベントの集計・見える化 ● ⑥企業やドライバーが環境に配慮できる世界観 ○ 低炭素社会実現の為のCo2排出量の見える化 (SDGs, ESG文脈でもありそう) 個人 社会 社外勉強会用

Slide 6

Slide 6 text

Confidential 課題解決のアプローチ 6 ・ビジョン思考とデザイン思考を組み合 わせて、アプローチしてみる。 ・自分自身ソフトウェアエンジニアなの で、プロトタイピングをしながら進めて みる https://diamond.jp/articles/-/195874?page=2 社外勉強会用

Slide 7

Slide 7 text

Confidential OBD2 7 ● OBD = On Board Diagnosis (車の自己診断機能) ● CAN通信というプロトコルを拡張している ● OBDの歴史は深い ○ 1971年 FI(Fuel Injection: 電子制御式燃料噴射装置)搭 載車の登場 ○ 1980年代 自己診断機能で修理しやすく ○ 1982年 自己診断機能の統一化からOBDの誕生 => OBDのベースに ○ 1996年 OBD-IIの登場 (20年以上前からある枯れたプ ロトコル) ● めっちゃいろんなデータが取れる ○ https://en.wikipedia.org/wiki/OBD-II_PIDs 仮説:OBDを使えば、超細かい車両情報が ドライブレコーダーに記録できるかも 社外勉強会用

Slide 8

Slide 8 text

Confidential OBD2 8 ※OBD端子の位置はメーカー・車種に依存 (TOYOTA RAIZEは運転席の足元に) 社外勉強会用

Slide 9

Slide 9 text

Confidential OBD-IIを利活用するには 9 ECUや周辺コンポーネントのCANバスがOBD用物理ポートから出ているので、 そこを拝借して、データの送受信を行う (結構怖いw) http://make.bcde.jp/raspberry-pi/obd2canで自動車と通信ハード編/ https://monoist.itmedia.co.jp/mn/articles/0807/09/news140.html 社外勉強会用

Slide 10

Slide 10 text

Confidential OBD-IIを利活用するには 10 オレオレレコーダープログラム On RaspberryPi オレオレプロトコルスタック ここをうまくや ってくれる物理 層周りのハード ウェアが必要 社外勉強会用

Slide 11

Slide 11 text

Confidential OBD2 (CANBUS)の通信ハードウェア 11 MCP2515 CANコントローラー MCP2551 CANトランシー バーIC https://docs.longan-labs.cc/1030001/ CANコントローラのICを使い、RaspberryPiやMCUと通信できるようにする ※カニチップ(Ethernetコントローラー)みたいなもん https://diary.freebbs.biz/archives/cat23/raspberrypi_spi.php 社外勉強会用

Slide 12

Slide 12 text

Confidential OBDコネクタからCANバスへのアクセス 12 CANコントロー ラーモジュール (UART制御) USB⇔UART変 換 モジュール 社外勉強会用

Slide 13

Slide 13 text

Confidential OBD2 13 社外勉強会用

Slide 14

Slide 14 text

Confidential OBD2フレームの解析 14 ECU (PID: 0x7E8)からサービスID(0x01)・データPID(0x0C: EngineSpeed)のリクエストに対す る応答。データLengthは4Byte データは 0x0D190000(00) → (0x0D ✕ 256 + 0x19) / 4 = 838 Rpm 社外勉強会用

Slide 15

Slide 15 text

Confidential システム全体像 15 Raspberry Pi 車両情報等 BIツールで 振り返り 社外勉強会用

Slide 16

Slide 16 text

Confidential RaspberryPi ⇔ 車両部分 16 CAN通信モジュール USB⇔CAN変換 USB⇔Serial変換 (FT234等) Serial⇔CAN通信 (Seeed社 Serial CAN- BUS Module) MCP 2551 MCP 2515 CAN通信モジュール RaspberryPi CAN通信モジュール OBD情報取得 プログラム (obd_recorder.go) /mnt/usb_memory Engine_rpm.jsonl xxxx.jsonl CAN通信モジュール OBD2端子 ECU #1 ECU #1 ECU #1 車両側 /dev/tty USB0 社外勉強会用

Slide 17

Slide 17 text

Confidential RaspberryPi ⇔ クラウド(GCP)部分 17 CAN通信モジュール RaspberryPi CAN通信モジュール /mnt/usb_memory CAN通信モジュール GCP (クラウド側) Streaming Insert Engine_rpm.jsonl xxxx.jsonl Service Account ※数時間程度のざくっとプロトタイピング。下記プラグインを利用 https://github.com/fluent-plugins-nursery/fluent-plugin-bigquery OBD情報取得 プログラム (obd_recorder.go) car_dataset engine_rpm_table xxxx_table 社外勉強会用

Slide 18

Slide 18 text

Confidential データ取得の様子@京葉市川パーキングエリア 18 社外勉強会用

Slide 19

Slide 19 text

Confidential BIツール(Redash) x OBDデータ 19 ● 現在取得できているデータ ○ エンジン回転数(RPM) ○ エンジン負荷(%) ○ アクセルの位置(%) ○ 冷却材の温度(C) ○ 大気の圧力(kPA) →高度情報取れる ○ インテークの温度 ○ インテークの圧力 ○ バッテリーの電圧 ○ Short Time Fuel Trim (短期燃料トリム) ○ Long Time Fuel Trim (長期燃料トリム) ○ エンジン始動からの経過時間 社外勉強会用

Slide 20

Slide 20 text

Confidential ProtoTyping部分 20 社外勉強会用

Slide 21

Slide 21 text

Confidential WebカメラをRaspberryPiに接続 21 ● ドンキカメラ ○ MJPG ■ 1280x720 30FPS ○ YUYV ■ 640x360 30FPS 社外勉強会用

Slide 22

Slide 22 text

Confidential ProtoTyping部分 22 RaspberryPi CAN通信モジュール video_recorder.py /mnt/usb_memory/videos CAN通信モジュール GCP Streaming Insert YYYYMMDD-HHMMSS.mp4 Service Account video_uploader.py 社外勉強会用

Slide 23

Slide 23 text

Confidential OpenCVでWebカメラの映像を保存 (video_recorder.py) 23 ● OpenCVのVideoCaptureとVideoWriterを用い て、60秒おきにファイル書き出しを実施 ● 動画中に撮影時間をputTextを記載 社外勉強会用

Slide 24

Slide 24 text

Confidential 保存した動画のGCSアップロード (video_uploader.py) 24 ● VideoRecorderの出力するmp4ファイルを随 時GCSへ動機 ● (FluentdやEmbulk等で、ファイルの TIMESTAMPからパスをいい感じに調節しなが らアップロードできるならそちらに切り替えた い) 社外勉強会用

Slide 25

Slide 25 text

Confidential オレオレドライブレコーダーの映像解析 25 ● 映像データの意味付け ○ ObjectDetection ■ https://github.com/open- mmlab/mmdetection ○ Segmentation ■ https://github.com/open- mmlab/mmsegmentation 社外勉強会用

Slide 26

Slide 26 text

Confidential ABEJA Advent Calendar 2021の1日目の記事。 https://qiita.com/xecus/items/c96bec764e20946059a0 元ネタ 社外勉強会用

Slide 27

Slide 27 text

Confidential 紹介①: ABEJA Platform (MLOps Platform) 27 社外勉強会用 https://abejainc.com/platform/ja/

Slide 28

Slide 28 text

Confidential 宣伝①: ABEJA Platform (MLOps Platform) 28 社外勉強会用 https://qiita.com/Nagafuchik/ items/f265824e8091f5c384a9 https://qiita.com/naoki0423/ items/1cf91993561712be8c13

Slide 29

Slide 29 text

Confidential 宣伝②:ABEJA 採用強化しています! 29 社外勉強会用 https://hrmos.co/pages/abeja/jobs