Google 開發者大會 2018 實錄 — TensorFlow篇

做者:楚豐,仝輝算法

摘要

前面兩篇文章中,閒魚做爲阿里巴巴表明,分別揭曉了「UI2CODE」及「Flutter」在2018谷歌開發者大會上的奧祕,本篇文章咱們將分享閒魚在TensorFlow領域的分享和心得。編程

在9月21日結束的Google開發者大會上,閒魚團隊做爲Google的合做夥伴參加了這次會議,不只在Flutter方面與谷歌以及國內開發者進行了深度交流,同時閒魚技術開發專家陳永新做爲本次大會的演講嘉賓,分享了閒魚基於TensorFlow Lite的端計算應用實踐。在閒魚的展臺上還展現了閒魚基於TensorFlow的黑科技:UI2Code,吸引了絡繹不絕的開發者前來圍觀。安全

gdd5.JPG

TensorFlow 趨勢

TensorFlow自2015年發佈以來,已經成爲世界上使用最普遍的機器學習框架,知足了廣大的用戶和用例需求。在此期間,TensorFlow隨着計算硬件、機器學習研究和商業部署的快速發展而獲得進步。框架

爲了反映這些快速變化,本次的谷歌開發者大會介紹了TensorFlow和lite的一些新特性,重點關注易用性。如下是TensorFlow的新特性:機器學習

1.Eager execution,動態圖機制,容許直接執行圖,將更方便調試。工具

也將會是將來TensorFlow 2.0版本的默認開啓選項。它將用戶對編程模型的指望與TensorFlow更好地結合起來,而且使TensorFlow更易於學習和應用。post

2.經過交換格式的標準化和API的一致性,支持更多平臺和語言,並改善這些組件之間的兼容性和奇偶性。學習

3.將刪除已棄用的API並減小重複數量,避免給用戶形成混淆。測試

4.TensorFlow Lite轉換工具添加post-training模型量化(post-training quantization)。ui

對於相關的機器學習模型,這能夠實現最多4倍的壓縮和3倍的執行速度提高。此外,模型主要由卷積層組成,執行速度提升10-50%的同時減小了內存和計算需求,預計大多數模型的功耗也會下降。

5.TensorFlow Lite從contribute目錄移動到主目錄,正式加入TensorFlow主工程。

TensorFlow Lite在閒魚客戶端上的應用

閒魚客戶端如何應用TensorFlow Lite

閒魚自研了一個基於TensorFlow Lite的框架,主要對三方面進行了定製:拓展性、安全性和動態化。

1.拓展性:

在拓展性方面利用TensorFlow Lite的自定義OP,將咱們所需的一些數據預處理等做爲一個自定義OP,整合到同一個模型,這樣能夠一個業務就是一個模型,可以作到業務之間保持獨立。

2. 安全性:

經過自定義的加密頭等方式,將模型進行加密,在客戶端運行該模型時,動態解析出原始模型,作到數據不落盤,最大程度保證了數據安全。

3. 動態化:

經過服務端動態下發模型和OP的方式,實現了線上更新模型和算法,極大地方便了灰度測試、算法升級等需求。

應用一:視頻封面

在視頻封面這個案例中,利用TensorFlow Lite,能夠將原先傳統算法作的事,在端上用用AI模型來完成。傳統基於規則的作法,選取視頻封面的時候,是由算法同窗設計一個基礎算法,同時再處理各類Case,最終選取一張封面。對於遺漏忘處理的狀況,則須要發版更新算法,維護成本過高。 而使用AI模型,則能夠經過動態下發模型和OP的方式隨時灰度和升級。

應用二:視頻指紋

在這個案例中,展現了一種對 TensorFlow Lite 較「另類」的用法:將它當作一個計算框架。TensorFlow Lite 自己就是一種計算流程的框架,所以,能夠利用它支持自定義OP的特性,將咱們算法的各個環節做爲一個個自定義OP,而後利用模型將這些計算環節「串聯」起來,這樣,整個TensorFlow Lite就儼然成爲了一個自然的端計算框架。這樣既能夠對單個計算環節(自定義OP)作更新,還能隨時調整整個計算流程(即調整模型)。

應用三:智能租房

最後這個案例是比較傳統的TensorFlow Lite的用法,使用了較流行的SSD模型,在租房環節,經過自能識別圖片中的傢俱(冰箱、電視等),以此自動地給用戶發佈的房屋打上標籤,不只簡化了用戶操做,還豐富了商品信息,爲後臺數據搜索推薦等提供了更有效的信息。

TensorFlow 在閒魚工程效率上的應用

UI2Code

關於UI2Code的介紹,能夠參考前面的一篇文章《Google開發者大會將揭曉哪些黑科技》

該項目展現的是從一張圖片,直接生成UI代碼的過程。該圖片能夠是設計師的視覺產出,也能夠是手機上隨便打開一個軟件而後截圖獲得。 這裏針對你們關心最多的幾個問題作一下說明:

1.「UI2Code」和微軟剛剛開源的「Sketch2Code」有什麼區別

Sketc2Code 關注的是如何快速的將設計師的靈感,變成「近似」的UI代碼,能夠理解成是給設計師用的創做工具,生成的代碼也並非爲了直接做爲線上代碼使用。

而咱們的 UI2Code 關注的是1比1像素級別的「精確」還原,目的是爲了節省開發人員重複機械的視覺還原工做,將沒有創造性的重複性工做交給機器,這樣開發人員就能夠去關注更重要的邏輯性問題。它生成的UI代碼是「接近」生產可用的,開發人員只要作一些數據綁定或者細微的調整便可。

2.「UI2Code」是如何使用TensorFlow的?

實際上該項目是一個複雜的工做流程,在流程的某些節點上,咱們使用TensorFlow來完成深度學習任務。好比,因爲輸入是一張純圖片,並沒有其它任何信息,所以,須要用深度學習來「理解」圖片內容,包括哪些是文本,哪些是圖片等等。

3.大家這個有對外提供服務嗎?是否有開源計劃?

目前該工具還只是閒魚內部使用(實際上咱們的團隊已經用它有一段時間了,上線了多個導購頁面),下半年會開始考慮開源計劃。因爲該工具裏面有部分咱們自有業務的東西,同時公司有嚴格的開源審覈和披露的流程,所以還須要一段時間,你們能夠關注咱們的公衆號:閒魚技術,到時候有了進一步的消息會第一時間在上面公佈。

gdd2.JPG

結語

本次大會閒魚做爲Google的合做夥伴,與廣大開發者分享和交流了閒魚在Flutter和TensorFlow等方向上的實踐,咱們但願同廣大開發者一塊兒,在技術的道路上,不斷探索創新,用技術推進業務。固然咱們也對人才求賢若渴,若是你也但願作一些很「酷」的事情,歡迎加入閒魚!

簡歷投遞:guicai.gxy@alibaba-inc.com

相關文章
相關標籤/搜索