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

工業(yè)視覺在條碼/二維碼識別領域的應用

評論