2023-12-11

1.引言

工業(yè)視覺缺陷檢測系統(tǒng)是一種利用計算機視覺技術俯逾,通過分析生產(chǎn)過程中的圖像和視頻數(shù)據(jù),來檢測工業(yè)產(chǎn)品是否存在缺陷或質(zhì)量問題的系統(tǒng)鸿脓。有幸參加Aidlux的11月份的訓練營<<工業(yè)視覺少樣本缺陷檢測實戰(zhàn)>>匾旭,在這個過程中我收獲到了很多之前沒有接觸到的算法和實踐。本次課程利用Unet模型進行目標分割凉馆,并基于AidLux平臺完成本地終端部署推理,以滿足工業(yè)生產(chǎn)中對產(chǎn)品質(zhì)量控制的需求亡资。

2. 項目實戰(zhàn)

在本項目中澜共,AidLux提供了一套完整的模型部署代碼,該代碼包括了多個關鍵步驟锥腻,如模型加載嗦董、圖像預處理、推理過程瘦黑、后處理和結果保存等京革。這些代碼以Python為基礎,并借助相關的第三方庫幸斥,旨在支持各種工業(yè)應用場景中的模型部署需求匹摇。
具體而言,給出的部署代碼具有以下特點:

  • 模型加載: 部署代碼能夠輕松加載TFLite模型甲葬,確保在不同平臺上實現(xiàn)無縫的模型部署廊勃。

  • 圖像預處理: 部署代碼包括圖像預處理步驟,以確保輸入圖像與模型的期望輸入格式一致经窖。這有助于提高模型的準確性和穩(wěn)定性坡垫。

  • 推理過程: 同時我們的代碼實現(xiàn)了高效的推理過程梭灿,能夠在實時性要求下完成缺陷檢測任務。這對于工業(yè)應用中的快速響應至關重要冰悠。

  • 后處理: 模型輸出需要進行后處理堡妒,以解析檢測結果并執(zhí)行進一步的操作。我們的代碼包括了這一關鍵步驟溉卓,以確保輸出結果的準確性皮迟。

  • 結果保存: 最終,我們的代碼能夠?qū)z測結果保存到指定位置的诵,以便后續(xù)分析和記錄万栅。

此外,我們的模型部署系統(tǒng)非常小巧西疤,易于遷移,并具有出色的環(huán)境耐受性休溶。這意味著我們的系統(tǒng)可以適應各種工業(yè)環(huán)境代赁,無論是在車間、生產(chǎn)線還是其他現(xiàn)場場景中兽掰,都能夠可靠運行芭碍。

2.1. 模型轉換

在成功將pt模型文件導出為onnx模型文件后,接下來的關鍵步驟是使用Aidlux平臺自帶的AI Model Optimizer平臺將onnx模型轉換為TFLite(TensorFlow Lite)和DLC(Deep Learning Container)模型孽尽,以便在不同的平臺上進行部署和推理窖壕。
通過這些模型轉換步驟,我們能夠確保我們的模型在不同的部署環(huán)境中都能夠順利運行杉女,并且能夠高效地完成工業(yè)視覺缺陷檢測任務瞻讽。這也為我們提供了更多的靈活性,以適應不同的應用需求熏挎。

AIMO網(wǎng)站: http://aimo.aidlux.com/
試用賬號和密碼: 賬號:AIMOTC001 速勇,密碼:AIMOTC001

2.2. 模型代碼部署

tflite_inference.py

# -*- coding: UTF-8 -*-
import aidlite_gpu
import cv2
import os
import time
import numpy as np
from PIL import Image

 
import matplotlib.pyplot as plt
def mask_to_image(mask: np.ndarray):
    if mask.ndim == 2:
        return Image.fromarray((mask * 255).astype(np.uint8))
    elif mask.ndim == 3:
        return Image.fromarray((np.argmax(mask, axis=0) * 255 / mask.shape[0]).astype(np.uint8))



def aidlux_tflite_infer(model_path, img_path, save_path):
    # step1: 初始化aidlite類并創(chuàng)建aidlite對象
    aidlite = aidlite_gpu.aidlite()
    print('model initial success!!')

    # step2: 加載模型
    inp_shape = [256*256*1*4]
    out_shape = [256*256*2*4]
    value = aidlite.ANNModel(model_path, inp_shape, out_shape, 4, 0) 
    # step3: 傳入模型輸入數(shù)據(jù)
    img = cv2.imread(img_path, 0)
    img = cv2.resize(img, (256, 256))
    img = img[np.newaxis, ...]
    img = img / 255.0
    img = np.expand_dims(img, axis=0)
    img = img.astype(dtype=np.float32)
    print("image shape is ", img.shape)
    aidlite.setInput_Float32(img)
    
    # step4: 執(zhí)行推理
    start = time.time()
    aidlite.invoke()
    end = time.time()
    print("infer time(ms):{0}", 1000 * (end - start))
    # step5: 獲取輸出
    pred = aidlite.getOutput_Float32(0)
    # step6: 后處理
    pred = np.array(pred)
    pred = np.reshape(pred,(2,256,256))
    mask_img = mask_to_image(pred)
    
    mask_img.save(save_path) 
    # mask_img = np.array(mask_img)  
    # cv2.imshow('mask_img', mask_img)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows() 
    
if __name__ == '__main__':
    model_path = "/home/zhongtai/dataset2aidlux/unetmodel_fp32.tflite"
    img_path = "/home/zhongtai/dataset2aidlux/test_imgs/0587.PNG"
    save_path = '/home/zhongtai/dataset2aidlux/test_imgs/result_0587.png'
    aidlux_tflite_infer(model_path, img_path, save_path)
    

2.3.實驗和驗證

模型部署在安裝了AidLux應用的Andriod手機上,進行了一系列實驗和驗證坎拐,以驗證系統(tǒng)在實際工業(yè)生產(chǎn)中的性能和準確性烦磁。這些實驗包括模型格式的轉換、VSCode的SSH遠程連接AidLux哼勇、對test文件夾內(nèi)的照片進行預測都伪,并保存預測結果的照片。
https://www.bilibili.com/video/BV1eG411Y7ha/?vd_source=1eedca4ba38e6ff0c1ed9e366feef663

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末积担,一起剝皮案震驚了整個濱河市陨晶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磅轻,老刑警劉巖珍逸,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逐虚,死亡現(xiàn)場離奇詭異,居然都是意外死亡谆膳,警方通過查閱死者的電腦和手機叭爱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漱病,“玉大人买雾,你說我怎么就攤上這事⊙蠲保” “怎么了漓穿?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長注盈。 經(jīng)常有香客問我晃危,道長,這世上最難降的妖魔是什么老客? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任僚饭,我火速辦了婚禮,結果婚禮上胧砰,老公的妹妹穿的比我還像新娘鳍鸵。我一直安慰自己,他們只是感情好尉间,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布偿乖。 她就那樣靜靜地躺著,像睡著了一般哲嘲。 火紅的嫁衣襯著肌膚如雪贪薪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天撤蚊,我揣著相機與錄音古掏,去河邊找鬼。 笑死侦啸,一個胖子當著我的面吹牛槽唾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播光涂,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼庞萍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忘闻?” 一聲冷哼從身側響起钝计,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后私恬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體债沮,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年本鸣,在試婚紗的時候發(fā)現(xiàn)自己被綠了疫衩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡荣德,死狀恐怖闷煤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涮瞻,我是刑警寧澤鲤拿,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站署咽,受9級特大地震影響近顷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宁否,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一幕庐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧家淤,春花似錦、人聲如沸瑟由。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歹苦。三九已至青伤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殴瘦,已是汗流浹背狠角。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚪腋,地道東北人丰歌。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像屉凯,于是被迫代替她去往敵國和親立帖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容