Computer Vision

Python, Computer Vision, AI, Transhumanism 関連

空からコロナを見てみよう

今回は、新型コロナウイルス感染症(COVID-19)の影響を見てみようと、武漢衛星写真を見てみることに。

 

まずは、交通状況の変化が見えないかと、確認してみたが、自動車が見えるような解像度ではなかったので、それはあっさりあきらめた。

 

次に、10日で建てたと言われる、コロナ対策の施設を確認してみた。

 

使用した衛星画像は今回も Sentinel-hub EO-Browser

 

1枚目:2019/12/11 中国 武漢の某所

f:id:tsubute:20200224154211p:plain

 

2枚目:2020/1/28 中国 武漢の某所

f:id:tsubute:20200224154205p:plain

 

お分かりいただけただろうか。確かに、12月時点では緑だったエリアに、建物らしきものが出現している。

 

www.technologyreview.jp

 

尚、病院?(新型肺炎関連で建てられた施設)の場所は、住所がでていれば、そこからと思ったが、みつからなかったので、上記サイトに掲載されていた写真から目視で探した。

地形から見てこの辺りかなと思った所で、あっさりみつけた。人間の脳ってすごいなと、我ながら関心。

 

あまり、地名を出すのは、あれなので、緯度経度でいうと

30.527707, 114.080039

あたり。

 

f:id:tsubute:20200224153844p:plain

 

どこが変わっているのか、わからん。

という方のために、画像の差分をとって、一定以上の変化を検出したブロック(4px四方)を白くマークしてみたのが上記。

 

白くなっている部分が、前述の2枚の画像との比較で、検出された部分という事になる。(ビフォアーの画像と、アフターの色が同じ可能性もあるわけで、白くない部分にも新たな建設が行われている可能性はあるので、その点はご了承ください。)

 

たまには、ソースも書いておこうということで、使用したプログラムも記載。

Python, OpenCV, numpy

import cv2

import numpy as np

#グレースケールで読み込み

img1 = cv2.imread('2019-12-11.jpg',0)

#好きなサイズにカット

img1 = img1[50:950, 350:1250]

img2 = cv2.imread('2020-01-28.jpg',0)

img2 = img2[50:950, 350:1250]

 

#差分

diff = cv2.absdiff(img1,img2)

#ブロック数の合計で回す

for x in range(0,50625):

    #横のブロック数であまりを求める

    a,b = divmod(x, 225)

    x=(b*4)#4px

    y=(a*4)#4px

    xe=x+4

    ye=y+4

    db=diff[y:ye, x:xe]

    #どの程度の差分をカウントするか

    dc=np.sum(db>30)

    #何個差分があったら、違うとカウントするか

    if(dc>12):

        #対象ブロックを白で塗りつぶす

        img2[y:ye, x:xe]=255

cv2.imwrite("diff.png", img2)

 

地震災害の時もそうだったが、高解像度の衛星画像は、個人では入手しにくいのと、欲しいと思った日付の写真が雲で隠れて、比較が難しい事がよくある。

 

そのため、ドローンで定期的に撮影した航空写真が、公開されるようになれば、もっと様々な事が把握できるのになあと思う。

 

話を新型コロナに戻すと。

今、日本政府に言いたいのは、さっさと、海外から(感染者数上位10か国ぐらい?)の入国制限を強化し、国内での感染が疑われる患者の検査体制がもう少し整った所で、規制を緩めるべきだと思う。

 

たしかにインフルと比べて云々というのはあるが、既にいくつもの、イベントの中止が行われているということは、既にインフルより事態は重いわけで、今ゆるくて、あとで大きな被害をうけるより、いますぐ規制を強めて、後で弱めた方が被害は小さくて済む。

 

もうひとつ、政府は、現状国内での新型コロナ感染が疑われる患者に、十分にコロナ検査ができない理由を、国民に説明すべきだと思う。
いまのところしっかりとした理由が、伝わってこないところからすると、なにか正当性に問題を指摘されそうな理由なんだろう。

 

ダイヤモンド・プリンセス号の対策の失敗の根幹は、対策方法の変換点を見極められずに、当初の織者や、外部の権力者の発言をそのまま継続してしまった事だと思う。


この失敗については、いずれ、もう少し詳しく検証されるだろうが、兎角、災害時の状況というのは、刻々と変化するの。昨日の時点で考えて正しいと思った対策方法が、今日も正しいと限らないことを、知っておくべきだと思う。

 

逆に国民として、理解しておきたいのは、災害時に重要なのは、一人ひとりの日頃の自衛策だと思う。例えば、来月ぐらいには、もう1段階新型コロナの警戒レベルがあがってるだろうし、不要な外出をしないで済むよう、今のうちに備えておくべきだと思う。

 

既に、引きこもり中の方々にみて欲しい映画はこちら

movies.yahoo.co.jp

 そんなに面白い映画でもないが、外出するのは自分の分身という話。

テレワークもなかなか進まない現状の社会で、ここまで進歩する日がいつ来るのか、謎だが、そこそこ潜在的ニーズはあると思う。

マスクしてない人を検出してみた

「マスクせずにせき」乗客が非常通報 福岡・地下鉄車内でトラブルに

などという今日この頃。

 

そんなに怖かったら外に出なければよいのに。と思いつつ、今回は写真からマスクをしていない人を検出してみようと思う。

 

用意するするもの
・どこのご家庭にもあるOpenCVをインストール済みのPythonが実行できる環境
・マスクをした人物が写っている画像、マスクをしてない人物が写っている画像
・カスケードファイル(顔、目、口)
・下記プログラム

 

プログラム

https://qiita.com/hitomatagi/items/04b1b26c1bc2e8081427

 

カスケードファイル「口」

https://github.com/opencv/opencv_contrib/blob/master/modules/face/data/cascades/haarcascade_mcs_mouth.xml

 

カスケードファイル「顔」

https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

 

プログラムは上記のものに、口の要素を追加した。顔はあるけど、口が検出されていない場合は、マスクをしているとみなす、お手軽仕様での実装だ。

逆に言えば口が検出されたらマスクしてないという想定。

もし、マスクのカスケードファイルがあれ、それでもよいということになるが、まあ多分ないだろうと考え、そもそも探していない。

 

f:id:tsubute:20200221011046j:plainf:id:tsubute:20200221011139j:plain

acworksさんによる写真ACからの写真

とりあえずは、Googleの写真検索でマスクをしている人の画像を拾って試してみる。
テストしてみたところ、マスクしている顔と、マスクしていない顔、それぞれあっさり検出。
口についても検出できた。

続いて掲載用に画像を探してみる。しかし今度は、マスクと一緒にメガネもしている画像が多く、それだとうまく検出できない。などなど、素材選びには少々苦戦。
さらに、写真が小さかったり、横を向いている画像は検出がうまくいかなかったりする。

 

そんなこんなで、結局、今回の掲載用素材は、上記女子学生の写真となってしまったが、特に深い意味はない。

1枚目の画像右側の目のようにバウンディングボックスが2重にできることはよくある事だ。


このように、カスケード分類による検出は、Deep Learningによる検出に比べると、やや精度は落ちるのかもしれないが、 手軽に試してみるのにはなかなか良い手法かと思う。

 

3分間クッキングのつもりが、そうこうしているうちに、インスタントラーメンの麺が伸びてしまったので、今回はこの辺で。それではまた!

オーストラリア森林火災(2020)

今回は、昨年から今年にかけて起きた、オーストラリアの森林火災を衛星画像で見てみる事に。

2020/1/30 オーストラリアBombala付近

f:id:tsubute:20200219090838p:plain

Sentinel-hub EO-Browser

 

Sentinel-hub EO-Browserで、該当しそうな期間の写真をいくつか見てみたところ、明らかに雲とは別の形状の白い流れを発見。 雲と判別しやすいように、B12のバンド帯を青に割当ててみた。

 

同様に衛星で撮影された衛星画像を紹介しているサイトを見てみたが、同じように火災の煙が写っていた。
ということで、森林火災というのは、衛星からでも比較的認識しやすいもののようだ。
煙以外にも、炎上している箇所が、高温になっている事も、判別のポイントになりそうだ。

 

長引いた森林火災、今は、大雨によって、なんとか鎮火したそうだが、逃げられなかったコアラも多数。
私は、コアラ病院に募金したが、支援したいとおもった方は、下記サイトなどを参照いただくとよいと思います。

【オーストラリア火災】信頼できる募金先3つ&手順を徹底解説!!|Ryokoreme|note

火星を地球化する

私も、火星を地球化したいと思っている人間の一人なのだが、テラフォーミングというのは、なかなか大変な作業である。

 

ということで、すっかりpytorch-CycleGAN-and-pix2pixの人になりつつあるが、今回は火星と地球の画像を10枚ずつほど用意して、ドーン。

 

f:id:tsubute:20200122081604p:plain

火星

f:id:tsubute:20200122081631p:plain

地球化させた火星

処理時間短縮のためcropオプションで実行した影響か生成のレベルは少し低いが、火星の画像から、地球風な画像を生成することに成功。よく言えば、未来館の「ジオ・コスモス」っぽくて、クールだと思う。

nogpuの指定で3日ほどの学習でできた。

 

実際の火星を、水の星にするには、結構な年月が必要そうだが、いずれ火星を開拓し、人類の住める場所としたい。

 

Python で生き物を作る

生き物っぽいものをPythonで作ってみようと思った。

まずは手始めに、ただの図形を有機物風にするのに挑戦。

 

シャンパンの泡って、ちょっと生き物っぽいなあと思ったので、

シャンパンの泡画像とそれを単純化した画像をセットで用意。

おなじみの pytorch-CycleGAN-and-pix2pix で学習。

で、できたのがこちら。再現性はいまひとつだが、きもち泡っぽくなった。

f:id:tsubute:20200110212944p:plain f:id:tsubute:20200110212940p:plain

円のサイズと位置はプログラムでコントロールできるので、コマごとに、うまく移動させれば動画もできそうだ。

 

ということで、今回はここまでで。

衛星でみる 台風19号 ビフォアー・アフター

今回は台風19号のビフォアアフターを確認してみようと、Sentinel-2を検索。
使用するサイトはいつものSentinel-hub EO-Browser

f:id:tsubute:20191016002912j:plainf:id:tsubute:20191016002827j:plain

 

栃木県佐野市 秋山川の堤防が決壊

https://www3.nhk.or.jp/news/html/20191013/k10012128451000.html

 

ビフォアー画像として、取得できた日付は10/10、アフター画像は、10/15のもの。15日は各地どこも曇が覆っており、ほとんど識別が不可だった。
そんな中、なんとかみつけたのが、上記の秋山川の堤防

 写真右側、北側が決壊した堤防の部分、ただ、ここも雲でぼやけてしまっているようで、明確には判別できなかった。

もし次回の撮影分がでうまく撮れていたら、追加で紹介してみようと思う。

 

衛星画像というのは、今回のように、雲に邪魔されて活用できないケースが多々ある。
そういう点でいうと、被災後には、すぐに、ドローンを飛ばして、空撮画像を活用すると、救助活動に役立つと思う。
その上で、高解像度の空撮画像を、一般公開するようにしたら、今後の災害対策としても有用なデータになるのにと思う。

 

衛星画像の活用方法として、保険会社が、被災判定などの資料として活用するというものが、テレビでとりあげられていたが、 そういう使い方もあると思う。

 

前回の投稿では台風15号をとりあげましたが、私の場合、募金先を、伊豆大島関連のクラウドファンディングにしました。
今回の台風19号でも、すでに募金の受付は立ち上がっている。関心がある方は是非支援を。

気候変動の影響だと思うが、今後も台風関連の災害は発生するだろう。
ひきつづき、テクノロジーを活用し、被害を減らす方法を考えてみたいと思う。

 

今回の被害を振り返る
まだ被災が進行する中、振り返るというのは、語弊があるかもしれないが、いくつか思った事をまとめてみる。

・防災格差
人口が多い地域のほうが、少ない地域より災害対策に予算が使われているのを実感する。
災害の最小化のためには、優先順位を冷静にとらえなければならないと思うが、住民はその地域や、 建物のプライオリティを一考した上で、住居を選択したほうが良いと思う。

・マンション
建物の耐久性自体は、マンションのほうが比較的高いと思う。
ただ、マンションは災害に強いのかと言うとそんなことはない。
むしろ高層ビルというのは、エレベーターのように、電気がなければ、家から出るのにも困難、そして、水トイレも断水となる。

その観点でいうと、都心のマンションはもっと、電源喪失に備えるべきだと思うし、電源を喪失した場合は、復旧するまでは別の建物に住む事を 想定しておいたほうがよい。

 

・治水

今回活躍が注目された、八ッ場ダム首都圏外郭放水路

何事もなければ、ともすれば無駄とも言われる災害対策。

日頃の備えがいざという時役にたつ。

台風15号(ブルーシート編)

1前回に続き、衛星画像により、台風15号(2019)の被害を確認する。

今回の衛星は、 Sentinel-2 、更新頻度は低いが、入手しやすい画像の中では、高精度な画像が入手できる。

https://apps.sentinel-hub.com/eo-browser/

 

1枚目は2019/9/10 、日付からすると台風通過直後だと思う。

場所は鋸南町。中央左の森は、大黒山展望台だそうである。

f:id:tsubute:20190921205143j:plain

続いて2枚目、2019/9/15 青い部分がいくつか見える

精度は確認できてないが、これは屋根などに掛けられたブルーシートの可能性がある。

f:id:tsubute:20190921205023j:plain

前述のサイトでは、RGBをバンド別に割り当てる機能があり、上記2つの画像は、青が見やすいバンド(周波数)を目立たせている。

 

結構な数の建物がブルーになっている。

中には、屋根がもともと青いものもあるのかもしれないと、Google Earthで見てみるとたしかに青い屋根の建物もありそうだ。ただ、 9/9の画像との比較で見る限り、多くがブルーシートと考える。

 

また、個別には確認できていないが、報道の空撮映像などから、いくつかの建物は実際にブルーシートのかかった建物であることまで確認できた。

 

 

以前、地震の後の仙台を訪れた事があるが、同様にブルーシートが掛けられた屋根を多く見かけた。なかなか難しいのかもしれないが、これをみるとやはり屋根瓦は軽いものや丈夫なものに換えていったほうがよいように思う。

 

差分画像を作ったり、QGISを活用してみようと思ったが、あまり良い品質のデータが作れなかったので、今回はここまで。

ただ、このぐらいの色が取れていれば、本当はグリッドで色分ができると思う。

 

 

まだ、停電が解消されていない地域もありますが、通常営業の観光スポットも多くあるので、皆さま連休には、千葉でレジャーを楽しんではどうでしょうか。