LoginSignup
2
7

More than 1 year has passed since last update.

ChatGPTで作る - 京都の衛星画像を機械学習で解析するプログラム

Last updated at Posted at 2023-01-29

以前、京都の衛星画像を機械学習で解析する記事を書きました。

今回は同じことをChatGPTに頼んでコードを書いてもらいました。

image.png
先ずはこのようにChatGPTに入力します。
するとあっという間に以下のような返答が

image.png
日本語でコメント付きです。

解析した画像の保存は次の通り。
image.png

さらにどのようなことをするか簡単な解説まであります。

しかし、このコードはバグがありました。エラーを何もコメントも付けずにそのままコピーしてみました。

image.png

これで変更されたのが以下の点です。

データ切り出し部分
image.png
画像保存部分
image.png

これでできたコードが以下の通りです。切り取り個所など若干の修正は入れてますが、ほとんどChatGPTで書かれたコードです。

import rasterio
import numpy as np
import glob
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# dataフォルダーにあるGeoTIFF画像を全て読み込む
files = glob.glob("data/*.tiff")
images = []
for file in files:
    with rasterio.open(file) as src:
        images.append(src.read(1))

# x,y地点から高さh、幅wで指定してデータを切り出し
x=5570
y=2083
h=900
w=500

cut_images = []
for image in images:
    cut_images.append(image[y:y+h, x:x+w])

# クラスタリングを行う
data = np.concatenate(cut_images)
kmeans = KMeans(n_clusters=10, random_state=0)
kmeans.fit(data.reshape(-1, 1))

# 結果を高さh、幅wの画像で保存する。
labels = kmeans.labels_.reshape(h, w)
plt.imshow(labels, cmap="turbo")
plt.colorbar(ticks=np.arange(10))
plt.savefig("images/clustered_image.png")

どのようにクラスタリングを行うか指定していませんが、ChatGPTはk-meansを選択したようです。

完成した画像はこの通り。色使いなど修正の余地はありますが。京都盆地の画像がしっかりと表示されています。

image.png

鴨川デルタ、京都御所、桂川などはっきりと見えて取れますし巨椋近辺の土地利用の違いも出ています。

k-meansは深層学習などではありませんが機械学習の一部で、そのプログラムをAIを使って作れました。


ランドサットデータについて (https://landbrowser.airc.aist.go.jp/landbrowser/index.html)
“ The source data were downloaded from AIST’s LandBrowser, (https://landbrowser.airc.aist.go.jp/landbrowser/). Landsat 7/8 data courtesy of the U.S. Geological Survey.”

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7