流星観測画像を機械学習で分類する

流星のカメラ観測をはじめてそろそろ1年になります.

観測のフローは,カメラからのストリーミング動画を観測用PC(Let’snote CF-RZ5)で読み込み,meteor-detectを使用して流星を検出し,NASにデータを保存,保存されたデータを別のPCで参照して手動で流星が写っているかどうかを判別し,記録しています.

meteor-detect – Github

この判別の作業が結構大変で,流星の写っていない画像も記録されるため1週間で1万枚くらいになります.24時間記録しっぱなしなのも影響して,雲の動きを検出してしまうのか昼間の画像があったり,特に夏は虫の動きを検出してしまっています.もちろん明るい火球が昼間に記録されていたこともあったので,夜だけとかにもできず継続していますが,実際に流星が写っているのは1割もありません.

この作業を少しでも楽にするべく検出ソフトの改良を試みましたが,なかなか難しかったので,記録された画像の判別を楽にするために,機械学習を利用した画像分類プログラムを作ることにしました.

Python初心者のSUV6車種をtensorflowでCNN画像分類

こちらを参考に,畳み込みニューラルネットワークでモデルをつくってみました.これまで1年分の観測の正解画像がありますので,流星の写っていない画像とあわせて約9000枚の画像を用意しました.それらを訓練用,検証用,テスト用に6:3:1にわけ,訓練を行いました.要した時間はRyzen 5700+GeForce 3700 Tiのパソコンで約15時間でした.

訓練データの判別精度はほぼ1となり,検証用データの判別精度は約9割で,テストデータでも約9割の精度を維持しており,おおよそ目標値を達成することができました.

作成したモデルを保存して別のPythonプログラムで読み込ませ,検出した画像の判別ができるようにバッチファイルにしました.

精度が9割ですので,取りこぼしがないように閾値を調整して感度を高めています.ざっと眺めてみたところ,1000枚あたり数枚の取りこぼしというところでした.検証精度が概ね9割で横ばいになっておりましたので,精度向上のためには工夫が必要そうです.アイデアがあるにはありますがこればかり時間もかけていられませんので,これまで判別に要していた時間を踏まえると許容できるものとして,今月分から実用としています.

すべてを手動で判別していた頃に比べると格段に楽になりました.

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA