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