我是一名來自蘇州的機器視覺開發者,從事傳統的機器視覺算法開發有 11 年了,從 2018 年開始,因為一些復雜微弱的瑕疵檢測項目遇到的傳統算法瓶頸,開始接觸到了深度學習,并選擇了使用 TensorFlow,期間也是不斷摸索前進,同時得到了很多行業大佬的指導,TensorFlow 優秀的性能和快速的模型訓練部署,上手起來感受非常舒適。
使用 TensorFlow 以后,確實提升了生產現場的檢查能力,提高了生產產品的品質和生產效率,主要的提升是 誤報警率的下降、微弱特征的識別率和檢查結果分類的精準化。
借此機會,我想總結下個人的關于 TensorFlow 在工業圖像視覺領域的應用經驗。
工業 CV 領域的深度學習應用和互聯網行業或者研發類行業,還是有一定差異的,主要在以下幾個方面:
1. 工業圖像的主要特點
工業領域,不管是 3C、半導體、面板、SMD、汽車,還是飲料食品、標簽、紡織等,不管檢測對象是表面瑕疵劃痕污染、印刷噴涂異常、組裝灌裝測量,還是讀碼和字符識別,都有一個和我們日常手機攝影頭拍攝照片不一樣的地方。那就是,工業取像使用更穩定的視覺硬件,包括工業相機、工業鏡頭和工業光源,會盡可能地打造一個穩定的成像環境,圖像的背景和目標一般在位置分布和灰度上不會有太多動態的變化,但是不排除復雜的紋理特征和復雜的輪廓邊界,而這也是深度學習最契合的應用場景。
因此,基于工業上的圖像集的特點,如果有較好推理應用的模成熟型的話,在訓練好的模型基礎上,做遷移學習,可能會有意外的好效果。
2. 負樣本嚴重不足
正常的工業生產中,良品率一般是非常高的 (>90%),因此負樣本的收集非常困難,有些品質要求嚴格的產品,可能 1 個月只會產生 10 幾個不良,這樣就對訓練集的均衡提出了挑戰。
開發者需要自主開發圖像預處理算法對樣本進行增強,不能局限于 TensorFlow 或 OpenCV 自帶的的一些傳統的圖像集樣本增強算法。有時候甚至會減少或者取消預測集和測試集,以最大限度地喂給模型訓練。
另一方面,生產現場也是允許前期一定的測試成本和評價周期,允許粗糙版本先上線,邊生產邊優化升級。
3. 深度學習如何適配老舊的系統
眾所周知,因為設備更新和維護成本非常高,工業設備的迭代速度是很低的,設備穩定性很好。
這也造成一個問題,目前的工業領域的 PC 系統大多老舊,雖然是很穩定的工控機,抗擊惡劣環境和連續工業性能很強,但 PC 配置大多較低,系統版本也不高。經常會遇到 10 年前的雙核處理器,搭配 win2000 操作系統,這也給深度學習的部署應用提出了一些難題。
一般的解決方案是通過在設備外部搭建深度學習服務器,和產線設備組成內網文件共享和實時通訊,實時地讀取設備內生成的圖像進行推理,并將推理結果通過網絡反饋設備。
4. 模型部署推理如何和現有程序集成
工業上使用的檢查程序大多數是基于 .NET 或者 C++,和較流行的 Python 不同,而且開發者也無法再切換原有程序的語言,因為涉及到 PC 內很多運動控制、各種板卡和通訊交互等外部依賴的商業類庫,更換語言的成本很高,也幾乎不可能完成。
目前一般 2 種方式對應:
通過 post 通訊,Python上訓練和部署,并通過 Flask 服務和原程序通訊交互;
或者采用 C++ 版本或者 .NET 版本支持 GPU 的 TensorFlow 擴展,直接集成到現在程序中,進行訓練和推理,實時內存中共享圖像變量和結果。
個人建議采用第 2 種方式,開發起來更快高效。
5. 模型不需要前沿 需要穩定高效
工業上的算法應用一般略微落后于前沿技術,以穩定高效為主。
如圖像處理方面,一般還是使用一些傳統的經典的算法,以深度學習做圖像分類為例,簡單的項目使用 LeNet 和 AlexNet 網絡就足夠,復雜的項目一般使用到 VGG Net 就可以。
但也有部分較前沿的技術應用,比如超分算法,對圖像進行擴展以增加細節,幫助提升分類精準性。
6. 算法落地的配套工具開發量占比高
工業中一個完整項目的落地,需要交付一整套系統,其中生產人員的便捷應用和人性化的交互UI也是比較重要的。
因此,深度學習在工業現場應用,很大一部分開發工作量在于配套的工具。例如:數據集標注制作、模型訓練、模型快速部署和訓練推理過程的可視化,這些都需要封裝成易用穩定的工具,交付客戶時可以讓無編程經驗的客戶也能快速開展深度學習的業務。
7. 傳統算法為主 深度學習輔助
雖然現在深度學習技術已經看上去無所不能,但在工業應用上,還是主要以傳統算法為主,深度學習輔助的模式。這并非是孰是孰非的問題,而是當前時期,傳統視覺算法在兼顧運算速度、像素計算精度和算法開發速度上,還是略微占優勢。
而深度學習一般作為補充,彌補傳統算法在復雜紋理和復雜特征描述上的不足,將傳統算法達到的 90% 準確率,助推至 95%。
以上,是我個人的一些工業應用中的心得,接下來,和大家分享一下我自己學習 TensorFlow 2.x 的一些經驗和故事。
最初,我是在 B 站偶然的看到 Google 的官方賬號的:Google中國(https://space.bilibili.com/64169458),然后在這里學習了一些 TensorFlow 一手視頻資料,同時結合 TensorFlow 官網的 API 手冊進行邊學邊用。
然后,在年初的 TensorFlow Dev Summit 2020 上,學習了解到了很多東西。包括 TensorFlow 2.2 的新特性,TensorFlow 致力打造的生態,TFUG(TensorFlow User Groups),以及 TensorFlow Certificate開發者認證體系等。
在這次開發者大會后,我開始接觸并使用 TensorFlow 2.x,工作中的項目也逐漸從 1.x 轉換至 2.x。同時,我也關注了 TensorFlow 官方微信公眾號,加入了 TFUG 社區成為其中一員。
關注 TensorFlow 官方公眾號真的給我帶來了很多一手新鮮的資訊和前沿技術信息。通過這個公眾號,我參加了第 1 期 TensorFlow 機器學習 Study Jam課程,并獲得第 1 批通過在線考試的證書卡片和精美定制背包禮品。之后,我也陸續參加了后續的一系列 Study Jam 課程,以及關注每一次的視頻直播,這讓我收獲頗豐。
在課程學習中,我發現了 GDE 李錫涵大佬的 “簡單粗暴 TensorFlow2” 的在線系列教程,并注冊成為第 1 批早期論壇會員 (tf.wiki),在論壇上和大家積極交流互動。“簡單粗暴 TensorFlow2” 一直是我強烈推薦給身邊同事好友的,我認為是快速入門 TensorFlow 最好的教材,也特別適合一些偏現場應用的攻城獅們,可以低學習成本快速進入深度學習殿堂。
也是在 2020 年初的 TensorFlow Dev Summit上,我了解到了 TensorFlow 開發者認證。在國內和國外一些前幾位通過 TF 認證的大佬們的指導幫助下,我系統地學習了 Coursera 與 deeplearning.ai 合作的,由 Laurence Moroney 老師錄制的著名課程 “TensorFlow In Practice 專項課程”,并且認真準備全部滿分通過了該課程的所有課后練習和考試,順利拿到了該課程的全部結業認證證書。通過接下來的一個月每天晚上下班后在家的復習備考,我也順利通過 TensorFlow Certificate 認證,成為國內前幾位拿到證書的開發者。
為了幫助國內更多地了解 TF 認證,也方便大家交流學習,將大佬們無私指導我的精神傳承下去,我利用業余時間翻譯了官方的考試手冊,整理出中文版認證考試手冊方便大家了解,并建立交流群,方便大家交流學習,目前已經有好多群友陸續通過認證。
同時,我也是一位 .NET 開發者,如何讓 TensorFlow 2.x 和 .NET 框架緊密集成,也是我在工作中遇到的挑戰。通過 GitHub 上查找資源,我認識了 SciSharp 社區的 TensorFlow .Net 開發者,并加入 SciSharp 社區,一起幫忙廣大 .NET 開發者更方便地使用 TensorFlow 2.x,通過半年多的努力,目前 TensorFlow .NET 終于綁定升級到 TensorFlow 2.3,實現了大部分的 2.x API,可以十分快速地使用 C# 進行 TensorFlow 的項目應用。
以上,就是我在 2020 年學習 TensorFlow 2 的一些經驗分享,主要的節點是關注了 TesnsorFlow 官方公眾號,通過上面的新鮮信息資訊,進一步發現了大量優秀的學習資源,大大拓寬了自己的學習視野,也認識了很多大牛們。
以上,是個人的一些學習經歷分享,歡迎大家交流指正!
原文標題:社區分享 | TensorFlow 2 學習和工業 CV 領域應用的心得
文章出處:【微信公眾號:TensorFlow】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
機器視覺
+關注
關注
162文章
4401瀏覽量
120535 -
深度學習
+關注
關注
73文章
5511瀏覽量
121376
原文標題:社區分享 | TensorFlow 2 學習和工業 CV 領域應用的心得
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論