基于AidLux的工业视觉少样本缺陷检测实战
大模型开发/技术交流
- 插件应用
- 大模型实训营
2023.12.112920看过
1.引言
工业视觉缺陷检测系统是一种利用计算机视觉技术,通过分析生产过程中的图像和视频数据,来检测工业产品是否存在缺陷或质量问题的系统。有幸参加Aidlux的11月份的训练营<<工业视觉少样本缺陷检测实战>>,在这个过程中我收获到了很多之前没有接触到的算法和实践。本次课程利用Unet模型进行目标分割,并基于AidLux平台完成本地终端部署推理,以满足工业生产中对产品质量控制的需求。
2. 项目实战
在本项目中,AidLux提供了一套完整的模型部署代码,该代码包括了多个关键步骤,如模型加载、图像预处理、推理过程、后处理和结果保存等。这些代码以Python为基础,并借助相关的第三方库,旨在支持各种工业应用场景中的模型部署需求。
具体而言,给出的部署代码具有以下特点:
具体而言,给出的部署代码具有以下特点:
-
模型加载: 部署代码能够轻松加载TFLite模型,确保在不同平台上实现无缝的模型部署。
-
图像预处理: 部署代码包括图像预处理步骤,以确保输入图像与模型的期望输入格式一致。这有助于提高模型的准确性和稳定性。
-
推理过程: 同时我们的代码实现了高效的推理过程,能够在实时性要求下完成缺陷检测任务。这对于工业应用中的快速响应至关重要。
-
后处理: 模型输出需要进行后处理,以解析检测结果并执行进一步的操作。我们的代码包括了这一关键步骤,以确保输出结果的准确性。
-
结果保存: 最终,我们的代码能够将检测结果保存到指定位置,以便后续分析和记录。
此外,我们的模型部署系统非常小巧,易于迁移,并具有出色的环境耐受性。这意味着我们的系统可以适应各种工业环境,无论是在车间、生产线还是其他现场场景中,都能够可靠运行。
2.1. 模型转换
在成功将pt模型文件导出为onnx模型文件后,接下来的关键步骤是使用Aidlux平台自带的AI Model Optimizer平台将onnx模型转换为TFLite(TensorFlow Lite)和DLC(Deep Learning Container)模型,以便在不同的平台上进行部署和推理。
通过这些模型转换步骤,我们能够确保我们的模型在不同的部署环境中都能够顺利运行,并且能够高效地完成工业视觉缺陷检测任务。这也为我们提供了更多的灵活性,以适应不同的应用需求。
通过这些模型转换步骤,我们能够确保我们的模型在不同的部署环境中都能够顺利运行,并且能够高效地完成工业视觉缺陷检测任务。这也为我们提供了更多的灵活性,以适应不同的应用需求。
AIMO网站: http://aimo.aidlux.com/
试用账号和密码: 账号:AIMOTC001 ,密码:AIMOTC001
试用账号和密码: 账号:AIMOTC001 ,密码:AIMOTC001
2.2. 模型代码部署
tflite_inference.py
# -*- coding: UTF-8 -*-import aidlite_gpuimport cv2import osimport timeimport numpy as npfrom PIL import Imageimport matplotlib.pyplot as pltdef 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类并创建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: 传入模型输入数据img = cv2.imread(img_path, 0)img = cv2.resize(img, (256, 256))img = img[np.newaxis, ...]img = img / 255.0img = np.expand_dims(img, axis=0)img = img.astype(dtype=np.float32)print("image shape is ", img.shape)aidlite.setInput_Float32(img)# step4: 执行推理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手机上,进行了一系列实验和验证,以验证系统在实际工业生产中的性能和准确性。这些实验包括模型格式的转换、VSCode的SSH远程连接AidLux、对test文件夹内的照片进行预测,并保存预测结果的照片。
实战视频
实战视频
<iframe src="//player.bilibili.com/player.html?aid=409501588&bvid=BV1eG411Y7ha&cid=1362222816&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
评论