今回テストしたU-Netモデルは、図1に示す標準U-Netモデル、6層U-Netモデル、8層Unetモデルの3種です。図1に示すU字型の左側のEncoder部分は、4段階のmax pool 2x2(これはkerasのMaxPooling2D(2x2)に該当)を使用した5層になっており、Decoder部分は4段階のup-conv 2x2(これはkerasのUpSampling2D(2x2) + Conv2D(2x2)に該当)を使用した4層になっていますので、標準U-Netモデルは5層U-Netモデルに該当します。そして、標準U-NetモデルのEncoderとDecoder部分に一層ずつ追加したモデルを6層U-Netモデルと呼び、三層ずつ追加したモデルを8層U-Netモデルと呼びます。ただし、追加した層にはテンソルの形状が変化するMaxPooling2DやUpSampling2Dを使用せず、Conv2D(畳み込み)、BatchNormalization(バッチごとの正規化)、ReLU(ReLU活性化関数処理)のみを使用しています。なお、各モデルの学習パラメーター数は下表の通りです。
表1 各モデルの学習パラメーター数
標準U-Netモデル
6層U-Netモデル
8層Unetモデル
28,594,171
30,267,003
37,373,627
衛星画像から建物を検出する問題としては、SpaceNet社が提供した課題SpaceNet 1: Building Detection v1のRio de Janeiroの街の衛星画像データを使用させて頂きます。この課題では、ほぼ200mx200mの区画に分割された6,940枚の訓練データと2,795枚のテストデータに該当するTIF画像データと建物データ(以降正解マスクと呼びます)が抽出できるgeojsonデータが用意されているはずでしたが、テストデータに該当するgeojsonデータが見当たらないため、6,940枚の訓練データから、25%がテストデータとなるよう新たに抽出し、訓練データとして5,205枚、検証データとして1,735枚を使用しました。また、AIモデルの生成はTensorFlow/keras2.12.0を使用し、機械学習はGoogle ColabのGPUであるT4で行いました。