基于AidLux的工业视觉少样本缺陷检测实战

简介: 基于AidLux的工业视觉少样本缺陷检测实战

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

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类并创建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.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: 执行推理
    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文件夹内的照片进行预测,并保存预测结果的照片。
b站实操视频

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 安全
基于YOLOv8的铁路工人安全作业检测系统|精准识别反光背心与安全帽
本项目集成了 YOLOv8 工业目标检测模型 与 PyQt5 图形界面工具,实现了对铁路工人穿戴安全装备(如反光背心与安全帽)的自动检测与预警。
基于YOLOv8的铁路工人安全作业检测系统|精准识别反光背心与安全帽
|
网络协议 算法
简述TCP报文首部字段及其作用
TCP报文首部字段及其作用
1933 0
|
3月前
|
存储 安全 NoSQL
【干货满满】API安全加固指南:签名防篡改+Access Token管理最佳实践
API 安全关乎业务与用户隐私,签名机制防篡改、伪造请求,Access Token 管理身份与权限。本文详解签名生成、Token 类型与管理、常见安全问题及最佳实践,助开发者构建安全可靠的 API 体系。
|
10月前
|
人工智能 数据挖掘 vr&ar
LeviTor:蚂蚁集团开源3D目标轨迹控制视频合成技术,能够控制视频中3D物体的运动轨迹
LeviTor是由南京大学、蚂蚁集团等机构联合推出的3D目标轨迹控制视频合成技术,通过结合深度信息和K-means聚类点控制视频中3D物体的轨迹,无需显式的3D轨迹跟踪。
265 4
LeviTor:蚂蚁集团开源3D目标轨迹控制视频合成技术,能够控制视频中3D物体的运动轨迹
|
8月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
YOLOv11改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
775 9
YOLOv11改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
ly~
|
人工智能 搜索推荐 自动驾驶
人工智能的应用
人工智能在多个领域广泛应用,包括:医疗领域的疾病诊断、药物研发和医疗机器人;交通领域的自动驾驶和智能交通管理;金融领域的风险评估、金融诈骗检测和投资决策;教育领域的个性化学习和智能辅导;工业领域的质量检测和生产流程优化;家居领域的智能家居系统,如智能音箱和智能灯具等,极大提升了各行业的效率与服务质量。
ly~
810 1
|
5G 网络架构
计算机网络与技术——物理层
物理层是计算机网络OSI模型中最低的一层,它规定了为传输数据所需要的物理链路的创建、维持、拆除,以及提供具有机械的、电子的、功能的和规范的特性。物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体。物理层的主要任务是为数据传输提供可靠的环境,它为设备之间的数据通信提供传输媒体及互连设备,确保原始的数据可在各种物理媒体上传输。物理层的基本概念包括物理层的作用、物理层的主要任务、数据在传输媒体上的传输方式等。用于物理层的协议也常称为物理层规程(procedure),其实物理层规程就是物理层协议。
计算机网络与技术——物理层
|
SQL 关系型数据库 数据库
关系型数据库SQLserver连接到服务器
【7月更文挑战第27天】
263 3
|
存储 API 数据安全/隐私保护
​邮箱收不到验证码邮件是什么原因
在互联网应用中,未收到验证码邮件常令人困扰。原因包括邮件误入垃圾箱、邮箱设置不当、发件服务器故障、地址输入错误及ISP拦截。解决策略有检查垃圾邮件、清理邮箱、修正设置、确认地址准确及更换邮箱服务。推荐使用AOKSend提升邮件送达率,其优势在于高送达率、实时监测与易集成,通过注册、获取API、配置SMTP及测试,可有效解决验证码邮件送达问题,优化用户体验。
|
存储 SQL 数据库连接
SQLAlchemy常用数据类型
SQLAlchemy常用数据类型