Skip to content

Latest commit

 

History

History
240 lines (154 loc) · 8.08 KB

2019-08-trace.moe.md

File metadata and controls

240 lines (154 loc) · 8.08 KB

追蹤動畫截圖出處的搜尋引擎

#CBIR #solr #BigData #ComputerGraphics

trace.moe 作者 @soruly


起因

以圖搜尋的搜索引擎:

  • Google Image - 只找到著名的畫面
  • TinEye - 沒有涵蓋動漫
  • iqdb - 只針對靜態畫作(如 Pixiv),沒有索引動畫
  • SauceNAO - 涵蓋 IQDB 及遊戲 CG,當年還沒有加入動畫 (現在有了

示範

https://trace.moe

55%

搜尋結果在右邊,顯示動畫名稱、集數、出現時間,下邊的動畫詳細資料是由anilist.co提供

運作原理

trace.moe 是一種基於內容的圖像搜尋引擎

跟 AI, Machine Learning 完全沒有關係

普遍的圖像描述方式:
  • Color Layout, Edge Histogram, Opponent Histogram, ScalableColor, 等等.
trace.moe 使用 Color Layout 的主因:
  • 硬體需求比較低
  • 對於動畫來說,顏色是一個顯著特徵,色調普遍比較鮮明
  • Color Layout 能刪除更多的重覆的畫面,減少資料庫大小

Color Layout 概念

  • 是一個既定標準 MPEG-7 standard
  • 原圖 -> 分成 8x8 格 -> 計算每格顏色平均值 -> 換算成 YCbCr 色域 -> DCT 變換 -> 量化 (quantize) -> Zigzag 排列成線性
  • 55% 55%
  • 提取出來的圖像特徵 (image hash): FQYLBAQRFgoYFBANEBIQDw0QCw0PDxAeEhEQDhAfDQ8PEA8=
  • Cryptographic hash (如 MD5, SHA) => 對原資料改動很敏感
  • Image Hash (如 Color layout) => 對原資料改動有抵抗性

利用 LIRE 作影片分析

LIRE 本身已經實現了多種 Image Hash,可以批量分析圖檔

原影片 -> 用ffmpeg以 24 幀提取畫面 -> 用LIRE計算圖像特徵 -> 除去重覆的 Hash -> 補上時間軸 -> 加載到 solr 資料庫

100%

圖像相似度 = 兩個HASH的相似度 (1 - Edit Distance)


對比海量圖像特徵

80%


Locality Sensitive Hashing

50%


盡用所有 CPU

  • liresolr 是單線程的
  • 把 1 個大資料庫分成 32 小份 (solr cores)
  • 把 hash 寫入當時體積最小的,讓每小份的大小相若
  • 32 個資料庫仍然運行在在同一台伺服器

記憶體管理


其他優化方法

  • 更多 CPU, 更多 RAM!!
  • 降低搜尋準確度 (cutoff)
  • 用 NVMe SSD 取代 SATA SSD 30% 34%
現役的 2 x E5-2696v4 (44C88T @ 3.7GHz), 512GB RAM

自動幀測及裁剪黑邊

有黑邊前的相似度是 89.4%, 刪除黑邊後的相似度是 96.3%

影片預覽

若要取得這搜尋結果的預覽 Shelter, episode 1, timecode: 00:00:51.83

固定前 N 秒後 M 秒 從那一個鏡頭開始到完結
00:50.93 (-0.9) to 00:53.93 (+2.1) 00:49.22 to 00:51.30 (dynamic)

固定前後幾秒的做法,使用者能用下一個鏡頭的畫面再搜尋,進而看到更多的預覽部份

自動幀測及裁輯一個鏡頭

  • 把每幀所有像素的數值加起來,變成一個數字
  • 從中間開始找向前後找,直到數值突變超過某(固定)閾值
  • 準確度可達 87%(不能再高了
  • 目前只用在 Telegram Bot,沒用在 Web

系統概觀

120%


所有 trace.moe 相關的項目都是開源的

API 文檔:

https://soruly.github.io/trace.moe


未來計劃

  • 自動索引 Youtube 上的影片
  • 移除重覆的影片
  • 支持其他 Image Hash , 例如 FCTH (Fuzzy Color and Texture Histogram)
  • Cloud Native(?)

鳴謝


官方頻道/群組

聯繫我