高校数学で理解する画像検索(東大オープンキャンパス2020)

6bd63bb363d2cb9933b263463f6305cf?s=47 Yusuke Matsui
September 04, 2020

 高校数学で理解する画像検索(東大オープンキャンパス2020)

高校生のための東京大学オープンキャンパス2020: http://cdn.pr.u-tokyo.ac.jp/
9/22 13:00 - 14:00
配信URL: https://www.youtube.com/watch?v=HaqOBJPmr28

6bd63bb363d2cb9933b263463f6305cf?s=128

Yusuke Matsui

September 04, 2020
Tweet

Transcript

  1. 【スライドのURL】 https://bit.ly/3hUxgW8 【工学部電子情報工学科】 高校数学で理解する画像検索 講師 松井勇佑 東京大学 工学部電子情報工学科 / 大学院情報理工学系研究科電子情報学専攻

    http://yusukematsui.me 2020/9/22, 東大オープンキャンパス2020 1
  2. 【スライドのURL】 https://bit.ly/3hUxgW8 松井勇佑 東京大学 講師 ➢ 学部:工学部 電子情報工学科 ➢ 大学院:情報理工学系研究科

    電子情報学専攻 研究:情報系。特に画像処理 matsui@hal.t.u-tokyo.ac.jp http://yusukematsui.me @utokyo_bunny 1 , … , argmin ∈ 1,2,…, − 2 2 画像検索の理論(今日の話題) 漫画画像処理 2
  3. 【スライドのURL】 https://bit.ly/3hUxgW8 電気系 / eeic “東京大学工学部 電子情報工学科・電気電子 工学科は、現代技術の中枢を担う情報・電 気・電子の技術を体系的に学び、最先端の応 用へと展開していく力を養うことをめざして

    いきます。” ➢ 電子情報工学科 ✓ 主に情報系の科学と技術に 重点をおいて学び始めます。 ➢ 電気電子工学科 ✓ 主に物理系の科学と技術に 重点をおいて学び始めます。 3 パンフレットはダウンロードできます http://www.ee.t.u-tokyo.ac.jp/j/education/pdf/guidance_book.pdf
  4. 【スライドのURL】 https://bit.ly/3hUxgW8 4

  5. 【スライドのURL】 https://bit.ly/3hUxgW8 5 https://www.google.co.jp/imghp?hl=ja

  6. 【スライドのURL】 https://bit.ly/3hUxgW8 6 https://www.google.co.jp/imghp?hl=ja

  7. 【スライドのURL】 https://bit.ly/3hUxgW8 7 https://www.google.co.jp/imghp?hl=ja

  8. 【スライドのURL】 https://bit.ly/3hUxgW8 8 https://www.google.co.jp/imghp?hl=ja 画像 検索

  9. 【スライドのURL】 https://bit.ly/3hUxgW8 9 https://about.mercari.com/press/news/articles/20190318_image_search/

  10. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 10

  11. 【スライドのURL】 https://bit.ly/3hUxgW8 どうやって? https://emojipedia.org/thinking-face/ 似てるもの 発見! 高校数学で理解する画像検索 今日の話題: ➢高校数学の知識を用いて、画像検索の仕組みを理解する ➢高校で習う数学が、現実の問題につながっていることを学ぶ

    11
  12. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 12 1. 数学の準備 2. 画像の表現

    3. 真面目に探索(低速・高精度) 4. ちょっとさぼって探索(高速・低精度)
  13. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 13 1. 数学の準備 2. 画像の表現

    3. 真面目に探索(低速・高精度) 4. ちょっとさぼって探索(高速・低精度)
  14. 【スライドのURL】 https://bit.ly/3hUxgW8 14 数学の準備 Ԧ 4 3 ➢ 高校ではベクトル(空間中の点)をこう書きます Ԧ

    = (4, 3) ➢ その図形的な意味は右図です ➢ 大学以降の工学系では次のようにすることが多いです ✓ ベクトルを太字に ✓ カッコは角括弧に ✓ 横ではなく縦ベクトルを用いる = 4 3 ➢ これは表記の違いなので、高校のベクトルと 同じだと思ってください
  15. 【スライドのURL】 https://bit.ly/3hUxgW8 15 数学の準備 = 9 7 三軸目 軸目 =

    3 21 12 = 73 2 16 ⋮ 8 二次元空間の点 (高校で習うもの) 三次元空間の点 (高校で習うもの) 全く同様に、 次元空間の点
  16. 【スライドのURL】 https://bit.ly/3hUxgW8 16 数学の準備 = 9 7 二次元空間の点 (高校で習うもの) =

    6 5 ➢ 二次元の場合、点 と点 の距離は、 三平方の定理から求まる ➢ これを次のように表記する: − = 9 − 6 2 + 7 − 5 2 = 13 ➢ 意味: − 記号の定義: ベクトル = ベクトルの長さ なので、 − = − の長さ
  17. 【スライドのURL】 https://bit.ly/3hUxgW8 17 数学の準備 = 9 10 8 ➢ 三次元の場合も、同様に、

    点と点の距離が求まる: − = 3 − 9 2 + 21 − 10 2 + 12 − 8 2 = 173 三軸目 三次元空間の点 (高校で習うもの) = 3 21 12
  18. 【スライドのURL】 https://bit.ly/3hUxgW8 18 数学の準備 ➢ 次元の場合も、同様に、 点と点の距離が求まる: − = 73

    − 60 2 + 2 − 41 2 + ⋯ + 8 − 13 2 = 102 7 軸目 全く同様に、 次元空間の点 = 73 2 ⋮ 8 = 60 41 ⋮ 13 ➢ 多次元ベクトルは、2次元や3次元の ベクトルと同様に扱える ➢ 距離も、同様に計算できる
  19. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 19 1. 数学の準備 2. 画像の表現

    3. 真面目に探索(低速・高精度) 4. ちょっとさぼって探索(高速・低精度)
  20. 【スライドのURL】 https://bit.ly/3hUxgW8 20 画像の表現 ? ➢ 画像をコンピュータが処理できるようにしたい ➢ 画像をなんらかの数値(ベクトル)として表現したい ➢

    似ている画像は、似ているベクトルになってほしい ➢ 紹介:色ヒストグラム、深層特徴量
  21. 【スライドのURL】 https://bit.ly/3hUxgW8 66 221 32 123 78 11 46 32

    52 32 99 93 37 142 43 11 68 13 11 23 54 3 23 22 124 56 33 27 213 33 232 28 4 32 111 45 54 77 18 123 7 43 46 32 52 32 99 98 37 142 43 11 68 23 11 23 54 3 23 11 124 56 33 27 213 35 232 28 4 32 111 11 132 43 11 54 24 23 46 32 52 32 99 13 37 142 43 11 68 2 11 23 54 3 23 131 124 56 33 27 213 43 232 28 4 32 111 22 21 画像の表現:色ヒストグラム 出現回数 画素の値 100 200 出現回数 画素の値 100 200 出現回数 画素の値 100 200 色に着目 ➢ 画像の各画素は、赤・青・緑の3つの数値 ➢ コンピュータ上では、単なる整数で表現 ヒストグラム化 ➢ 画素値の出現回数
  22. 【スライドのURL】 https://bit.ly/3hUxgW8 22 画像の表現:色ヒストグラム 出現回数 画素の値 100 200 出現回数 画素の値

    100 200 出現回数 画素の値 100 200 ➢ 合体させると、この場合12個の数値に ➢ 12次元のベクトルだと解釈 ➢ 画像を表現する特徴ベクトルが出来た
  23. 【スライドのURL】 https://bit.ly/3hUxgW8 23 画像の表現:色ヒストグラム = 15 17 9 ⋮ 14

    画像: 12次元の 特徴ベクトル: 特徴 抽出 12軸目 ➢ 画像をから抽出した特徴ベクトルをとする ➢ は、の本質的な性質を表すと期待する ➢ はベクトルなので、様々な計算が可能
  24. 【スライドのURL】 https://bit.ly/3hUxgW8 24 画像の表現:色ヒストグラム ①データベース中の画像から 特徴ベクトルを抽出し、保存しておく

  25. 【スライドのURL】 https://bit.ly/3hUxgW8 25 画像の表現:色ヒストグラム ②クエリ画像からも 特徴量を抽出する ①データベース中の画像から 特徴ベクトルを抽出し、保存しておく

  26. 【スライドのURL】 https://bit.ly/3hUxgW8 26 画像の表現:色ヒストグラム ②クエリ画像からも 特徴量を抽出する ③各ベクトルとの距離を求める ①データベース中の画像から 特徴ベクトルを抽出し、保存しておく

  27. 【スライドのURL】 https://bit.ly/3hUxgW8 27 画像の表現:色ヒストグラム ②クエリ画像からも 特徴量を抽出する ③各ベクトルとの距離を求める ④一番近いものが、一番色が似ている画像 色ヒストグラムによる画像検索の実現 https://emojipedia.org/grinning-face-with-smiling-eyes/

    ①データベース中の画像から 特徴ベクトルを抽出し、保存しておく
  28. 【スライドのURL】 https://bit.ly/3hUxgW8 28 画像の表現:色ヒストグラム しかし、色だけだと、うまくいかないかも 猫ではないが、色が似てる 猫だが、色は似ていない

  29. 【スライドのURL】 https://bit.ly/3hUxgW8 29 画像の表現:深層特徴量 = 61 12 39 ⋮ 14

    画像: 例:128次元の 深層特徴量 128軸目 ➢ 実際は、機械学習という技術を用いる ➢ 猫画像同士が近くなってくれるような、 深層特徴量をデザインする 機械 学習
  30. 【スライドのURL】 https://bit.ly/3hUxgW8 30 画像の表現:深層特徴量 ➢ 猫なら近く ➢ 猫以外は遠く

  31. 【スライドのURL】 https://bit.ly/3hUxgW8 31 画像の表現 ➢ 画像をコンピュータが処理できるようにしたい ➢ 画像をなんらかの数値(ベクトル)として表現 ➢ 似ている画像は、似ているベクトルに

    ➢ 例:色ヒストグラム、深層特徴量 = 61 12 39 ⋮ 14
  32. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 32 1. 数学の準備 2. 画像の表現

    3. 真面目に探索(低速・高精度) 4. ちょっとさぼって探索(高速・低精度)
  33. 【スライドのURL】 https://bit.ly/3hUxgW8 33 真面目に探索(低速・高精度)

  34. 【スライドのURL】 https://bit.ly/3hUxgW8 34 真面目に探索(低速・高精度) 8 13 25

  35. 【スライドのURL】 https://bit.ly/3hUxgW8 35 真面目に探索(低速・高精度) 8 13 25 探索: クエリベクトルと、 データベースベクトル1

    , 2 , … を比べる
  36. 【スライドのURL】 https://bit.ly/3hUxgW8 36 真面目に探索(低速・高精度) 探索問題の定義 = 61 39 ⋮ 14

    1 = 3 26 ⋮ 7 2 = 11 32 ⋮ 99 = 5 4 ⋮ 72 … 比べる ➢ 次元のクエリベクトル、および本のデータベースベクトル1 , … , がある ➢ と各 を比べ、一番近いものを選ぶ ➢ 現実の探索問題を考える上で重要な点はなんだろう? ➢ 速度と精度 ➢ まずは厳密に探索する方法を紹介(高精度だが低速) ➢ 計算の速度とは何だろう? ➡計算の量で見積もる
  37. 【スライドのURL】 https://bit.ly/3hUxgW8 37 真面目に探索(低速・高精度) 探索問題の定義 = 61 39 ⋮ 14

    1 = 3 26 ⋮ 7 2 = 11 32 ⋮ 99 = 5 4 ⋮ 72 … 比べる ➢ 次元のクエリベクトル、および本のデータベースベクトル1 , … , がある ➢ と各 を比べ、一番近いものを選ぶ と1 の距離の二乗 = − 1 2 = 61 − 3 2 + 39 − 26 2 + ⋯ + 14 − 7 2 値の大小だけが重要なので、二乗して考える。 すると、ルートをとらなくていい
  38. 【スライドのURL】 https://bit.ly/3hUxgW8 38 真面目に探索(低速・高精度) と1 の距離の二乗 = − 1 2

    = 61 − 3 2 + 39 − 26 2 + ⋯ + 14 − 7 2 値の大小だけが重要なので、二乗して考える。 すると、ルートをとらなくていい 引き算一回 掛け算一回 足し算一回 回の引き算 + 回の掛け算 + − 1 回の足し算 = 3 − 1回の計算 ≃ 3回の計算 四則演算は同程度の速度と 仮定し、「計算」とまとめる たとえば計算は1ナノ秒 は十分に大きいとし、1は無視 探索問題の定義 = 61 39 ⋮ 14 1 = 3 26 ⋮ 7 2 = 11 32 ⋮ 99 = 5 4 ⋮ 72 … 比べる ➢ 次元のクエリベクトル、および本のデータベースベクトル1 , … , がある ➢ と各 を比べ、一番近いものを選ぶ
  39. 【スライドのURL】 https://bit.ly/3hUxgW8 39 真面目に探索(低速・高精度) − 1 2を求める ➡ 3回の計算 ➢

    これを1 , … , に対し回行う ➡ 合計で3回の計算 ➢ 「一番近いものを選ぶ」は、個の「距離の値」を 一つ一つ眺めていけばいい。これも「回の計算」とする ➢ 合計で3 + = 3 + 1 ≃ 3回の計算 は十分に大きいとし、 1は無視 探索問題の定義 = 61 39 ⋮ 14 1 = 3 26 ⋮ 7 2 = 11 32 ⋮ 99 = 5 4 ⋮ 72 … 比べる ➢ 次元のクエリベクトル、および本のデータベースベクトル1 , … , がある ➢ と各 を比べ、一番近いものを選ぶ
  40. 【スライドのURL】 https://bit.ly/3hUxgW8 40 真面目に探索(低速・高精度) 探索問題の計算コスト ➡ 3回の計算 ➢ 3も2もと大して変わらないとして、 定数倍は無視するという大胆な近似を行う

    ➢ 最終的に、次元本のベクトルたちに対する探索の計算のコスト ➡ 回の計算 探索問題の定義 = 61 39 ⋮ 14 1 = 3 26 ⋮ 7 2 = 11 32 ⋮ 99 = 5 4 ⋮ 72 … 比べる ➢ 次元のクエリベクトル、および本のデータベースベクトル1 , … , がある ➢ と各 を比べ、一番近いものを選ぶ
  41. 【スライドのURL】 https://bit.ly/3hUxgW8 41 真面目に探索(低速・高精度) 真面目に探索のまとめ: ➢ 精度:厳密 ➢ 速度:回の計算 例:

    ➢ 計算に1ナノ秒(10−9秒)かかるなら、 ざっくりナノ秒(10−9秒) ➢ = 1000, = 104の場合、10ミリ秒 探索問題の定義 = 61 39 ⋮ 14 1 = 3 26 ⋮ 7 2 = 11 32 ⋮ 99 = 5 4 ⋮ 72 … 比べる ➢ 次元のクエリベクトル、および本のデータベースベクトル1 , … , がある ➢ と各 を比べ、一番近いものを選ぶ 速いの?遅いの? ➢ が10倍になると、速度も10倍 ➢ あまりうれしくない
  42. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 42 1. 数学の準備 2. 画像の表現

    3. 真面目に探索(低速・高精度) 4. ちょっとさぼって探索(高速・低精度)
  43. 【スライドのURL】 https://bit.ly/3hUxgW8 43 ちょっとさぼって探索(高速・低精度)

  44. 【スライドのURL】 https://bit.ly/3hUxgW8 44 ちょっとさぼって探索(高速・低精度) 本全てのベクトルと比べると大変 ➢ そもそも遠いベクトルは外れ ➢ これらとの距離計算は無駄 ➢

    計算をサボれないか?
  45. 【スライドのURL】 https://bit.ly/3hUxgW8 45 ちょっとさぼって探索(高速・低精度)

  46. 【スライドのURL】 https://bit.ly/3hUxgW8 46 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ①ベクトルを事前に個のグループに分けておく ここでは =

    3
  47. 【スライドのURL】 https://bit.ly/3hUxgW8 47 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ②クエリと本の代表ベクトルを比較し、 一番近いグループを選ぶ ①ベクトルを事前に個のグループに分けておく

    ここでは = 3
  48. 【スライドのURL】 https://bit.ly/3hUxgW8 48 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ①ベクトルを事前に個のグループに分けておく ②クエリと本の代表ベクトルを比較し、 一番近いグループを選ぶ

    ③選ばれたグループ内 のみ探索する ここでは = 3
  49. 【スライドのURL】 https://bit.ly/3hUxgW8 49 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ①ベクトルを事前に個のグループに分けておく ➢ 事前処理なので、気にしない

    ③選ばれたグループ内 のみ探索する ②クエリと本の代表ベクトルを比較し、 一番近いグループを選ぶ ここでは = 3
  50. 【スライドのURL】 https://bit.ly/3hUxgW8 50 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ①ベクトルを事前に個のグループに分けておく ➢ 事前処理なので、気にしない

    ②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ ➢ 本のベクトルとの探索のコストは「回の計算」だった ➢ ←とすることで、「回の計算」だと算出できる ③選ばれたグループ内 のみ探索する ここでは = 3
  51. 【スライドのURL】 https://bit.ly/3hUxgW8 51 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ①ベクトルを事前に個のグループに分けておく ➢ 事前処理なので、気にしない

    ②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ ➢ 本のベクトルとの探索のコストは「回の計算」だった ➢ ←とすることで、「回の計算」だと算出できる ③選ばれたグループ内のみ探索する ➢ 一つのグループ内の ベクトル本数の平均は/ ➢ ←/とすることで 「 / 回の計算」だと算出できる ここでは = 3
  52. 【スライドのURL】 https://bit.ly/3hUxgW8 52 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 ①ベクトルを事前に個のグループに分けておく ➢ 事前処理なので、気にしない

    ②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ ➢ 本のベクトルとの探索のコストは「回の計算」だった ➢ ←とすることで、「回の計算」だと算出できる ③選ばれたグループ内のみ探索する ➢ 一つのグループ内の ベクトル本数の平均は/ ➢ ←/とすることで 「 / 回の計算」だと算出できる 結論: + 回の計算 ここでは = 3
  53. 【スライドのURL】 https://bit.ly/3hUxgW8 53 ちょっとさぼって探索(高速・低精度) + 回の計算 + = 2 回の計算

    回の計算 は自由に決められるパラメータ = としてみると 「定数倍は無視」ルール なぜ = ? ➢ = + とすると、 を 最小にするなので ➢ すなわち、 = 0を解くと、 =
  54. 【スライドのURL】 https://bit.ly/3hUxgW8 54 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 失敗する場合もある 別のグループの ベクトルのほうが近い

  55. 【スライドのURL】 https://bit.ly/3hUxgW8 55 探索のまとめ コストの実例 ( = 128) 探索方式 精度

    計算コスト = 100 = 10000 = 1000000 まじめに探索 高い 回 12800 1280000 128000000 さぼって探索 低い 回 1280 12800 128000 ➢ 回は回よりだいぶ少ない 例: lim →∞ = 0 ➢ つまり、だいぶ速い ➢ 探索問題は数学を使ってモデリング出来る。高校数学はその基礎になっている ➢ 実際の画像検索システムでは、上のように、各方式のメリットデメリットを 考慮にいれて、方式を選択する
  56. 【スライドのURL】 https://bit.ly/3hUxgW8 似てるもの 発見! 高校数学で理解する画像検索 56 1. 数学の準備 2. 画像の表現

    3. 真面目に探索(低速・高精度) 4. ちょっとさぼって探索(高速・低精度)
  57. 【スライドのURL】 https://bit.ly/3hUxgW8 57 話さなかった重要トピック ➢ 精度が高い、低い、とはどういうことか? ✓ Recall@kといった指標で数値的に計測する ➢ メモリ消費量

    ✓ 探索は、本当は、「精度・速度・メモリ消費量」のトレードオフ ✓ 「精度100%かつ爆速。ただしメモリを無限に使う」という手法が作れてしまう ➢ 深層特徴量って結局何? ✓ 「ネコ1.jpgとネコ2.jpg」は似てます、といった情報をコンピュータにたくさん与えると、 コンピュータが自動で学習。「距離学習」という機械学習理論 ✓ 参考:内田祐介、「モダンな深層距離学習 (deep metric learning) 手法: SphereFace, CosFace, ArcFace」、Qiita、2019 https://qiita.com/yu4u/items/078054dfb5592cbb80cc ➢ グループ分けってどうするの? ✓ よく使われるのはk-meansクラスタリングという古典的な手法 ✓ 高校数学で理解できる ✓ 調べてみよう!
  58. 【スライドのURL】 https://bit.ly/3hUxgW8 58 大学で学ぶ学問との接続 半加算器 ➢ 計算量理論 「回の計算」といった考察は、計算量の理論として学ぶ アルゴリズムの性能を数式で記述・比較 ➢

    データ構造 ✓ 実際の問題では、ハッシュテーブルやツリーといった高度なデータ構造を扱う ✓ 今日の「さぼって探索」は、実は転置インデクスというデータ構造 ➢ アーキテクチャ ✓ 「足し算」と「引き算」は大体同じ時間がかかる、 とあったが、そもそも「足し算」とは? ✓ 突き詰めると、コンピュータ上の足し算は回路で実現 https://ja.wikipedia.org/wiki/データ構造 https://ja.wikipedia.org/wiki/加算器 バイナリツリー 工学部電子情報・電気電子では、このような 様々なレイヤーを幅広く学びます!
  59. 【スライドのURL】 https://bit.ly/3hUxgW8 59 参考資料 ➢ 画像処理に興味を持ったら ✓ 次の教科書が参考になります「ディジタル画像処理[改訂第二版]」、画像情報教育振興協会、2020 https://www.amazon.co.jp/dp/490347464X/ ➢

    今日発表した手法のコード (c++/python) ✓ Faissライブラリ中の転置インデックスフラットというアルゴリズム https://github.com/facebookresearch/faiss/wiki/Faster-search ➢ 企業における画像検索システムの紹介 ✓ 山際康貴、「ひとりで作る画像検索システム」 、PyCon JP 2020: https://docs.google.com/presentation/d/1M4O9lQrrYpuA_daT3uUzoUBnJLg4wcJuaIeq-XhgSSk/ ✓ shikajiro、「近似最近傍探索Indexを作るワークフロー」、ZOZO Tech Blog 2020: https://techblog.zozo.com/entry/ann-workflow ✓ shibui.yusuke、「メルカリ写真検索 1年の歩み」、ML@Loft #11, 2020: https://www.slideshare.net/yusukeshibui/mercari-image-search-1st-anniversary