Computer Vision

Python, Computer Vision, AI, Transhumanism 関連

空からプールを探してみた

巷ではテキストからの画像生成するAIが流行っているが、それはさておき、YOLOv5がお手軽なので、年内にやっておきたい宿題として、試してみた。

 

最初は、航空写真でやりたいなと思ったが良い素材が手に入らなかったので、今回はGoogle Earthからキャプチャーしたものを使用。

 

手順としては、まず高度1000m程度の高さで、プールが映った画像をキャプチャーしてPNG保存(jpegでも良い)。

今回、アノテーション対象はプールなのだが、ぱっと見青い屋根も雰囲気が似てるなと思ったので、青い屋根もアノテーション

アノテーションツールは「labelImg」を使用した。

 

50枚ぐらいの画像をYOLOv5をMacbookで回して学習を実行。
なんとなく検出できそうな雰囲気はでてきたものの、精度はかなり低め。

 

そこで、画像を100枚ぐらいに増やして再チャレンジ。

再チャレンジの際にはGoogle Colabを使ってみた。

バッチサイズ、エポック数は --batch-size 8 --epochs 300 を指定。

 

独自の学習を元に、検出を試しに検出したのがこちら

こんな感じで無事プールの検出に成功。

 

左上で誤検知している部分があるが、数値が 0.34なので、これが確率が低いものを切り捨てればよいだけなので、これはたぶん問題なし。

 

www.chickensblog.com

 

Google Colabを使うのにあたり、個人的に、ハマったのは、

自分のドライブに入れた教師データを取り込むのに、

cd /content/drive/MyDrive/yolov5/

という1行を追加するところ。このパスを把握するのにやたら苦戦してしまった。

上記は、マイドライブ直下に yolov5 フォルダが入っている時の指定となる。

 


話をプールの検出に戻す。

上空(Google Earth)からプールを探すのは、最初はなかなか手間だったか、コツを掴むとかなり簡単にみつけられる。

まずは比較的広範囲の地図から、ある程度人口が集中してそうな場所を探し、続いて、グラウンド的な場所を探す。

学校の校舎+グラウンド風なものをイメージしておくと探しやすい。

 


でプールと、青い建物の屋根というのは、ぱっと見分かりにくいが、よくみると、プールの底には大概ラインがかいてあり、それが縦縞としてうっすら見える。

もちろんそうじゃないプールもあるのだろうが、今回は分かりやすいものをターゲットにしているので、ヨシ!。

遊園地などにありそうな流れるプールも形が色々ありそうだし、今回の対象には含めてない。

今回の対象は、主に学校などに併設されている、四角形中心のプールとした。

もう一つプールが特徴的なのは、飛び込み台がだいたい同じような感じで配置されている事。

プールサイドやフェンスなども比較的形状に共通点がみられる。

 


その他気がついた点としては、プールは天候なのか、水質(使ってない時の藻の繁殖?)なのか色については結構個体差がありそうだった。
学習したデータにより検出結果が変わりそうな印象を受けた。

そのため、対象のプール素材の選定は特定の県ではなく、複数の県のプール画像を素材にするよう配慮した。

 

最後にこれってどんなことに役立つのか?というと別に使い道はないのだが、航空画像から、地域のプールの個数を数えたり、面積を調べるのにはなにか使えるかもしれない。

ちなみに検索したところによると、人口あたりのプールの個数が多いのは山梨だそうである。

学校のプールなども、県によってばらつきがあるようだ。

 

ある程度のフォーマットが決まった建築物であれば、このように検出を横展開が可能である。

それを使えば画像から地域別の統計調査が行えるだろうし、もっと定期的に高画質な航空写真が入手できるようになれば、リモートセンシング的な調査をベースにビジネスへの活用もすすむだろう。

 

学校のプールといえば、プールの水を止め忘れて、教員が罰金を取られたなんていうニュースが以前見たことがある。
まあそういうものは、確認をサボったり、忘れることもあるので、スマートメータでアラートを出すとか、月1で確認するとか、もう少しやりようがあるんじゃないかと思う。リモートセンシングも、大掛かりな都市計画や、防災計画だけではなく、今後ちょっとしたリスクの削減のために活用できるようになると良いと思う。