在 VSCO中,我們為您構建了個性化的創意工具、多種功能空間以及社交網絡的鏈接。除了公開點贊、發表評論及查看粉絲數量等功能外,我們的應用還為用戶提供圖像視頻的創建和編輯、發掘新技巧和新創意,并能夠接入充滿活力的全球社區。
我們使用機器學習來提供個性化定制,并為每位用戶的創意流程提供指導。VSCO 為調整圖片效果而提供了一系列多達 160 種預設,甚至還支持膠片相機的模擬圖像。
未應用任何濾鏡的建筑物照片。Sarah Hollander 所攝圖像(左)。應用 AU5 預設后的建筑物照片(右)。
但在我們的研究中發現,這一系列的預設會讓用戶感到手足無措。因為太多的選擇往往會導致用戶堅持使用自己所熟悉和偏愛的少數預設,而不會去嘗試新的預設。
解決方案
我們的挑戰是需要為用戶在編輯圖片進行創作留有余地的同時,同時給用戶提供可靠的建議并且鼓勵他們去自行探索。我們的圖像團隊為了滿足不同種類的圖形而精心提供了多個預設,這讓我們能夠為每張照片分別提供個性化的建議。
為解決上述問題,我們決定借助設備端機器的學習和采用深度卷積神經網絡 (CNN) 模型來為圖像提供預設建議。因為這些模型能夠理解圖像中的眾多細微差別,所以在分類上,相較于傳統的計算機視覺算法更為便捷和快速。
基于這種思路,我們開發出了“照片專用(For This Photo)”功能。該功能使用設備端的機器學習來識別所編輯的照片類型進而在策劃列表中提供相關的預設建議。“相片專用” 功能深受用戶喜愛,現已成為僅次于“All(用于顯示所有預設)”的第二大常用功能類。
“相片專用” 功能應用視頻
為了讓用戶了解該功能運作流程,我們將會逐一介紹相關步驟。用戶在使用“照片專用”功能進行視圖編輯,當加載圖像時,模型會立即啟動推理作業,并為該圖像返回一個類別。隨后,模型會將類別 ID 與緩存目錄中的 ID 進行匹配,并會返回一個與該類別相符的預設列表。之后在“照片專用”部分中將顯示六個預設選項供用戶參考,這些預設由免費預設和 VSCO 會員專屬預設組成。通過免費和付費預設的對比,為用戶提供實用參考。非會員用戶在預覽 VSCO 會員專屬預設之后,便能了解 VSCO 會員服務的價值所在。而會員所能享受的優勢在于,他們能夠通過會員服務了解可采用會員專屬預設的圖像類型。
設備端機器學習有助確保可訪問性、實現快速編輯并保護隱私
研究伊始,我們便已了解基于服務器的機器學習不適用于此功能。我們希望此功能使用設備端機器學習主要基于三大原因:設備端機器學習支持離線編輯、可實現快速編輯并能保護隱私。
首先,我們并不希望僅在會員在線時才提供此功能,因為這會限制他們的創造力。靈感可以隨處迸發:人們可能會在網絡連接受限的情況下拍攝和編輯照片,例如沙漠中央或是高山之巔。我們的用戶群中有許多人都身處美國境外,因此并非人人都能隨時訪問高速網絡。
其次,我們希望確保實現快速編輯。若我們采用云端機器學習模型并以此提供“相片專用” 功能,需要上傳用戶圖像并進行分類(這會耗費大量時間、帶寬和流量),而用戶亦需下載預設;即便網絡連接狀態良好,整個過程亦十分緩慢,如果網絡不佳,甚至都無法完成。若在設備端運行機器學習,則表示全部流程都發生在本地,運行速度快且無需網絡連接。這對于確保用戶捕捉精彩瞬間并保持創意至關重要。
第三,編輯過程不用公開。服務器端解決方案需要我們讓用戶上傳仍在編輯且未發布的照片。設備端機器學習有助于用戶在創作期間保護他們的隱私。
為什么選擇 TensorFlow
既然我們希望使用自定義模型來開展設備端機器學習,那么 TensorFlow Lite 顯然就是最佳之選。因為該框架能夠輕松提取基于服務器訓練的模型,并能使用 TFLiteConverter 將該模型轉換為可與手機兼容的格式(.tflite 格式)。
此外,我們已在服務器端機器學習生產系統中進行驗證:TensorFlow 與 TensorFlow Serving 均可成功運行。TensorFlow 庫的設計是以在生產環境中運行機器學習為首要重點,因此我們認為 TensorFlow Lite 也不例外。
我們使用 ML Kit(https://developers.google.com/ml-kit) 直接在 TensorFlow Lite 模型上運行推理,并將其無縫整合至我們的應用中。借此,我們便可將原型中的功能快速引入預生產環境。ML Kit 能夠為初始化和加載模型及對圖像運行推理提供更高級別的 API,這讓我們無需直接處理更低級別的 TensorFlow Lite C++ 庫,從而能夠大幅加快整個開發流程,并能為我們訓練模型騰出更多時間。
VSCO 機器學習堆棧概覽
在機器學習堆棧方面,我們使用 TensorFlow 來對圖像進行深度學習,并使用 Apache Spark 對行為數據進行淺層學習。
在生產環境中,我們有一個基于云端并使用 TensorFlow Serving 的實時推理流水線,該流水線負責處理每一張通過各類卷積神經網絡實時上傳至 VSCO 的圖像。之后,這些模型的推理結果會用于產品中其他功能,如“相關圖像”、“搜索”、“為您定制”和“發現”功能等的其他選項卡。對于設備端的機器學習,我們使用 TensorFlow 生態系統中適于移動端的組件(即 ML Kit 和 TensorFlow Lite)。
相關圖像
為您定制
搜索
用戶建議
我們還擁有一個基于 Spark 的推薦引擎,該引擎可使用數據存儲中不同來源的大型數據集來訓練模型,而這些來源包括圖像元數據、行為事件和關系數據。之后,我們使用這些模型的結果來服務于各種形式的個性化推薦,如用戶建議。
為支撐機器學習流水線的其他環節,我們還使用 Elasticsearch實現搜索和相關功能,使用 Apache Kafka處理基于日志的分布式數據流(此數據流亦作為所有機器學習模型的輸入),并使用 Kubernetes部署所有微服務。我們使用的語言包括 Python、C++、Go、Scala;在對設備端進行集成時,我們則使用 Java/Kotlin 和 Swift/Object-C。
設備端機器學習:“照片專用”工作原理
第一步:對圖像進行分類
為構建能夠提供“照片專用” 功能的模型,我們首先需為圖像分配一個類別,然后為該類別推薦相應的預設。下圖描繪了圖像分類過程:
對圖像進行分類
我們從公司內部專業人士所標記的圖像數據開始入手。這些專業人士均為攝影專家,能夠掌握用戶行為的第一手資料,因此他們比任何人都更加了解現今分享的內容類型以及未來的發展趨勢。他們幫助工程團隊構想出了適用于模型的多種圖像類別,其中包括藝術、肖像、活力、海岸、自然、建筑、光影、黑白等。俗話說,機器學習 90% 的工作都是在清理數據。這些步驟有助于確保我們擁有基于穩定可靠的數據來訓練模型。
在 TensorFlow 中,我們使用與專業人士一同創建的分類數據集,并基于 SqueezeNet(https://arxiv.org/abs/1602.07360)架構訓練了一個 CNN 模型。選擇此架構是因為其尺寸更小,且準確率更高。通過使用 TFLiteConverter,我們已將訓練后的模型從 TensorFlow Saved Model 格式轉換為 TensorFlow Lite (.tflite) 格式,以便在 Android 上使用。此階段中發生了基本錯誤,其中一個原因在于,我們所使用的 TFLiteConverter 版本與 ML Kit 通過 Maven 引用的 TensorFlow Lite 庫版本不相符。ML Kit 團隊幫助我們解決了以上問題,并在我們研究期間發揮了巨大作用。
在構建出可為圖像分配類別的模型后,我們就可以將該模型捆綁至應用中,然后搭配使用 ML Kit 對圖像運行xn。由于我們使用的是自定義訓練模型,因此我們采用了 ML Kit 中的 Custom Model API。為獲得更高準確率,我們決定放棄模型轉換中的量化步驟,轉而使用 ML Kit 中的浮點模型。這其中存在一些挑戰,因為 ML Kit 會默認采用量化模型。不過,我們輕而易舉就成功更改了模型初始化中的一些步驟,從而令其支持浮點模型。
第二步:推薦預設
下一項挑戰是基于圖像類別提供預設建議。我們與創建預設的內部圖像團隊進行合作,共同構想出與各類別圖像相契合的預設列表。此過程包括對分屬各類別的眾多圖像分辨進行了嚴格測試,以便我們能夠分析出每個預設對不同顏色的影響。此外,我們還擁有一個策劃目錄,其中包含了與各類別相對應的預設。
為圖像提供預設建議
隨著我們在會員服務中不斷添加新預設,這些策劃目錄亦將逐步更新。為了便于我們隨時更新這些列表,并讓用戶免于更新應用,我們已將這些目錄存儲在服務器上,并使用 API 對用戶提供服務。
該 API 是由 Go 語言編寫的微服務,支持移動客戶端定期檢查更新,從而確保擁有最新版目錄。移動客戶端可緩存此目錄,并僅在新版目錄推出時才開始獲取。然而,對于在首次嘗試此功能之前尚未連接互聯網的用戶,此方法會為其帶來“冷啟動”問題,即應用無法接入 API 并下載這些目錄。我們決定在發布應用時隨附以上目錄的默認版來解決這個問題。借此,所有用戶便能在任何網絡連接狀態下使用該功能,而這也與該功能的初始目標相契合。
結果與結論
通過“照片專用”功能,現在可以順利地使用預設進行編輯。我們認為,若會員無法從所獲的新預設中發掘價值,他們的創意實現亦將遭遇阻礙。我們不僅希望幫助更多用戶發掘新預設,還希望他們關注與所編輯的圖像最相配的預設。
我們將持續優化“照片專用”功能,根據其他圖像特征和用戶的社區行為(如關注、收藏和轉發)來提供推薦。此外,我們也希望為此類推薦提供更實用的背景信息,同時鼓勵我們的社區創作者互相能夠積極發掘與激勵。
在暢想此功能未來愿景的同時,我們也在反思。我們意識到,若沒有 TensorFlow Lite 與 ML Kit,此功能以及 VSCO 的設備端機器學習能力都將無法實現。我們樂于未來在此領域繼續投入更多的人力和物力,并利用該技術創造更多的功能。
-
圖像處理
+關注
關注
27文章
1293瀏覽量
56781 -
機器學習
+關注
關注
66文章
8422瀏覽量
132743
原文標題:為圖像提供預設建議:構建 VSCO 中的“照片專用”功能
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論