Slide 1

Slide 1 text

【スライドのURL】 https://bit.ly/3hUxgW8 【工学部電子情報工学科】 高校数学で理解する画像検索 講師 松井勇佑 東京大学 工学部電子情報工学科 / 大学院情報理工学系研究科電子情報学専攻 http://yusukematsui.me 2020/9/22, 東大オープンキャンパス2020 1

Slide 2

Slide 2 text

【スライドのURL】 https://bit.ly/3hUxgW8 松井勇佑 東京大学 講師 ➢ 学部:工学部 電子情報工学科 ➢ 大学院:情報理工学系研究科 電子情報学専攻 研究:情報系。特に画像処理 [email protected] http://yusukematsui.me @utokyo_bunny 1 , … , argmin ∈ 1,2,…, − 2 2 画像検索の理論(今日の話題) 漫画画像処理 2

Slide 3

Slide 3 text

【スライドのURL】 https://bit.ly/3hUxgW8 電気系 / eeic “東京大学工学部 電子情報工学科・電気電子 工学科は、現代技術の中枢を担う情報・電 気・電子の技術を体系的に学び、最先端の応 用へと展開していく力を養うことをめざして いきます。” ➢ 電子情報工学科 ✓ 主に情報系の科学と技術に 重点をおいて学び始めます。 ➢ 電気電子工学科 ✓ 主に物理系の科学と技術に 重点をおいて学び始めます。 3 パンフレットはダウンロードできます http://www.ee.t.u-tokyo.ac.jp/j/education/pdf/guidance_book.pdf

Slide 4

Slide 4 text

【スライドのURL】 https://bit.ly/3hUxgW8 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

【スライドの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次元の ベクトルと同様に扱える ➢ 距離も、同様に計算できる

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

【スライドのURL】 https://bit.ly/3hUxgW8 20 画像の表現 ? ➢ 画像をコンピュータが処理できるようにしたい ➢ 画像をなんらかの数値(ベクトル)として表現したい ➢ 似ている画像は、似ているベクトルになってほしい ➢ 紹介:色ヒストグラム、深層特徴量

Slide 21

Slide 21 text

【スライドの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つの数値 ➢ コンピュータ上では、単なる整数で表現 ヒストグラム化 ➢ 画素値の出現回数

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

【スライドのURL】 https://bit.ly/3hUxgW8 23 画像の表現:色ヒストグラム = 15 17 9 ⋮ 14 画像: 12次元の 特徴ベクトル: 特徴 抽出 12軸目 ➢ 画像をから抽出した特徴ベクトルをとする ➢ は、の本質的な性質を表すと期待する ➢ はベクトルなので、様々な計算が可能

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

【スライドのURL】 https://bit.ly/3hUxgW8 28 画像の表現:色ヒストグラム しかし、色だけだと、うまくいかないかも 猫ではないが、色が似てる 猫だが、色は似ていない

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

【スライドのURL】 https://bit.ly/3hUxgW8 30 画像の表現:深層特徴量 ➢ 猫なら近く ➢ 猫以外は遠く

Slide 31

Slide 31 text

【スライドのURL】 https://bit.ly/3hUxgW8 31 画像の表現 ➢ 画像をコンピュータが処理できるようにしたい ➢ 画像をなんらかの数値(ベクトル)として表現 ➢ 似ている画像は、似ているベクトルに ➢ 例:色ヒストグラム、深層特徴量 = 61 12 39 ⋮ 14

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

【スライドの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 値の大小だけが重要なので、二乗して考える。 すると、ルートをとらなくていい

Slide 38

Slide 38 text

【スライドの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 , … , がある ➢ と各 を比べ、一番近いものを選ぶ

Slide 39

Slide 39 text

【スライドの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 , … , がある ➢ と各 を比べ、一番近いものを選ぶ

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

【スライドの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倍 ➢ あまりうれしくない

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

【スライドのURL】 https://bit.ly/3hUxgW8 53 ちょっとさぼって探索(高速・低精度) + 回の計算 + = 2 回の計算 回の計算 は自由に決められるパラメータ = としてみると 「定数倍は無視」ルール なぜ = ? ➢ = + とすると、 を 最小にするなので ➢ すなわち、 = 0を解くと、 =

Slide 54

Slide 54 text

【スライドのURL】 https://bit.ly/3hUxgW8 54 ちょっとさぼって探索(高速・低精度) 代表 代表 代表 失敗する場合もある 別のグループの ベクトルのほうが近い

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

【スライドの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クラスタリングという古典的な手法 ✓ 高校数学で理解できる ✓ 調べてみよう!

Slide 58

Slide 58 text

【スライドのURL】 https://bit.ly/3hUxgW8 58 大学で学ぶ学問との接続 半加算器 ➢ 計算量理論 「回の計算」といった考察は、計算量の理論として学ぶ アルゴリズムの性能を数式で記述・比較 ➢ データ構造 ✓ 実際の問題では、ハッシュテーブルやツリーといった高度なデータ構造を扱う ✓ 今日の「さぼって探索」は、実は転置インデクスというデータ構造 ➢ アーキテクチャ ✓ 「足し算」と「引き算」は大体同じ時間がかかる、 とあったが、そもそも「足し算」とは? ✓ 突き詰めると、コンピュータ上の足し算は回路で実現 https://ja.wikipedia.org/wiki/データ構造 https://ja.wikipedia.org/wiki/加算器 バイナリツリー 工学部電子情報・電気電子では、このような 様々なレイヤーを幅広く学びます!

Slide 59

Slide 59 text

【スライドの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