高校生のための東京大学オープンキャンパス2020: http://cdn.pr.u-tokyo.ac.jp/ 9/22 13:00 - 14:00
スライド中の漫画画像:ARMS, (c) Kato Masaki, Manga109
配信URL:https://www.youtube.com/watch?v=fYqPxAPARR4
【スライドのURL】 https://bit.ly/3hUxgW8【工学部電子情報工学科】高校数学で理解する画像検索講師 松井勇佑東京大学 工学部電子情報工学科 / 大学院情報理工学系研究科電子情報学専攻http://yusukematsui.me2020/9/22, 東大オープンキャンパス20201
View Slide
【スライドのURL】 https://bit.ly/3hUxgW8松井勇佑東京大学 講師➢ 学部:工学部 電子情報工学科➢ 大学院:情報理工学系研究科 電子情報学専攻研究:情報系。特に画像処理[email protected]http://yusukematsui.me@utokyo_bunny1, … , argmin∈ 1,2,…, − 22画像検索の理論(今日の話題) 漫画画像処理 2
【スライドのURL】 https://bit.ly/3hUxgW8電気系 / eeic“東京大学工学部 電子情報工学科・電気電子工学科は、現代技術の中枢を担う情報・電気・電子の技術を体系的に学び、最先端の応用へと展開していく力を養うことをめざしていきます。”➢ 電子情報工学科✓ 主に情報系の科学と技術に重点をおいて学び始めます。➢ 電気電子工学科✓ 主に物理系の科学と技術に重点をおいて学び始めます。3パンフレットはダウンロードできますhttp://www.ee.t.u-tokyo.ac.jp/j/education/pdf/guidance_book.pdf
【スライドのURL】 https://bit.ly/3hUxgW84
【スライドのURL】 https://bit.ly/3hUxgW85https://www.google.co.jp/imghp?hl=ja
【スライドのURL】 https://bit.ly/3hUxgW86https://www.google.co.jp/imghp?hl=ja
【スライドのURL】 https://bit.ly/3hUxgW87https://www.google.co.jp/imghp?hl=ja
【スライドのURL】 https://bit.ly/3hUxgW88https://www.google.co.jp/imghp?hl=ja画像検索
【スライドのURL】 https://bit.ly/3hUxgW89https://about.mercari.com/press/news/articles/20190318_image_search/
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索10
【スライドのURL】 https://bit.ly/3hUxgW8どうやって?https://emojipedia.org/thinking-face/似てるもの 発見!高校数学で理解する画像検索今日の話題:➢高校数学の知識を用いて、画像検索の仕組みを理解する➢高校で習う数学が、現実の問題につながっていることを学ぶ11
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索121. 数学の準備2. 画像の表現3. 真面目に探索(低速・高精度)4. ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索131. 数学の準備2. 画像の表現3. 真面目に探索(低速・高精度)4. ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW814数学の準備Ԧ43➢ 高校ではベクトル(空間中の点)をこう書きますԦ = (4, 3)➢ その図形的な意味は右図です➢ 大学以降の工学系では次のようにすることが多いです✓ ベクトルを太字に✓ カッコは角括弧に✓ 横ではなく縦ベクトルを用いる =43➢ これは表記の違いなので、高校のベクトルと同じだと思ってください
【スライドのURL】 https://bit.ly/3hUxgW815数学の準備 =97三軸目軸目 =32112 =73216⋮8二次元空間の点(高校で習うもの) 三次元空間の点(高校で習うもの)全く同様に、次元空間の点
【スライドのURL】 https://bit.ly/3hUxgW816数学の準備 =97二次元空間の点(高校で習うもの) =65➢ 二次元の場合、点 と点 の距離は、三平方の定理から求まる➢ これを次のように表記する: − = 9 − 6 2 + 7 − 5 2= 13➢ 意味: − 記号の定義:ベクトル = ベクトルの長さなので、 − = − の長さ
【スライドのURL】 https://bit.ly/3hUxgW817数学の準備 =9108➢ 三次元の場合も、同様に、点と点の距離が求まる: − = 3 − 9 2 + 21 − 10 2 + 12 − 8 2= 173三軸目三次元空間の点(高校で習うもの) =32112
【スライドのURL】 https://bit.ly/3hUxgW818数学の準備➢ 次元の場合も、同様に、点と点の距離が求まる: − = 73 − 60 2 + 2 − 41 2 + ⋯ + 8 − 13 2= 102 7軸目全く同様に、次元空間の点 =732⋮8 =6041⋮13➢ 多次元ベクトルは、2次元や3次元のベクトルと同様に扱える➢ 距離も、同様に計算できる
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索191. 数学の準備2. 画像の表現3. 真面目に探索(低速・高精度)4. ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW820画像の表現?➢ 画像をコンピュータが処理できるようにしたい➢ 画像をなんらかの数値(ベクトル)として表現したい➢ 似ている画像は、似ているベクトルになってほしい➢ 紹介:色ヒストグラム、深層特徴量
【スライドのURL】 https://bit.ly/3hUxgW866 221 32 123 78 1146 32 52 32 99 9337 142 43 11 68 1311 23 54 3 23 22124 56 33 27 213 33232 28 4 32 111 4554 77 18 123 7 4346 32 52 32 99 9837 142 43 11 68 2311 23 54 3 23 11124 56 33 27 213 35232 28 4 32 111 11132 43 11 54 24 2346 32 52 32 99 1337 142 43 11 68 211 23 54 3 23 131124 56 33 27 213 43232 28 4 32 111 2221画像の表現:色ヒストグラム出現回数画素の値100 200出現回数画素の値100 200出現回数画素の値100 200色に着目➢ 画像の各画素は、赤・青・緑の3つの数値➢ コンピュータ上では、単なる整数で表現ヒストグラム化➢ 画素値の出現回数
【スライドのURL】 https://bit.ly/3hUxgW822画像の表現:色ヒストグラム出現回数画素の値100 200出現回数画素の値100 200出現回数画素の値100 200➢ 合体させると、この場合12個の数値に➢ 12次元のベクトルだと解釈➢ 画像を表現する特徴ベクトルが出来た
【スライドのURL】 https://bit.ly/3hUxgW823画像の表現:色ヒストグラム =15179⋮14画像:12次元の特徴ベクトル:特徴抽出12軸目➢ 画像をから抽出した特徴ベクトルをとする➢ は、の本質的な性質を表すと期待する➢ はベクトルなので、様々な計算が可能
【スライドのURL】 https://bit.ly/3hUxgW824画像の表現:色ヒストグラム①データベース中の画像から特徴ベクトルを抽出し、保存しておく
【スライドのURL】 https://bit.ly/3hUxgW825画像の表現:色ヒストグラム②クエリ画像からも特徴量を抽出する①データベース中の画像から特徴ベクトルを抽出し、保存しておく
【スライドのURL】 https://bit.ly/3hUxgW826画像の表現:色ヒストグラム②クエリ画像からも特徴量を抽出する③各ベクトルとの距離を求める①データベース中の画像から特徴ベクトルを抽出し、保存しておく
【スライドのURL】 https://bit.ly/3hUxgW827画像の表現:色ヒストグラム②クエリ画像からも特徴量を抽出する③各ベクトルとの距離を求める④一番近いものが、一番色が似ている画像色ヒストグラムによる画像検索の実現https://emojipedia.org/grinning-face-with-smiling-eyes/①データベース中の画像から特徴ベクトルを抽出し、保存しておく
【スライドのURL】 https://bit.ly/3hUxgW828画像の表現:色ヒストグラムしかし、色だけだと、うまくいかないかも猫ではないが、色が似てる猫だが、色は似ていない
【スライドのURL】 https://bit.ly/3hUxgW829画像の表現:深層特徴量 =611239⋮14画像:例:128次元の深層特徴量 128軸目➢ 実際は、機械学習という技術を用いる➢ 猫画像同士が近くなってくれるような、深層特徴量をデザインする機械学習
【スライドのURL】 https://bit.ly/3hUxgW830画像の表現:深層特徴量➢ 猫なら近く➢ 猫以外は遠く
【スライドのURL】 https://bit.ly/3hUxgW831画像の表現➢ 画像をコンピュータが処理できるようにしたい➢ 画像をなんらかの数値(ベクトル)として表現➢ 似ている画像は、似ているベクトルに➢ 例:色ヒストグラム、深層特徴量 =611239⋮14
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索321. 数学の準備2. 画像の表現3. 真面目に探索(低速・高精度)4. ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW833真面目に探索(低速・高精度)
【スライドのURL】 https://bit.ly/3hUxgW834真面目に探索(低速・高精度)81325
【スライドのURL】 https://bit.ly/3hUxgW835真面目に探索(低速・高精度)81325探索:クエリベクトルと、データベースベクトル1, 2, … を比べる
【スライドのURL】 https://bit.ly/3hUxgW836真面目に探索(低速・高精度)探索問題の定義 =6139⋮141=326⋮72=1132⋮99=54⋮72… 比べる➢ 次元のクエリベクトル、および本のデータベースベクトル1, … , がある➢ と各を比べ、一番近いものを選ぶ➢ 現実の探索問題を考える上で重要な点はなんだろう?➢ 速度と精度➢ まずは厳密に探索する方法を紹介(高精度だが低速)➢ 計算の速度とは何だろう? ➡計算の量で見積もる
【スライドのURL】 https://bit.ly/3hUxgW837真面目に探索(低速・高精度)探索問題の定義 =6139⋮141=326⋮72=1132⋮99=54⋮72… 比べる➢ 次元のクエリベクトル、および本のデータベースベクトル1, … , がある➢ と各を比べ、一番近いものを選ぶと1の距離の二乗= − 12= 61 − 3 2 + 39 − 26 2 + ⋯ + 14 − 7 2値の大小だけが重要なので、二乗して考える。すると、ルートをとらなくていい
【スライドのURL】 https://bit.ly/3hUxgW838真面目に探索(低速・高精度)と1の距離の二乗= − 12= 61 − 3 2 + 39 − 26 2 + ⋯ + 14 − 7 2値の大小だけが重要なので、二乗して考える。すると、ルートをとらなくていい引き算一回掛け算一回足し算一回回の引き算 + 回の掛け算 + − 1 回の足し算= 3 − 1回の計算≃ 3回の計算四則演算は同程度の速度と仮定し、「計算」とまとめるたとえば計算は1ナノ秒は十分に大きいとし、1は無視探索問題の定義 =6139⋮141=326⋮72=1132⋮99=54⋮72… 比べる➢ 次元のクエリベクトル、および本のデータベースベクトル1, … , がある➢ と各を比べ、一番近いものを選ぶ
【スライドのURL】 https://bit.ly/3hUxgW839真面目に探索(低速・高精度) − 12を求める ➡ 3回の計算➢ これを1, … , に対し回行う ➡ 合計で3回の計算➢ 「一番近いものを選ぶ」は、個の「距離の値」を一つ一つ眺めていけばいい。これも「回の計算」とする➢ 合計で3 + = 3 + 1 ≃ 3回の計算は十分に大きいとし、1は無視探索問題の定義 =6139⋮141=326⋮72=1132⋮99=54⋮72… 比べる➢ 次元のクエリベクトル、および本のデータベースベクトル1, … , がある➢ と各を比べ、一番近いものを選ぶ
【スライドのURL】 https://bit.ly/3hUxgW840真面目に探索(低速・高精度)探索問題の計算コスト ➡ 3回の計算➢ 3も2もと大して変わらないとして、定数倍は無視するという大胆な近似を行う➢ 最終的に、次元本のベクトルたちに対する探索の計算のコスト➡ 回の計算探索問題の定義 =6139⋮141=326⋮72=1132⋮99=54⋮72… 比べる➢ 次元のクエリベクトル、および本のデータベースベクトル1, … , がある➢ と各を比べ、一番近いものを選ぶ
【スライドのURL】 https://bit.ly/3hUxgW841真面目に探索(低速・高精度)真面目に探索のまとめ:➢ 精度:厳密➢ 速度:回の計算例:➢ 計算に1ナノ秒(10−9秒)かかるなら、ざっくりナノ秒(10−9秒)➢ = 1000, = 104の場合、10ミリ秒探索問題の定義 =6139⋮141=326⋮72=1132⋮99=54⋮72… 比べる➢ 次元のクエリベクトル、および本のデータベースベクトル1, … , がある➢ と各を比べ、一番近いものを選ぶ速いの?遅いの?➢ が10倍になると、速度も10倍➢ あまりうれしくない
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索421. 数学の準備2. 画像の表現3. 真面目に探索(低速・高精度)4. ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW843ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW844ちょっとさぼって探索(高速・低精度) 本全てのベクトルと比べると大変➢ そもそも遠いベクトルは外れ➢ これらとの距離計算は無駄➢ 計算をサボれないか?
【スライドのURL】 https://bit.ly/3hUxgW845ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW846ちょっとさぼって探索(高速・低精度)代表代表代表①ベクトルを事前に個のグループに分けておくここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW847ちょっとさぼって探索(高速・低精度)代表代表代表②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ①ベクトルを事前に個のグループに分けておくここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW848ちょっとさぼって探索(高速・低精度)代表代表代表①ベクトルを事前に個のグループに分けておく②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ③選ばれたグループ内のみ探索するここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW849ちょっとさぼって探索(高速・低精度)代表代表代表①ベクトルを事前に個のグループに分けておく➢ 事前処理なので、気にしない③選ばれたグループ内のみ探索する ②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW850ちょっとさぼって探索(高速・低精度)代表代表代表①ベクトルを事前に個のグループに分けておく➢ 事前処理なので、気にしない②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ➢ 本のベクトルとの探索のコストは「回の計算」だった➢ ←とすることで、「回の計算」だと算出できる③選ばれたグループ内のみ探索するここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW851ちょっとさぼって探索(高速・低精度)代表代表代表①ベクトルを事前に個のグループに分けておく➢ 事前処理なので、気にしない②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ➢ 本のベクトルとの探索のコストは「回の計算」だった➢ ←とすることで、「回の計算」だと算出できる③選ばれたグループ内のみ探索する➢ 一つのグループ内のベクトル本数の平均は/➢ ←/とすることで「 / 回の計算」だと算出できるここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW852ちょっとさぼって探索(高速・低精度)代表代表代表①ベクトルを事前に個のグループに分けておく➢ 事前処理なので、気にしない②クエリと本の代表ベクトルを比較し、一番近いグループを選ぶ➢ 本のベクトルとの探索のコストは「回の計算」だった➢ ←とすることで、「回の計算」だと算出できる③選ばれたグループ内のみ探索する➢ 一つのグループ内のベクトル本数の平均は/➢ ←/とすることで「 / 回の計算」だと算出できる結論: + 回の計算ここでは = 3
【スライドのURL】 https://bit.ly/3hUxgW853ちょっとさぼって探索(高速・低精度) + 回の計算 + = 2 回の計算 回の計算は自由に決められるパラメータ = としてみると「定数倍は無視」ルールなぜ = ?➢ = + とすると、 を最小にするなので➢ すなわち、 = 0を解くと、 =
【スライドのURL】 https://bit.ly/3hUxgW854ちょっとさぼって探索(高速・低精度)代表代表代表失敗する場合もある別のグループのベクトルのほうが近い
【スライドのURL】 https://bit.ly/3hUxgW855探索のまとめコストの実例 ( = 128)探索方式 精度 計算コスト = 100 = 10000 = 1000000まじめに探索 高い 回 12800 1280000 128000000さぼって探索 低い 回 1280 12800 128000➢ 回は回よりだいぶ少ない 例: lim→∞ = 0➢ つまり、だいぶ速い➢ 探索問題は数学を使ってモデリング出来る。高校数学はその基礎になっている➢ 実際の画像検索システムでは、上のように、各方式のメリットデメリットを考慮にいれて、方式を選択する
【スライドのURL】 https://bit.ly/3hUxgW8似てるもの 発見!高校数学で理解する画像検索561. 数学の準備2. 画像の表現3. 真面目に探索(低速・高精度)4. ちょっとさぼって探索(高速・低精度)
【スライドのURL】 https://bit.ly/3hUxgW857話さなかった重要トピック➢ 精度が高い、低い、とはどういうことか?✓ [email protected]といった指標で数値的に計測する➢ メモリ消費量✓ 探索は、本当は、「精度・速度・メモリ消費量」のトレードオフ✓ 「精度100%かつ爆速。ただしメモリを無限に使う」という手法が作れてしまう➢ 深層特徴量って結局何?✓ 「ネコ1.jpgとネコ2.jpg」は似てます、といった情報をコンピュータにたくさん与えると、コンピュータが自動で学習。「距離学習」という機械学習理論✓ 参考:内田祐介、「モダンな深層距離学習 (deep metric learning) 手法: SphereFace, CosFace,ArcFace」、Qiita、2019https://qiita.com/yu4u/items/078054dfb5592cbb80cc➢ グループ分けってどうするの?✓ よく使われるのはk-meansクラスタリングという古典的な手法✓ 高校数学で理解できる✓ 調べてみよう!
【スライドのURL】 https://bit.ly/3hUxgW858大学で学ぶ学問との接続半加算器➢ 計算量理論「回の計算」といった考察は、計算量の理論として学ぶアルゴリズムの性能を数式で記述・比較➢ データ構造✓ 実際の問題では、ハッシュテーブルやツリーといった高度なデータ構造を扱う✓ 今日の「さぼって探索」は、実は転置インデクスというデータ構造➢ アーキテクチャ✓ 「足し算」と「引き算」は大体同じ時間がかかる、とあったが、そもそも「足し算」とは?✓ 突き詰めると、コンピュータ上の足し算は回路で実現https://ja.wikipedia.org/wiki/データ構造https://ja.wikipedia.org/wiki/加算器バイナリツリー工学部電子情報・電気電子では、このような様々なレイヤーを幅広く学びます!
【スライドのURL】 https://bit.ly/3hUxgW859参考資料➢ 画像処理に興味を持ったら✓ 次の教科書が参考になります「ディジタル画像処理[改訂第二版]」、画像情報教育振興協会、2020https://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年の歩み」、[email protected] #11, 2020:https://www.slideshare.net/yusukeshibui/mercari-image-search-1st-anniversary