
Meteor-Detect をGoogleColab上で実行する(その2:リアルタイム検出に挑戦)
1.はじめに
Meteor-DetectをGoogleColab上で実行する(その1)ではATOMCAMが保存した1分毎の動画ファイルを読み込んで流星を検出する、という流れでした。
Meteor-Detectはリアルタイムで流星を検出するために二つの方法に対応しています。一つはRTSPというプロトコルで発信されているストリーミングデータを受け取る方法、もう一つはYouTubeで流れているデータを受け取る方法です。ATOMCAM2(Swingは未対応)はRTSPでストリーミングデータを発信します。家庭内のWiFiネットワークではPC上にPython環境を持っている方はRTSPを使ってリアルタイム検出環境を作る方が仕組みとして簡単です。この記事は、PC上にPython環境を持っていない人、Python環境を構築するのは敷居が高いと思う人が対象です。GoogleColab上でMeteor-Detectを実行して自分のATOMCAM2の映像をYouTubeを通じてリアルタイムに流星を検出する手順を記載します。
a. 事前にお読みください
GoogleColab上でATOMCAM2(やSwing)が保存した動画ファイルに対してMeteor-Detectを実行する方法については
Meteor-DetectをGoogleColab上で実行する(その1)
に記載しています。Meteor-Detectを実行する環境は基本的に同じ方法で作成します。
b. 誤解のないように
Meteor-DetectはそもそもYouoTubeの動画から流星を検出する使い方があります。ハワイのマウナケアや木曽に設置された星空ライブのYouTube動画を対象にして動作確認をするサンプルもMeteor-Detectのパッケージに用意されています。
本記事の本質は所有しているATMCAM2をYouTubeでライブ配信するための手順ということになります。
2.ATOMCAM2の撮影している映像をYouTubeでLive配信する
前準備1:YouTubeでLive配信が行えるように
YouTubeのライブ配信設定のヘルプ ライブ配信を始める およびエンコーダで YouTube ライブ配信を作成するに従い、YouTube上の設定を行います。この記事ではソフトウェアエンコーダーとしてOBSを採用します。
前準備2:OBSで配信設定のためにYouTubeのアカウントと接続する
ファイル→設定で開くダイアログボックスの中でYouTubeへの配信のための接続設定を行います。(下図参照)

前準備3:ATOMCAM2のRTSP配信アドレスを確認する
「設定」→「その他」→「PCで再生」で表示される「rtsp://9999:9999@XXX.XXX.XXX.XX/live」を書き留めておきます。
家庭内LANのアクセスポイント(ルーター)がDHCPでATOMCAM2にIPアドレスを割り振っている場合、上記のXXX.XXX.XXX.XXXが不定期に変更することがあります。

前準備4:OBSでATOMCAM2のRTSPストリーミングをYouTubeに配信する設定を行う
ソースを追加します

プルダウンメニューの中から「VLCビデオソース」を選択します

登録するソースに名前を付けます

プロパティ登録の画面が開くので「+」アイコンをクリックして「パス/URLを追加」を選びます

前準備3で控えておいたRTSPのアドレスをプレイリストのエントリに追加します

「表示の動作」を「表示されていないときにも常に再生する」にして「OK」で保存します。これでOBSに入力された映像と配信用に出力される映像が画面で確認可能になるはずです。

「配信の管理」から開く「YouTube配信の設定」でタイトルや説明を登録し、「配信を作成して配信開始」をクリックして配信を始めます

ここまでの設定に問題が無ければ「新しい配信を作成しています...」と表示され、これが消えればYouTube上でライブ配信が始まります。

YouTubeでライブ映像が配信されていることを確認したら、「共有」で表示される
「https://youtu.be/XYZXYZXYZXY」
のXYZ部分を書き留めておきます

3. GoogleColab上でYouTubeのライブ配信に対してMeteor-Detectを実行する
前準備はMeteor-DetectをGoogleColab上で実行する(その1)と同じです。GoogleColabのファイルを新規で作成し、GoogleDriveと接続します。ここではそのあと入力するコマンドだけを記載します。
a. GoogleColab上でMeteor-Detectが実行できる環境を構築する
!git clone https://github.com/kin-hasegawa/meteor-detect.git "/content/drive/MyDrive/Colab Notebooks/ZZZZZZ"
!pip install ffmpeg
!pip install youtube_dl
!pip install apafy
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks/ZZZZZZ')
"ZZZZZZ"はMeteor-Detectを実行するディレクトリで毎回新しく設定します。日付を入れるなどのルールを自分で定めて運用すればいいでしょう。
これをコピペした後、ディレクトリを修正して実行すればよいです。
b. マスクファイルを配置
マスクファイル(mask_ATOMCAM2.png)をこちらに用意しています
ダウンロードしてから各自の環境(Meteor-Detectを実行するディレクトリ(上記"ZZZZZZ"))にアップロードしてください。
一度アップロードしておけばコピーまたは移動することで毎回新しい環境に配置することができます。
これが無いとタイムスタンプの数字の動きが流星として検出されてしまいます。

12月31日朝用のGoogleColabのディレクトリから31日からよく月1日までのためのGoogleColabのディレクトリに移動させています。

!ls コマンドを実行してマスクファイルがきちんと認識されていることを確認します。クラウドでのファイル操作のためか、lsコマンドの結果に反映されるのに時間がかかる場合があります。

4. YouTubeのLive配信から流星検出開始
!python atomcam.py -n --mask mask_ATOMCAM2.png --url "https://www.youtube.com/watch?v=XYZXYZXYZXY" -o /content/drive/MyDrive/YYYYYYYYY
mask は上記でダウンロード、配置したマスクファイル
"XYZXYZXYZXY" は先にYouTubeで共有表示したときにメモした部分です。(https以下のフォーマットが少し違うので、「共有」ボタンで表示されるアドレスそのものとは少し違うのに注意)
"YYYYYYYYY" は検出した結果の出力先のディレクトリになります。これは既存のものでも大丈夫です。
”threading version started.”
が表示されて検出が始まります。

c. 注意点
cannot reuse HTTP ほにゃらら~
が表示されるときにはパケットロストが起きているということです。
最初っから表示される場合は通信が落ち着いていない場合がありますので一旦停止させて、再度実行します。私はだいたい3回くらい繰り返せばこのメッセージは出なくなります。

error:00000000:lib(0) ふにゃらら~
が表示される場合もなんらかのエラーが発生しているようです
これはあまり気にしなくてもいいみたいです

流星が検出されると”A possible meteor was detected.”と表示され、MP4動画ファイルとjpgファイルが出力先ディレクトリに保存されます
なお、ここで使用されている時間はUTCですが、画像内のタイムスタンプ、GoogleDrive上のファイル作成時間などはJTCとなります。

Meteor-Detectが走り始めたら、後は放置です。
GoogleColabでの連続使用は上限が12時間なので時間が来たら勝手に停止してくれます

出力先はGoogleDrive上のフォルダーなのでPC上のエクスプローラーから直接状態を確認することもできます。インターネット上で共有させることも可能なので、同時観測ネットワークなどに報告する際にはそのまま使えます。
なお、筆者の配信に関する知識と経験はYoutuberというにはほど遠い低いレベルです。各種の設定の細かいところで最適ではないものがあると思います。この記事をご覧になった方が各自で最適な設定を見つけていただければ幸いです
4.当記事の将来の活用について
・OBSを使ってYouTubeを経由したリアルタイム検出の応用
OBSの映像入力には今回使用したVLC以外にも様々な方法がサポートされています。広角レンズが標準付属しているZWO製の惑星用カメラなどはASI120MMクラスでもかなりの流星を撮影することができます。これをOBSの入力デバイスとすることで”空を見る眼”の数は飛躍的に増やすことができます。(赤缶オーナーのほとんどは複数所有しています(^^; 余った赤缶の活用法としてぜひ試行錯誤してください)
・GoogleDrive上へのリアルタイム検出結果を出力の応用
流星検出は一人で行って記録を取り続けるのも楽しくはありますが、離れた場所の多人数で行い、同時検出→データ共有→軌道計算・・・と広げることができるのが楽しみでもあります。
GoogleColabでなくても自前のPC上に構築したPython環境を使って検出したデータを、GoogleDrive上にリアルタイム検出結果を出力することで、同時観測の同定から軌道計算までもほぼリアルタイムに行うことのできる可能性が出てきました。
ATOMCAMの出現で”空を見る眼”が飛躍的に増えてきています。これは、検出流星のビッグデータが生成される可能性を秘めています。もしかしたらこれまで確認できていなかった”淡い(薄い)流星群”が特定できるかもしれません。
流星検出はコンピューターに任せて、布団の中でこんな夢を見ています(笑)
謝辞:
この記事を作成するにあたり、meteor-detectの作者である Kin-Hasegawa氏をはじめ、天リフ超会議「ATOM CAMスペシャル」で交流を持てた皆様の多大な技術的支援、助言をいただきました。この場を借りて御礼申し上げます。