投稿者leck_3328TweetPocket今参加中のKaggleのコンペティションでは衛星が取得した画像から船を検知するもの。コンペティションのリンクはこちらここのコンペティションで使われているモデルとして最有力候補なのがUNetと呼ばれるもの。具体的にどんな場面で使われているのか、どんなネットワーク構造を持っているのかがよく分からなかったので調べてみることに。学習の進め方Pytorchでの実装まとめ参考U-Netとはそもそもは医療用の画像検知のために使われたのが最初らしい。細胞のセグメンテーションとかやってるっぽい。2015年のISBIでの細胞検知チャレンジでかなり良い成績を残した。学習時間が短く(10時間ほど)、実用場面でもGPUを使うなら1秒程度でできるというのも特徴。以下のサイトの動画で成果をわかりやすくまとめているのでみてみると凄さがわかると思う。SegmentationCaffeを使った学習済みのデータも公開している。ネットワーク構造どんなネットワーク構造になっているのか。この画像が全てを物語っている。この画像では入力が572×572のものでそれを2層の畳み込み層を通過し、max-poolで画像を縮小して。いうのを4回繰り返してる。全結合層を一切使わず、畳み込み層のみで全てを構成。パッディングしないのも特徴。1回ごとに畳み込みを適用すると出力される画像が少しだけ小さくなる。4回ダウンサンプリングするので画像サイズは1/256になる。ダウンサンプリングが終われば今度はアップサンプリング。U-Netの特徴はここでダウンサンプリングの時に使っていた出力をそのままアップサンプリングした後の入力に合流させているところ。損失関数はどうやらクロスエントロピーで最終的に求めているようだ。最後の出力がソフトマックスを選んでいる影響が強そう。ダウンサンプリングするときの最後のとことろでDrop-outを入れると有効みたい。これはKaggleにも使えそうな手法。教師データを増やすために画像自体の変形を10ピクセルでの標準偏差を持つガウシアン分布を元におこなっている。(この辺り論文読んでもよく分からなかった)他にはグレースケールの変更もしていた。他のところからのコピペだけど貼るだけ貼っておく。ソースコードはここから拾ってきた。outなぜかこのモデルだと最後の活性化関数がハイパボリックタンジェントなんだよね。まとめ今回は物体検知に有効なU-Netについて簡単にまとめた。元々は医療用の画像検知に発達したもので、まさかこれが航空写真にまで応用されるなんて開発した人は考えていなかったと思う。これで詳しくなれたと思うのでKaggleを頑張る。ubuntu著者プロフィール。