オープンイノベーション【てんかく忍者工場】てんかく忍者工場のYOLO動画物体検出&位置合わせ工程を紹介!

【てんかく忍者工場】てんかく忍者工場のYOLO動画物体検出&位置合わせ工程を紹介!

ようこそ"動画物体検出/位置合わせライン"へ

この工程では、

  1. "動画物体検出(YOLO)"
  2. "フレーム位置合わせ(minimodem他)"

の処理を行います。


GNSSデータ"gpx"と動画ファイル"mp4"を使って、「映像に何が映っているのか」と「映像のフレームはどの緯度経度に相当するのか」を特定する重要な処理を担当しています。

従来のてんかく忍者のパイプライン(工程)では、最初の工程としてGV-Syncが同期処理とデータベース化、静止画書き出しを担い、最終工程で、書き出された静止画に対して最終的にYOLOの物体検出を実行して、データベース上に検出結果を書き込んでいた工程に相当します。

この最初と最後を、まとめて最初にやってしまうことが"即時性を担保するため"のキーポイントです。


"decode_from_mp4"マネージャから呼び出される"video_out"主任、"builed_geotrack"主任がそれぞれの仕事をしています。

・体制図


job_queue_runner ライン長
⇒ decode_from_mp4 係長
 ⇒ video_out 主任
 ⇒ builed_geotrack 主任

 

 

■はじめに:この工程の完成品

 

まず初めに、この工程での完成品をご覧ください。

素材として投入されるgpxやmp4はこういうものです。

 

[gpx素材]
01.png
[mp4動画素材]
02.png

本工程での加工を通ったあと
物体検出の結果がオーバーレイされた動画

物体検出の記録
そして、物体検出動画と属性情報を重ね合わせて表示できる字幕ファイルが生成されます。

[YOLO物体検出済み動画mp4]
03.png
[YOLO検出結果テキスト]
04.png
[字幕付き動画]
05.png



そして、中身はバイナリなため、特殊なビューアでしか見られませんが、parquetデータベースが完成します。

[parquetの中身:VSCodeプラグインで表示]
06.png

 

 

■動画物体検出/位置整合処理(job_queue_runner→decode_from_mp4)

 

・job_queue_runnerライン長(手配)


TenkakuNinjaFactory のジョブキュー(job_queue.json)を定期的にスキャンし、
decode_from_mp4.py を自動実行するランナー。

主な機能:

  • - ジョブの状態監視と初期化(PENDING, RUNNING, DONE, ERROR)
  • - decode_from_mp4.py の自動実行とログ記録
  • - 成果ファイルの検証とステータス更新
  • - 完了ジョブのアーカイブと manifest.json の生成

decode_from_mp4係長(段取り、手配、報告)

ジョブフォルダのうち、.job.jsonから読み取ったステータスが、PENDINGのものを、動画物体検出処理対象として処理します。
_yolo.txtや_yolo.mp4が既に存在する場合は処理をスキップします。

動画から同期音声トラックを抜き出し、ビートの検出とスタートの特定を実行し、minimodemによる同期音声復号を行います。
次にvideo_out.pyによってYOLOによる動画物体検出を行います。

 

・video_out主任(実処理)

 

主な機能:

  • - 動画ファイルの読み込みとフレーム単位の処理
  • - YOLOモデルによる物体検出とアノテーション描画
  • - 検出結果のテキスト出力と動画保存
  • - 処理状況のログ出力およびジョブステータスの更新

 

・動画のFPSに応じた案分処理:shred_self
・特徴的な機能"同期音声の検出":detect_first_beat、analyze_beat
・特徴的な機能"ドロップフレーム処理":get_fps_from_video、is_drop_frame、time_to_frame

フレームの同期
07.png
スタートフレームの検出
08.png

 

同期後後の案分処理
09.png

 

 

・build_geotrack主任(実処理)

主な機能:

  • - GPXファイルのパースと加速度・センサーデータの抽出
  • - minimodemログとの時刻・serial照合
  • - YOLO検出結果のフレームマッピング
  • - Parquet形式での保存、SRT字幕ファイルの生成

 

最後に、同期音声の情報と.動画フレーム、gpxの整合を確保し、フレーム数による案分処理をした結果をparquet形式のデータベースとして書き込みます。
またyolo物体検出結果動画の字幕として使える.srtファイルを生成します。

一連の加工を終了すると、.job.jsonの作業ステータスを"DONE"に更新します。

10.png

この工程から出力される成果品

  • _yolo.mp4:YOLO物体検出済み動画
  • _yolo.txt:YOLO物体検出の結果テキスト(フレームと検出結果の履歴)
  • _yolo.srt:YOLO物体検出動画にオーバーレイする字幕ファイル
  • .parquet:GPXと動画フレーム情報を結合したデータベース
  • その他の中間生成物
    *.wav:
    *.csv:
    *.log:
    *.txt:

 

 

まとめ

この工程では、GPXログと動画中の同期音声を1フレームの精度(≦30ms)で正確にスタートフレームの位置合わせを実行した上て、動画のフレーム数に応じた案分処理を行います。
またYOLOによる動画物体検出を実行し、元の動画素材に物体検出のアノテーションを付加し、属性情報をオーバーレイするための字幕ファイルを同時に生成します。
空間データベースは、parquet形式で保存し、geopandas等のPython空間処理ソフトウェアで汎用的に扱える形式となっています。

 

 

▼この記事を書いたひと

001@2x.png

R&Dセンター 松井 良行

R&Dセンター 技術戦略担当部長。コンピュータと共に35年。そしてこれからも!

 

お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8744(交通部営業課) FAX : 052-323-3337(交通部共通)
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711
地図

PoCのお問い合わせ:交通部営業課
技術的なお問い合わせ:R&Dセンター

Email:メールでのお問い合わせ