首页 > 其他分享 >基于AidLux的工业视觉少样本缺陷检测实战

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

时间:2023-12-11 10:25:02浏览次数:41  
标签:实战 img AidLux aidlite 模型 样本 mask np path

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文件夹内的照片进行预测,并保存预测结果的照片。
https://www.bilibili.com/video/BV1eG411Y7ha/?vd_source=1eedca4ba38e6ff0c1ed9e366feef663

标签:实战,img,AidLux,aidlite,模型,样本,mask,np,path
From: https://www.cnblogs.com/xhuiblog/p/17893762.html

相关文章

  • 机器学习 - 决策树:技术全解与案例实战
    本文深入探讨了机器学习中的决策树算法,从基础概念到高级研究进展,再到实战案例应用,全面解析了决策树的理论及其在现实世界问题中的实际效能。通过技术细节和案例实践,揭示了决策树在提供可解释预测中的独特价值。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI......
  • 工业视觉少样本缺陷检测实战应用
    工业视觉少样本缺陷检测实战应用1.AidLux介绍AidLux能广泛应用在智能工业、AI教育、智慧人居、智慧城市、智慧物流、智慧交通、智慧零售和机器人等诸多场景中。集成国际主流AI框架和多种开发环境、后台服务程序、编译器及图形开发组件,无须配置开箱即用,极大地简化了开发步骤;自......
  • 线上业务优化之案例实战
    本文是我从业多年开发生涯中针对线上业务的处理经验总结而来,这些业务或多或少相信大家都遇到过,因此在这里分享给大家,大家也可以看看是不是遇到过类似场景。本文大纲如下,后台上传文件线上后台项目有一个消息推送的功能,运营新建一条通知消息时,需要一起上传一列包含用户id的文件......
  • SpringBoot实战项目:蚂蚁爱购(从零开发)
    简介这是从零开发的SpringBoot实战项目,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天彻底掌握开发SpringBoot项目。教程路线是:搭建环境=>安装软件=>创建项目=>添加依赖和配置=>通过表生成代码=>编写Java代码=>代码自测=>前后端联调=>准备找工作。学完即可成为合格的Java开发......
  • # yyds干货盘点 # 盘点一个Pandas处理Excel表格实战问题(下篇)
    大家好,我是皮皮。一、前言继续接着上一篇文章说,这一篇文章我们一起来看看大佬们的解决办法。二、实现过程这里【郑煜哲·Xiaopang】和【瑜亮老师】给了一个提示,如下图所示:后来【隔壁......
  • SpringBoot实战项目:蚂蚁爱购(从零开发)
    ​ 简介这是从零开发的SpringBoot实战项目,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天彻底掌握开发SpringBoot项目。教程路线是:搭建环境=>安装软件=>创建项目=>添加依赖和配置=>通过表生成代码=>编写Java代码=>代码自测=>前后端联调=>准备找工作。学完即可成为合格......
  • Java开发者的Python快速实战指南:探索向量数据库之文本搜索
    前言如果说Python是跟随我的步伐学习的话,我觉得我在日常开发方面已经没有太大的问题了。然而,由于我没有Python开发经验,我思考着应该写些什么内容。我回想起学习Java时的学习路线,直接操作数据库是其中一项重要内容,无论使用哪种编程语言,与数据库的交互都是不可避免的。然而,直接操作M......
  • 深度解读DBSCAN聚类算法:技术与实战全解析
    探索DBSCAN算法的内涵与应用,本文详述其理论基础、关键参数、实战案例及最佳实践,揭示如何有效利用DBSCAN处理复杂数据集,突破传统聚类限制。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里......
  • SSM框架实现新闻网站信息管理系统前台后台综合开发项目实战
    ......
  • 月入两万,墨问便签卖课实战,今晚直播。
    直播通知......