見出し画像

Meteor-Detect をGoogleColab上で実行する(その1)

1.はじめに

a. Meteor-Detectとは

Meteor-DetectはKin-Hasegawa氏が作成された動画ファイルから流星を検出するためのPythonで作成されたプログラムです
稼働させるには自前でPython環境を持っていることが前提です
流星を検出する方法として、以下の4つの入力方法をオプションで指定することが可能です
・動画ファイル(MP4)をファイル名で指定する方法
・ATOMCAMの動画データを保存するフォルダー体系に合わせて日付、時間のフォルダー単位で対象を指定してバッチで処理を行う方法
・ATOMCAM2がプライベートネットワーク内に配信するRSTPによるリアルタイム処理を行う方法
・一般公開されているYouTubeサイトで配信されている映像に対してリアルタイムに検出を行う方法
この記事ではフォルダー単位でのバッチ処理を行う方法について記載します
リアルタイムで検出を行う方法については、(その2)で書くこととします

b. ATOMCAMとは

ATOMTEC社が販売している防犯用カメラです
ATOMCAM2とATOMCAMSwingの2タイプあります
防水対策が施されており、電源やUSBケーブルなどの取り回しが確保できれば、24時間365日稼働することが可能です
カメラとしてそこそこ高感度であること、そして使用しているレンズの画角が広いことから、本来下に向けて防犯カメラとして使うところを空に向けて流星検出カメラとして使用するユーザーが増えてきました
ATOMCAM本体にも動体検出の仕組みがありますが、流星検出のロジックではないので精度は低いです
それでも火球レベルの検出は行ってくれるので、話題になった火球が自分で捉えていることがわかると嬉しいものだろうと思います(私はまだ火球をとらえた経験はありません)
とはいえ、火球以外にも流星は出現しています。これらの細かい流星検出のためにはすべての時間帯について写っている画像を保存する設定(”SDカードへのローカル録画”と”連続録画”)を行い、後でバッチ処理で検出をおこなうか、ATOMCAM2のみ(2022/12/14時点)が備えているRSTPでのストリーミングを受けてリアルタイムの検出を行うか、の二択になります

c. 自前のPython環境が無くてもMeteor-Detectを使いたい

前述の通り、Meteor-Detectを使うにはPython環境が必要です。これはプログラム開発に縁遠い一般ユーザーには敷居が高いです。仕事で使っているPCやプライベートでも使用頻度が高くて容量に余裕のないPCにソースはいじることのないのに開発環境を構築することになります。「ただ使うだけ」の人にはなかなか難しいです
そんなあなたに(私のために)自前でPython環境を構築しなくてもMeteor-Detectを使える方法を模索していました

2.GoogleColab上でMeteor-Detectを使う

Googleが提供しているGoogleColabというPython実行環境の上でMeteor-Detectを使うことができれば、「ただ使うだけ」の人でも流星の検出が可能になります。
GoogleColabならではの使い方や制約もありますので、それらを整理して可能な限り簡単にATOMCAMから取得した映像や動画データを入力としてMeteor-Detectを使う方法を整理しました。
今回はATOMCAMがSDカード内に保存した動画ファイルに対してMeteor-Detectを実行する手順を記載します。

a. 事前準備

  • Googleアカウントを用意する

  • GoogleDriveを確保する
    GoogleDriveでは無料で使用できるのは15GBまでです
    ATOMCAMでサポートしているSDカードの容量は32GBですので、保存したデータが15Gbを超えてしまった場合は何回かに分けて処理する必要が出てきます

  • GoogleColab用noteBookを新規作成する
    GoogleColabの使い方については様々な解説サイトがあります
    【最新版】Google Colaboratory とは?使い方・メリット・設定などを徹底解説!
    このサイトでは1. 事前準備までができていればいいです
    【初学者必読】Google Colaboratory とは?使い方・便利な設定などをわかりやすく解説!
    このサイトでは「ノートブックの作成」までができていればいいです

  • ATOMCAMが保存した動画ファイルをGoogleDriveにコピーできるように準備しておく
    一番簡単な方法は、夜が明けたらATOMCAMにセットしたMicroSDカードを抜き取り、アダプターやリーダーを介してPCに取り込む方法です
    屋根の上や軒下など抜き差しが難しいところに設置した場合、「atomcam_tools」というツールプログラム群をSDカードにコピーしてFTPを利用してPCまで持ってくるという方法もあります
    「atomcam_tools」については先駆者がいろいろな解説ブログを公開してくれているので、それを参照するのが良いかと思います
    今回私は物理的なMicroSDカードの抜き差しでデータを取り込みました


b. 操作手順

ここからはGoogleColabのセル(と呼ばれるコマンド入力部分)に呪文を唱えるように打ち込むところと、自分の環境に合わせてコマンドを打ち込むところがあります

私の作成したGoogleColabのノートブックはこちらから参照できます
https://colab.research.google.com/drive/1QuDgEOTBnNJLMIovEt1AWF_OmbO_7cAO?usp=sharing
これを参照しながら以下を確認ください

  1. 以下のコマンドをセルに打ち込み、実行します(左端の右向き△ボタンをクリック)
    !git clone https://github.com/kin-hasegawa/meteor-detect.git "/content/drive/MyDrive/Colab Notebooks/Meteor-DetectMP4"
    !pip install ffmpeg
    !pip install youtube_dl
    !pip install apafy
    太字部(Meteor-DetectMP4)は好みで変えていいです
    このコマンドで新たに作成されるディレクトリですので、既にある場合はエラーになります
    何度か実行する場合は名前を変える、もしくは削除しておきます

  2. atomcam.pyのあるディレクトリまで移動するコマンドを打ち込み、実行します(左端の右向き△ボタンをクリック)
    import os
    os.chdir('/content/drive/MyDrive/Colab Notebooks/Meteor-DetectMP4')
    !pwd
    最後のpwdのコマンドにより、カレントディレクトリが出力(表示)されるので、
    os.chdir の()の中と同じ文字列になっていることを確認します

  3. この場所にATOMCAMが保存した動画データを持ってきます
    SDカードには
    /record/yyyymmdd/hh
    の構造で動画データが保存されているので、PC上からはyyyymmddのフォルダをアップロードする形になります
    既にGoogleDriveにアップロードしている場合はフォルダを右クリックして出てくるメニューから「指定の場所に移動」を使って移動させます
    移動させたら
    !ls
    コマンドで日付のディレクトリが存在していることを確認しましょう
    クラウドでの処理なので、時間差が発生していることがあります

  4. atomcam.pyを起動するコマンドを書き込みます(以下は例です)
    !python atomcam.py -n -d 20221214 -h 02 -o /content/drive/MyDrive/Meteo_Detected_OutPut
    !python atomcam.py -n -d 20221214 -h 03 -o /content/drive/MyDrive/Meteo_Detected_OutPut
    !python atomcam.py -n -d 20221214 -h 04 -o /content/drive/MyDrive/Meteo_Detected_OutPut

    !python atomcam.py は呪文と思ってください
     -n はCoogleColabで動かす場合に必須です
    -d はこの後にyyyymmddで作成された日付のディレクトリを指定します
    -h はこの後にhhで作成された時間のディレクトリを指定します
    -o はこの後に検出した1秒の動画とjpgファイルを出力するディレクトリをフルパスで指定します。このディレクトリは事前に作成しておく必要があります

    一行当たり一時間分の検出処理を行います
    このセルを実行する(左端の右向き△ボタンをクリックする)と、順番に処理を行うので、保存された時刻(hh)の行だけコマンドを入力すればいいです

  5. 出力ディレクトリを確認する
    ブラウザの別ウィンドウでGoogleDriveを見ていると(再読み込みをすると)
    movie-yyyymmddhhmmss.mp4

    yyyymmddhhmmss.jpg
    動画と静止画のファイルが生成されてきます
    光害地でもザクザク検出されると思いますので、ひとつづつ確認していきましょう

c. 注意点

私も今回atomcam.pyを使うようになるまでは、”Hallow Python”で終わっていた人です
もっと効率的な使い方があるかもしれません
「こうやったらできる」「ここはこうすべき」のようなご意見がありましたら是非コメントいただきたいです
Meteor-Detectはユーザーの使用に際しては完全自己責任、無サポートのソフトウェアです
ここに記した使用法補で動かないことがあったとしても作者であるKin-Hasegawa氏には一切責任も関係もありません
この記事に基づいた質問やクレームなどを行うことは厳に慎んでください

謝辞:

この記事を作成するにあたり、meteor-detectの作者である Kin-Hasegawa氏をはじめ、天リフ超会議「ATOM CAMスペシャル」で交流を持てた皆様の多大な技術的支援、助言をいただきました。この場を借りて御礼申し上げます。



この記事が気に入ったらサポートをしてみませんか?