Computer Vision

Python, Computer Vision, AI, Transhumanism 関連

衛星写真でみる能登半島地震

最初に、能登地震により影響を受けた方々へ、心からのお見舞いを申し上げます。

 

今回は、地震の影響による、海岸沿いの道路についての状況を確認してみようと思い、衛星画像から差分解析。

いつものようにEObrowserで画像を取得。

場所は、石川県輪島市 三ッ子浜のあたり。

sentinelshare.page.link

 

雲が多く、比較したのは2023.12.06と2024.01.30を選択した。

差分をとって、改めて見るまでは、意味がよくわからなかったのだが、海岸線沿いに大きな変化が見られる。

左が地震前、右が地震後である。(見やすいよう明るさは変更している。)

 

差分解析による、差分抽出を実施しできた画像

今回の差分はclaude 2に投げて作ってもらったプログラムを用いている。

 

www3.nhk.or.jp

 

海岸線に沿って、海岸線が隆起した事で、茶色い部分が増えているのが最初の画像でもみてとれる。さらに差分データを元にマークをつけた画像でみるとさらにわかりやすい。

 

たしかに、海岸線の話も、言葉には聞いていた。

しかし、今回の地震のテレビ報道は、特に繰り返しの衝撃映像が多く、家族の手前あまり見ていなかった。

今更ながらであるが、実際このような状態になっているのを、衛星画像で目の当たりにし衝撃を受けた。

 

これまで、私も何回かは、地震前後の画像比較は行なっているが、海岸線がここまで変化した状況を目の当たりにするのは初めてである。

 

Youtubeにアップされている近況の動画をみると、現在でもこんな感じのようだ。

石川県輪島市渋田町 三ッ子浜海岸 国道249号線崩落部分 2024年3月17日(日) 風切り音あり音量注意 - YouTube

 

全面的な復興への道のりは、まだまだ時間がかかるだろうが、復旧して観光できるエリアもあるので、復興の助けになるような、エリアには、皆様にもぜひ足を運んでいただき、復興につなげていただければと思います。

 

 

差分解析に使ったプログラムは以下の通り。

import cv2
import numpy as np

# 画像を読み込む
#グレースケールで読み込み
img1 = cv2.imread('2023-12-06-00_00_2023-12-06-23_59_Sentinel-2_L2A_True_color.png',1)
img2 = cv2.imread('2024-01-30-00_00_2024-01-30-23_59_Sentinel-2_L2A_True_color.png',1)

# グレースケール変換
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

# ガウシアンフィルタで平滑化
blur1 = cv2.GaussianBlur(gray1, (5, 5), 0)
blur2 = cv2.GaussianBlur(gray2, (5, 5), 0)

# 差分画像の計算
diff = cv2.absdiff(blur1, blur2)

# 二値化
thresh = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]

# 輪郭抽出
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 変化領域を可視化
result = img2.copy()
for cnt in contours:
    area = cv2.contourArea(cnt)
    if area > 10:  # 小さな変化領域を無視
        cv2.drawContours(result, [cnt], 0, (0, 255, 0), 2)

#cv2.imshow('Change Detection', result)
#cv2.waitKey(0)
#cv2.destroyAllWindows()

cv2.imwrite("diff-c.png", result)

 

猫ミームから犬ミームを作ってみる

ミームの動きをベースに、犬ミームを作れないかと試してみた。

まずは、vid2denseposeで猫ミームの動画からモーションシーケンスを作ってみる。

 

fpsが25である必要があったので、それをffmpegで調整。

 

vid2denseposeで変換してみたが、人間じゃないからか、まともにセグメントされなかった。しかたながないので、とりあえず自力でセグメントを試してしてみる事に。

こんな感じ。

続いて犬の画像をdream studioで生成。

そのままだとハマる感じがしないので、photoshop elementで形を猫ミームになんとなくあわあわせてた。こんな感じに。

なんとかここまで辿り着き、いざ動画生成。

動画生成には、以前使った、Magic Animateを使った。

 

できた画像がこちら。

なんとなく、猫ミーム感はあるが、想像以上に枠からはみ出している。

うーむ失敗です。

人間じゃないとだめなのだろうか?それともセグメントの問題だろうか。

気が向いたらまた試してみようと思います。

木目の顔

ここのところStable Diffusion XLのネタ続きだが、あのちゃんがYoutubeで木目の顔について語っていて面白かったので、それっぽい何かを、SDXLで生成してみる。

 

なるほど、自分のイメージとはやや違うがこんな画像が生成できた。
縮小するか目を細めてみると、元の顔画像の残像が見えるかと思う。

元の顔が出ちゃうと、肖像権的にNGなので、ぎりぎり元がわからない程度に調整している。しかも、生成画像をつかって生成しているので、目鼻と髪型の位置は元画像に近いが、おそらくうまいこと復元しても、顔は別人である。

 

それはそうと、壁のシミとかなんとなくの図形を、シミュラクラ現象と呼ぶ。

本能的なものなのか、後天的に学習によって獲得したものなのかは知らないが、まあ顔を認識する需要が多いので、そんな検出能力が、そなわっているのだろう。


以前、画像生成について、少し考察する機会があり、最初に思ったのは、テクスチャと輪郭というものについてである。

大概ののものはシルエットだけでも判別できるように、輪郭というのはそのものを特定する上で重要なものである。

じゃあ、輪郭が同じならどうかというと、シマウマの色に塗った馬は、なんとなくシマウマに見える。おそらく虎柄にした猫もなんとなく雰囲気は出るだろう。

 

つまり世の中にあるあらゆるものは、輪郭と、テクスチャで成り立っている。

食品と、食品サンプルは輪郭が同じだがテクスチャが違うので、よくみると違いがわかる。

 

そう考えると、テクスチャをそのままで、形を変えてみるというのは結構面白いと思う。

 

パエリア温泉で、あなたは何を見つけますか?

昨年書いた投稿で

tsubute.hatenadiary.org

 

というのをやった。しかし、最新のモデルなら、もうちょっといけるでしょと思い、DreamStudio(STXL v1.0)を使い再チャレンジ。

基本的な流れは、以前とほぼ同様だが、
最初
Many women soaking in hot springs, crowd
で実行したら、そのプロンプトは生成できないと言われた。

じゃあboyはどうよとプロンプトを変更

パエリア温泉ボーイ

あーできてるじゃん。

ボーイは良いのかよw

しかも今回は、ちゃんと具もしっかり残っている。

じゃあ
Many old woman soaking in hot springs, crowd
はどうよ。

old woman

え? oldつければ良いのかよ・・・。
念の為 girlも試してみたが、プロンプトエラー。


結局の所 セクシュアリティ とは、若い女性って事なんだろう。

もういやーー!!

 

結論としては、前回から1年経らず。画像生成は急速に進化していて、ものの数分でこのクオリティで、ニュアンスを読んで実行してくれるというありがたい存在になっていたのである。知ってる。

AI動画

生成AIの進化はめまぐるしく、最近は音楽の生成なども注目を集めている。

一方動画AIも徐々に進化中。

そんな中、動画生成のAIが最近どんな感じか確認してみることにした。


画像を動かすパターンはいくつか存在するが、最近見かける、AI美女がダンスするものをまずは、試してみる。

ai-freak.com

 

人物のポーズを動かす事はできるが、顔の状態を保つのはやや苦手な模様。

そこで、ここは思い切って奇妙な素材を使って試してみる。鳥人間をDreamstudioを使って生成。
それをMagicanimateで実行。

 

こんな感じで、そのまんま人の形になってしまい、元の鳥の面影が皆無になってしまった。


このままだと意図から外れすぎているので、これをコマ画像に書き出し、
切り抜いてそれを改めてDreamstudioにかけて鳥人間感を復活させようと考えた。

動画を静止画(PNG)に変換。ffmpegで「動画から連番画像をつくる」を実行。


続いて上記余分な左2つのブロックを消した画像を作成。つまりトリミング。

画像の切り出しは何を使っても良いが

convert image_*.png -crop 528x528+1056+0  out%d.png
convertで実行。

PNGから動画への変換は再び、 ffmpeg
ファイル形式は、なんでも良いのだろうが、一旦mp4に変換。

動画からアニメーションGIFは動画のアニメーション化サイトを使って実行。

 


できた画像がこちら。

羽も一緒に動かせるとよかったが、そこは、MagicAnimateの時点で工夫しておく必要があったのだろう。

感想としては、良いクォリティの動画を作成するには、それなりに手間がかかりそうな感じを受けた。
とはいえ、いくつかの技術やテクニックを使えば、今でも創作の範囲をひろげられる可能性はありそうだ。

 

 

鉄ログ

今回はスマホの加速度センサーのログを取得し、いくつかの乗り物の振動ログを確認してみた。

 

使用したアプリは「phyphox」というもの。他にもいくつかあったが、無料で使えるし、試しに使った感じは良かった。

 

phyphox

phyphox

  • RWTH Aachen University
  • 教育
  • 無料

apps.apple.com

 

phyphox


スマホのセンサーからログが取れるアプリなのだが、試しに「gを含まない加速度」を使ってみるとこんな感じに。

 

続いて、電車に乗った時のデータを取得。

 

そのまま使っても良いのだが、ログの方を解析したくなった時の為に「データのエクスポート」でCSVデータとして保存。それをPython matplotlibを使ってグラフ化した。

 

出力プログラムの作成は、もっぱらChatGPTに作ってもらっている。

 

三田線

新宿線

都バス

 

見てのように、地下鉄同士は、ある程度似たようなログが取得できた。

基本的には、出発時と停車時に、衝撃があるというのが、通常の運行時かと思う。

 

一方バスの場合は、信号による停車があったり、もう少しイベントが多いかと思う。

電車に比べると振動自体もバスは、大きいイメージだが、これはバスや電車の仕様や、その時のイベントにもよるかと思う。

 

スマホのログだったりウェアラブル端末を解析すると、いつどこで誰が何をしているかというのがある程度把握できるというのが、これだけでも、だいたいイメージがつくかと思う。

 

※「どこで」の情報は、スマホの場合、GPSや、基地局の情報から把握する事ができる。

 

尚、今回のデータ取得では、いずれも手持ちの状態で測定しているので、人の手による振動も多少は含まれているかと思うが、その点はご了承ください。

 

個人的にこういったセンサーデータが興味深いのは、それぞれに特徴的な波形をもち、それらが何らかの状況の把握に役立つと思う点である。

このような単なるログでも、追求していけば、固有の特徴が把握できる可能性もある。

 

電車やバスであれば、運転者の特徴だったり、固有の車体に特有の特徴がみつかるかもしれない。経年で把握すれば、インフラの老朽化だったり、非破壊検査に近いようなものがわかったり、もっと膨大なデータを集めれば温度や、乗車数による変化が得られるかもしれないし、見つからないかもしれない。

 

Stable Diffusionによるいらすとや変換

いらすとやがオープンでフリーなイラスト素材を大量に放出した事により、近年の日本では、様々な掲示や資料に「いらすとや」のイラストが利用されている。

 

いらすとやのイラストは、様々なパターンがあり、使いやすい点はよいのだが、若干脱力感高めなので、もう少し真面目な資料にあわせたイラストが欲しい事もあるかと思う。

 

そこで今回はいらすとやの画像を、Stable Diffusionのimg2imgで変換してみる。

まずは蛙男。

蛙男

frog boy

それなりに意図通りの変換ができたと思う。

 

続いてロボット

 

ロボット

ハートを持ったロボット

 

プロンプトのほうは

illustration,simple,japan,robot with heart

ネガティブプロンプトは

3D,photo

を使って変換している。

 

それぞれ、 使用した生成モデルは Chilloutmix-Ni-pruned-fp32-fix

 

プロンプトの英語キーワードについては、Google翻訳なり、DeepL翻訳なりを使ったら良いと思う。

 

生成の背景が黒くなっているのは、いらすとやの素材が背景を透明にしてくれているからなのだが、気になる場合は、後から白背景に補正するか、元画像を背景白にすればよいかと思う。尚、試しに「background white」を入れてみたが、それはダメだった。

 

プロンプトに「japan」を入れているのは、日本ぽいイラストにしたいという意図。

時々、中国っぽくなったり、古来の日本カルチャーを意識したようなものになるが、その辺はAIの学習している要素のバイアスによるものなのだろう。

 

以上、いらすとや変換でした。

最初からプロントで生成してもよいパターンもあるだろうが、同じプロンプトで生成した例はこちら

まあ、海外風なイラストになるので、いらすとやの構図と、テイストを持ちつつも、少しだけ、いらすとや感を抜きたいときは、前述の手法が良いかと思う。

 

尚、Stable Diffusionの商用利用については、いくつかのモデルがありそれによっては、商用利用での微妙なので、ご注意ください。

 

また、著作権に関しては、線引きがあいまいな所があるという所も補足しておきたいと思います。(わかりやすい例としては、ミッキーマウスを生成させて、ミッキーマウスっぽいものができたとして、それをミッキーマウスとして掲示したり、販売するとアウトになるという場合とか。)

 

まあ最終的には、著作権診断AIみたいなのが組み込まれて、それがチェックしたら、基本的にはOKになるといいなと思っている。実際、Adobe Fireflyもそんなロジックで運用されているのかと勝手に思っている。