留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

我們未來電腦視覺系統的技術和模型是在我們公司的不同項目(郵件、雲端、搜尋)中逐步創建和改進的。 它們像優質奶酪或白蘭地一樣成熟。 有一天,我們意識到我們的神經網路在識別方面表現出了出色的效果,因此我們決定將它們組合成一個 B2B 產品 - Vision - 我們現在自己使用該產品並提供給您使用。

今天,我們在 Mail.Ru Cloud Solutions 平台上的電腦視覺技術正在成功運行並解決非常複雜的實際問題。 它基於許多神經網絡,這些神經網路在我們的資料集上進行訓練並專門解決應用問題。 所有服務都在我們的伺服器設施上運行。 您可以將公共 Vision API 整合到您的應用程式中,透過它可以使用該服務的所有功能。 API 速度很快 - 由於伺服器 GPU,我們網路內的平均回應時間為 100 毫秒。

去找貓吧,裡面有詳細的故事和許多Vision的作品範例。

我們自己使用上述臉部辨識技術的服務範例是 最新活動。 它的組件之一是 Vision 照相架,我們在各種會議上安裝它。 如果您走近這樣的照相亭,用內置相機拍照並輸入您的電子郵件,系統會立即在一系列照片中找到會議工作人員攝影師拍攝到的您的照片,並且如果需要,將通過電子郵件將找到的照片發送給您。 我們不是在談論舞台肖像照——即使在一群遊客的背景下,視覺也能認出你。 當然,被識別的並不是照相亭本身,這些只是漂亮展位上的平板電腦,它們只是用內置攝像頭為客人拍照並將信息傳輸到服務器,所有識別魔法都在服務器上發生。 我們不只一次看到,即使對於影像辨識專家來說,該技術的有效性也是令人驚訝的。 下面我們就講一些例子。

1.我們的人臉辨識模型

1.1. 神經網路和處理速度

為了進行識別,我們使用了ResNet 101神經網路模型的修改版,最後的平均池化被全連接層取代,類似於ArcFace中的做法。 然而,向量表示的大小是 128,而不是 512。我們的訓練集包含 10 人的約 273 萬張照片。

由於精心挑選的伺服器配置架構和 GPU 運算,該模型運行速度非常快。 從我們內部網路上的 API 接收回應需要 100 毫秒 - 這包括臉部偵測(偵測照片中的臉部)、識別並傳回 API 回應中的 PersonID。 對於大量傳入資料(照片和影片),將資料傳輸到服務並接收回應將需要更多時間。

1.2. 評估模型的有效性

但確定神經網路的效率是一項非常模糊的任務。 他們的工作品質取決於模型所訓練的資料集以及模型是否針對特定資料進行了最佳化。

我們開始使用流行的 LFW 驗證測試來評估我們模型的準確性,但它太小而且太簡單。 達到99,8%的準確率後就不再有用了。 有一個很好的評估識別模型的競賽- Megaface,我們逐漸達到了82% 的第一名。Megaface 測試包含一百萬張照片- 幹擾因素- 該模型應該能夠很好地區分Facescrub 中的數千張名人照片來自乾擾物的資料集。 然而,在清除了 Megaface 測試中的錯誤後,我們發現透過清除後的版本,我們達到了 1% 的 98 級準確率(名人的照片通常非常具體)。 因此,他們創建了一個單獨的識別測試,類似於 Megaface,但使用的是「普通」人的照片。 然後我們提高了數據集的識別準確性並取得了遙遙領先。 此外,我們使用由數千張照片組成的聚類品質測試; 它模擬用戶雲端中的臉部標記。 在這種情況下,集群是由相似個體組成的群組,每個可識別的人對應一組。 我們檢查了真實小組的工作品質(正確)。

當然,任何模型都會出現識別錯誤。 但這種情況通常可以透過針對特定條件微調閾值來解決(對於所有會議,我們使用相同的閾值,但是,例如,對於存取控制系統,我們必須大大增加閾值,以減少誤報)。 我們的 Vision 照相亭正確辨識了絕大多數與會者。 有時有人會看著裁剪後的預覽並說:“你的系統犯了一個錯誤,不是我幹的。” 然後我們把照片完整地打開,原來照片裡確實有這個訪客,只是我們拍的不是他,而是別人,這個人只是剛好在模糊區域的背景裡。 此外,即使臉部的一部分不可見,或者人站在側面,甚至半轉身,神經網路通常也能正確辨識。 即使臉部處於光學變形區域(例如使用廣角鏡頭拍攝時),該系統也可以識別人。

1.3. 困難情況下的測試範例

以下是我們的神經網路如何運作的範例。 照片被提交到輸入,她必須使用 PersonID(一個人的唯一識別碼)對其進行標記。 如果兩張或多張圖像具有相同的 ID,那麼根據模型,這些照片描繪的是同一個人。

讓我們立即註意到,在測試時,我們可以存取各種參數和模型閾值,我們可以配置它們來實現特定結果。 公共 API 經過最佳化,可在常見情況下實現最大準確度。

我們先從最簡單的開始,前置人臉辨識。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

嗯,那太容易了。 讓我們把任務複雜化,加上鬍子和幾年。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

有人會說這也不是太困難,因為在這兩種情況下,整個面部都是可見的,並且演算法可以使用有關面部的大量資訊。 好吧,讓我們來看看湯姆哈迪的個人資料。 這個問題要複雜得多,我們花了很多精力才成功解決它,同時保持較低的錯誤率:我們選擇了訓練集,思考了神經網路的架構,磨練了損失函數並改進了預處理照片。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

讓我們給他戴上頭飾:

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

順便說一句,這是一個特別困難情況的例子,因為臉部被嚴重遮擋,並且在底部照片中還有一個很深的陰影隱藏了眼睛。 在現實生活中,人們常藉助墨鏡來改變自己的外表。 讓我們對湯姆做同樣的事情。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

好吧,讓我們嘗試加入不同年齡的照片,這次我們將嘗試不同的演員。 讓我們舉一個更複雜的例子,其中與年齡相關的變化尤其明顯。 這種情況並非牽強;當您需要將護照上的照片與持證人的臉部進行比較時,這種情況經常發生。 畢竟,第一張照片是在主人 20 歲的時候添加到護照上的,而到了 45 歲,一個人就會發生巨大的變化:

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

你認為不可能任務的主要專家隨著年齡的增長沒有太大變化嗎? 我想即使有幾個人也會把上面和下面的照片組合起來,這個男孩這些年來變化太大了。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

神經網路更頻繁地遇到外觀變化。 例如,有時女性可以藉助化妝品大大改變自己的形象:

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

現在讓我們把任務變得更加複雜:假設臉部的不同部分被不同的照片覆蓋。 在這種情況下,演算法無法比較整個樣本。 然而,Vision 很好地處理了這種情況。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

順便說一句,一張照片中可以有很多面孔;例如,一張大廳的一般照片可以容納 100 多人。 對於神經網路來說,這是一個困難的情況,因為許多面孔可能會受到不同的照明,有些面孔會失去焦點。 但是,如果拍攝的照片具有足夠的解析度和品質(覆蓋臉部的每方格至少有 75 個像素),Vision 將能夠偵測和識別它。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

報導文學照片和監視器影像的獨特之處在於,人們常常因為失焦或當時正在移動而變得模糊:

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

此外,影像之間的照明強度可能會有很大差異。 這也常常成為絆腳石;許多演算法很難正確處理太暗和太亮的影像,更不用說精確地匹配它們了。 讓我提醒您,要實現此結果,您需要以某種方式配置閾值;此功能尚未公開。 我們為所有客戶端使用相同的神經網路;它具有適合大多數實際任務的閾值。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

我們最近推出了該模型的新版本,可以高精度識別亞洲面孔。 這曾經是一個大問題,甚至被稱為「機器學習」(或「神經網路」)種族主義。 歐洲和美國的神經網路對白種人臉的辨識效果很好,但對於蒙古人和黑人的臉,情況就糟糕得多。 也許,在中國,情況恰恰相反。 這都是關於反映特定國家的主要人群類型的訓練資料集。 然而,情況正在改變;今天這個問題不再那麼嚴重。 不同種族的人視力都沒有問題。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

臉部辨識只是我們技術的眾多應用之一;視覺可以透過訓練來辨識任何東西。 例如,車牌,包括演算法難以處理的條件:銳角、骯髒且難以讀取的車牌。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

2. 實際用例

2.1. 實體門禁:兩人使用同一張通行證時

在 Vision 的幫助下,您可以實施記錄員工到達和離開的系統。 基於電子通行證的傳統系統有明顯的缺點,例如,一張證卡可以讓兩個人通行。 如果門禁系統(ACS)輔以Vision,它將如實記錄誰來/離開以及時間。

2.2. 時間追蹤

此 Vision 用例與前一個用例密切相關。 如果您使用我們的臉部辨識服務來補充門禁系統,它將不僅能夠偵測門禁違規行為,還能夠登記員工在建築物或設施中的實際存在。 換句話說,Vision 將幫助您誠實地考慮誰上班、什麼時間下班、誰​​乾脆曠工,即使他的同事在上級面前替他頂薪。

2.3. 視訊分析:人員追蹤和安全

透過使用 Vision 追蹤人員,您可以準確評估購物區、火車站、通道、街道和許多其他公共場所的真實流量。 我們的追蹤對於控制存取(例如倉庫或其他重要辦公室)也有很大幫助。 當然,追蹤人和臉部有助於解決安全問題。 發現有人從你的商店偷東西? 將 Vision 返回的他的 PersonID 添加到您的視訊分析軟體的黑名單中,下次如果再次出現該類型,系統將立即向保全發出警報。

2.4. 交易中

零售和各種服務企業對隊列識別感興趣。 借助Vision,您可以識別這不是隨機的人群,而是隊列,並確定其長度。 然後系統會通知負責人排隊情況,以便他們了解情況:要么是訪客大量湧入,需要呼叫更多工作人員,要么是有人偷懶。

另一個有趣的任務是將大廳裡的公司員工與訪客分開。 通常,系統經過訓練可以區分穿著特定衣服(服裝規範)或具有某些顯著特徵(品牌圍巾、胸前徽章等)的物體。 這有助於更準確地評估出勤率(這樣員工就不會僅僅因為大廳裡的人數而「誇大」他們的統計數據)。

使用臉部識別,您還可以評估您的受眾:訪客的忠誠度如何,即有多少人返回您的場所以及頻率。 計算每月有多少獨立訪客來找您。 為了優化吸引和保留成本,您還可以根據一周中的某一天甚至一天中的不同時間找出流量的變化。

特許經營商和連鎖公司可以根據各種零售店的品牌品質照片進行評估:是否存在標誌、標誌、海報、橫幅等。

2.5. 搭乘交通工具

使用視訊分析確保安全的另一個例子是識別機場或火車站大廳中的廢棄物品。 視覺可以被訓練來識別數百種物體:家具、袋子、手提箱、雨傘、各種類型的衣服、瓶子等等。 如果您的視訊分析系統偵測到無主物件並使用 Vision 識別它,它會向安全服務發送訊號。 類似的任務與自動檢測公共場所的異常情況有關:有人感覺不舒服,或者有人在錯誤的地方吸煙,或者有人跌倒在鐵軌上,等等 - 所有這些模式都可以被視頻分析系統識別通過視覺 API。

2.6。 文件流程

我們目前正在開發的 Vision 的另一個有趣的未來應用是文件識別及其自動解析到資料庫中。 您可以掃描文件並透過安全通道自動發送它們,而不是手動輸入(或更糟的是輸入)無休止的系列、數字、發行日期、帳號、銀行詳細資訊、出生日期和地點以及許多其他正式資料。到雲端的API,系統將動態識別這些文件、解析它們並傳回包含所需格式的資料的回應,以便自動輸入資料庫。 如今,Vision 已經知道如何對文件(包括 PDF)進行分類 - 區分護照、SNILS、TIN、出生證明、結婚證書等。

當然,神經網路無法立即處理所有這些情況。 在每種情況下,都會為特定客戶建立新模型,考慮許多因素、細微差別和要求,選擇資料集,並進行培訓、測試和配置迭代。

3. API操作方案

Vision為使用者提供的「入口」是REST API。 它可以接收來自網路攝影機的照片、視訊檔案和廣播(RTSP 串流)作為輸入。

要使用 Vision,您需要 註冊 在 Mail.ru 雲端解決方案服務中並接收存取權杖(client_id + client_secret)。 使用 OAuth 協定執行使用者身份驗證。 POST 請求內文中的來源資料將會傳送到 API。 作為回應,客戶端從 API 接收 JSON 格式的識別結果,並且回應是結構化的:它包含有關找到的物件及其座標的資訊。

留著鬍子、戴墨鏡和側面:電腦視覺的困難狀況

答案範例

{
   "status":200,
   "body":{
      "objects":[
         {
            "status":0,
            "name":"file_0"
         },
         {
            "status":0,
            "name":"file_2",
            "persons":[
               {
                  "tag":"person9"
                  "coord":[149,60,234,181],
                  "confidence":0.9999,
                  "awesomeness":0.45
               },
               {
                  "tag":"person10"
                  "coord":[159,70,224,171],
                  "confidence":0.9998,
                  "awesomeness":0.32
               }
            ]
         }

         {
            "status":0,
            "name":"file_3",
            "persons":[
               {
               "tag":"person11",
               "coord":[157,60,232,111],
               "aliases":["person12", "person13"]
               "confidence":0.9998,
               "awesomeness":0.32
               }
            ]
         },
         {
            "status":0,
            "name":"file_4",
            "persons":[
               {
               "tag":"undefined"
               "coord":[147,50,222,121],
               "confidence":0.9997,
               "awesomeness":0.26
               }
            ]
         }
      ],
      "aliases_changed":false
   },
   "htmlencoded":false,
   "last_modified":0
}

答案包含一個有趣的參數awesomeness——這是照片中臉部的條件“酷度”,借助它,我們可以從序列中選擇臉部的最佳鏡頭。 我們訓練了一個神經網路來預測一張照片在社群網路上被喜歡的可能性。 照片的品質越好,臉上的笑容越多,就越令人驚嘆。

API Vision 使用一個稱為空間的概念。 這是一個用於建立不同群組面孔的工具。 空間的例子有黑白名單、訪客名單、員工名單、客戶名單等。對於Vision中的每個令牌,您最多可以創建10個空間,每個空間最多可以有50萬個PersonID,即最多500萬個每個令牌。 此外,每個帳戶的代幣數量不受限制。

目前該 API 支援以下檢測和識別方法:

  • 辨識/設定 - 臉部偵測和辨識。 自動為每個唯一的人員指派一個 PersonID,傳回找到的人員的 PersonID 和座標。
  • 刪除 - 從人員資料庫中刪除特定的 PersonID。
  • 截斷 - 清除 PersonID 中的整個空間,如果它被用作測試空間並且您需要重置資料庫以進行生產,則非常有用。
  • Detect - 偵測物件、場景、車牌、地標、佇列等。傳回找到的物件的類別及其座標
  • 檢測文件 - 偵測俄羅斯聯邦的特定類型文件(區分護照、SNILS、納稅識別號碼等)。

我們也將很快完成OCR方法的工作,確定性別、年齡和情緒,以及解決商品陳列問題,即自動控製商店中商品的陳列。 您可以在這裡找到完整的 API 文件: https://mcs.mail.ru/help/vision-api

4.Заключение

現在,透過公共API,您可以存取照片和影片中的臉部辨識;支援識別各種物體、車牌、地標、文件和整個場景。 應用場景——大海。 來吧,測試我們的服務,為其設定最棘手的任務。 前 5000 筆交易免費。 也許它將成為您專案的「缺失要素」。

註冊並連接後,您可以立即存取 API。 願景。 所有 Habra 用戶都會收到額外交易的促銷代碼。 請寫信給我您註冊帳戶時使用的電子郵件地址!

來源: www.habr.com

添加評論