$30 off During Our Annual Pro Sale. View Details »

画像から撮影場所を当てる話 ~ 理論的背景 & どこが〇〇区らしいか ~

Keisuke OGAKI
February 04, 2022

画像から撮影場所を当てる話 ~ 理論的背景 & どこが〇〇区らしいか ~

"機械学習で逆ストリートビューを作り、写真から港区らしさを判定する"
https://www.m3tech.blog/entry/photo2geo
というブログの理論的背景を補強したりデモを追加したりするスライドです。

google slide: https://docs.google.com/presentation/d/1Dz2IgmPBvmA0AiMChlRnZHQb4We1igzFlxJYr84JdNQ/edit?usp=sharing

Keisuke OGAKI

February 04, 2022
Tweet

More Decks by Keisuke OGAKI

Other Decks in Science

Transcript

  1. 画像から撮影場所を当てる話
    理論的背景 & どこが〇〇区らしいか

    View Slide

  2. View Slide

  3. https://share.streamlit.io/hi-king/tokyo_pho
    to2geo/main/scripts/web.py

    View Slide

  4. どうしてできるのか

    View Slide

  5. この写真は地球上のどこ?

    View Slide

  6. 先行研究1: im2gps (CVPR2008)
    -> 写真から撮影場所を当てるのは、巨大なデータセットがあればできる

    View Slide

  7. -> 非常に多クラスになってしまうラベル付けを画像検索で解く
    検索
    似ている画像のGPSタグから、クエリ
    画像の撮影位置
    ● 専用の学習がいらない
    ● クラス数がどんなに増えても大丈夫

    View Slide

  8. 先行研究2: PlaNet (ECCV2016)
    -> ニューラルネットのパラメータは世界中の画像を覚えることができる能力がある
    26263クラス分類😇

    View Slide

  9. VS Geoguessur
    複数画像を入れられる改良も!

    View Slide

  10. 東京版を作る

    View Slide

  11. データクローリングどうやってやる?
    im2gps: flickrから画像収集
    PlaNet: Google+から画像収集
    ● GeoGuessurみたいな方法でできない。。。?
    ○ Goole Maps API !!!
    ■ url =
    f'https://maps.googleapis.com/maps/api/streetview?location={latitude},{longitude}&size=
    456x456&heading={heading}'
    ● GPSと市区町村ってどうやって紐付ける?
    ○ 'https://geolonia.github.io/japanese-addresses/api/ja/{district}/{area}.json'
    ■ 東京都/中央区.json
    ■ 市区町村の”字”の座標一覧が取れるので、最も近い字からラベリング
    [
    {
    "town": "佃二丁目",
    "koaza": "",
    "lat": 35.668796,
    "lng": 139.786583
    },
    {
    "town": "築地三丁目",
    "koaza": "",

    View Slide

  12. やってみました!
    ● 隣接してる組み合わせは間違えやすい(渋谷・港、中央・千代田)
    ● 旭川は東京と間違える場所ないのね。。。

    View Slide

  13. 過学習ではないのか?

    View Slide

  14. -> ウマ娘はウマ!?!?

    View Slide

  15. -> 予測が当たっているかも確かに重要だが、
    何がその判定を支えているか、というのはモデルの汎化性能の検証に重要
    ウマ娘のデザインだけでなく、背景のターフがウマ判定
    に大きく寄与していた
    (ただし、ウマ娘のデザインが完全に影響がないという
    結論でないこともまた注意 )

    View Slide

  16. どこを見ているかを調べよう

    View Slide

  17. その区らしさ上位を見てみる
    柵?

    View Slide

  18. Grad-CAM
    -> NNの推論プロセスに沿った方法でどこを見ているか検証しよう

    View Slide

  19. Grad-CAM
    -> NNの推論プロセスに沿った方法でどこを見ているか検証しよう
    1. 入力画像からCNNのある
    層の特徴マップを得る
    2. まぁとりあえず識別までやってみ
    る。
    3. 特徴マップの層まで、 ”目的のクラ
    スだけ”誤差逆伝搬
    4. backwardで得られたwとforwardで
    得られたAを掛けて(重み x 値)、最終
    的に1枚のGrad-CAMを得る

    View Slide

  20. 1. 入力画像からCNNのある層の特徴マップを得る
    ただし、一般にこの段階では X, Y, channelの3次元であり、まだ画像に落とすことは
    できない。特定の1channelが直接港区らしさにのみ反応していればいいのだが、陽
    に制約を入れていないのでそんな都合よくは学習されない。

    View Slide

  21. 2. まぁとりあえず識別までやってみる。
    いくつかのFC層などを挟み、最終的に識別クラス数 (=区の数)のベクトルにしている
    わけで、とりあえずそこまで推論を進める。
    (港区0.7, 中央区0.2などのスコアが出る )

    View Slide

  22. 3. 特徴マップの層まで、 ”目的のクラスだけ”誤差逆伝搬
    特徴マップのv(x, y, channel)ごとに、どれだけ目的のクラ
    スへの影響度が得られると考える
    これをchannnelごとに平均取ることで、どのチャンネルが
    どれだけ港区らしさに重要か、のチャンネル重み wがえら
    れる

    View Slide

  23. 4. backwardで得られたwとforwardで得られたAを掛けて
    (重み x 値)、最終的に1枚のGrad-CAMを得る

    View Slide

  24. Grad-CAM
    -> NNの推論プロセスに沿った方法でどこを見ているか検証しよう
    1. 入力画像からCNNのある
    層の特徴マップを得る
    2. まぁとりあえず識別までやってみ
    る。
    3. 特徴マップの層まで、 ”目的のクラ
    スだけ”誤差逆伝搬
    4. backwardで得られたwとforwardで
    得られたAを掛けて(重み x 値)、最終
    的に1枚のGrad-CAMを得る

    View Slide

  25. ● 全く同じ or ほぼ同じオブジェクトの出現を見ていることはある
    ● このタスクでは、実際その区にありがちなものであれば、手がかりにしてOK
    柵でした!

    View Slide

  26. おもしろ結果シリーズ

    View Slide

  27. 塀! 港区は塀
    植え込みも港区らしさ

    View Slide

  28. ポツンと家・木がある感 路側帯がデカイ!
    -> より抽象的な、田舎を認識している
    旭川(北海道)らしさ

    View Slide

  29. 中央区の水面から眺める江東区
    -> 今回の問題設定では外れているが、実は正解
    江東区
    中央区

    View Slide

  30. 新橋の路地

    View Slide

  31. ビル単体は難しい

    View Slide

  32. ビル単体は難しい

    View Slide

  33. View Slide

  34. 面白かったコメント
    スラドに寄せられてたコメントたちはなかなか面白いです
    https://srad.jp/story/21/12/16/1551245/
    :da:

    View Slide

  35. GeoGuesserガチ勢はやっ
    ぱりみてるらしい
    京都人

    View Slide