0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

8月AI实战:工业视觉缺陷检测 --基于tflite的yolov8模型优化和推理

lijuan 来源: jf_39743386 作者: jf_39743386 2023-09-13 21:56 次阅读

8月AI实战:工业视觉缺陷检测

--基于tflite的yolov8模型优化和推理

操作视频见B站连接:aidlux模型优化+工业缺陷检测~~完美用我的华为手机实现缺陷检测的推理bilibiliaidlux模型优化+工业缺陷检测~~完美用我的华为手机实现缺陷检测的推理

1 模型优化

将onnx模型转化为tflite模型

打开网站:http://aimo.aidlux.com/

输入试用账号和密码:账号:AIMOTC001 ,密码:AIMOTC001

通过页面中的提示AI Model Optimizer,依次执行步骤①上传模型②选择目标平台③参数设置④转换结果。

通过上述①-④可将onnx模型转为tflite模型

模型转换过程包含如下日志信息

2023-09-07 19:47:05,969 - INFO : Optimization started.

2023-09-07 19:47:05,970 - INFO : [ONNX-SIM] Clean ONNX Model input node.

2023-09-07 19:47:06,733 - INFO : [ONNX2TFLITE] Start converting to TFLITE.

2023-09-07 19:47:28,511 - INFO : Model optimization done.

2 推理的py文件

模型采用课程中提供的yolov8_slimneck_SIOU.ONNX,转化完模型路径及名称,如下

# 模型

model_path = "/home/lesson3/yolov8_slimneck_SIOU_tflite/yolov8_slimneck_SIOU_fp32.tflite"

# 测试图片路径

image_path = "/home/lesson3/test"

模型推理过程包含如下步骤:

初始化aidlite类并创建aidlite对象

aidlite = aidlite_gpu.aidlite()

print("ok")

加载模型

value = aidlite.ANNModel(model_path, [640 * 640 * 3 * 4], [8400 * 11 * 4], 4, 0)

print("gpu:", value)

包含遍历每一张图片

for root, dirs, files in os.walk(image_path):

num = 0

for file in files:

file = os.path.join(root, file)

frame = cv2.imread(file)

x_scale = frame.shape[1] / 640

y_scale = frame.shape[0] / 640

将图片转换为模型输入的640*640尺寸

img = cv2.resize(frame, (640, 640))

# img_copy=img.co

img = img / 255.0

img = np.expand_dims(img, axis=0)

img = img.astype(dtype=np.float32)

print(img.shape)

传入模型输入数据

aidlite.setInput_Float32(img)

执行推理

start = time.time()

aidlite.invoke()

end = time.time()

timerValue = 1000 * (end - start)

print("infer time(ms):{0}", timerValue)

获取输出

pred = aidlite.getOutput_Float32(0)

# print(pred.shape)

pred = np.array(pred)

print(pred.shape)

pred = np.reshape(pred, (8400, 11))

print(pred.shape) # shape=(8400,11)

后处理,解析输出

boxes, scores, classes = postProcess(pred, confThresh, NmsThresh)

绘制保存图像

ret_img = draw(frame, x_scale, y_scale, boxes, scores, classes)

ret_img = ret_img[:, :, ::-1]

num += 1

image_file_name = "/home/result/res" + str(num) + ".jpg"

8. 保存图片

cv2.imwrite(image_file_name, ret_img)

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    30728

    浏览量

    268892
  • 工业视觉
    +关注

    关注

    0

    文章

    71

    浏览量

    7131
收藏 人收藏

    评论

    相关推荐

    使用Yolov5 - i.MX8MP进行NPU错误检测是什么原因?

    tflite --int8我还尝试过 TFlite 集线器模型,如 SSD 和 mobilenet,它们已经转换为 uint8。 在附件
    发表于 03-31 07:38

    使用YOLOv8做目标检测和实例分割的演示

    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能。
    的头像 发表于 02-06 10:11 7460次阅读

    YOLOv8自定义数据集训练到模型部署推理简析

    如果你只是想使用而不是开发,强烈推荐通过pip安装方式获取YOLOv8包!YOLOv8安装命令行
    的头像 发表于 03-24 09:27 4659次阅读

    TensorRT 8.6 C++开发环境配置与YOLOv8实例分割推理演示

    YOLOv8实例分割TensorRT 推理代码已经完成C++类封装,三行代码即可实现YOLOv8对象检测与实例分割模型
    的头像 发表于 04-25 10:49 5772次阅读
    TensorRT 8.6 C++开发环境配置与<b class='flag-5'>YOLOv8</b>实例分割<b class='flag-5'>推理</b>演示

    AI爱克斯开发板上用OpenVINO™加速YOLOv8分类模型

    本系列文章将在 AI 爱克斯开发板上使用 OpenVINO 开发套件依次部署并测评 YOLOv8 的分类模型、目标检测模型、实例分割
    的头像 发表于 05-05 11:47 1051次阅读
    在<b class='flag-5'>AI</b>爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b>分类<b class='flag-5'>模型</b>

    AI爱克斯开发板上用OpenVINO™加速YOLOv8目标检测模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 分类模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO 开发套件部署并测评
    的头像 发表于 05-12 09:08 1312次阅读
    在<b class='flag-5'>AI</b>爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b>目标<b class='flag-5'>检测</b><b class='flag-5'>模型</b>

    YOLOv8版本升级支持小目标检测与高分辨率图像输入

    YOLOv8版本最近版本又更新了,除了支持姿态评估以外,通过模型结构的修改还支持了小目标检测与高分辨率图像检测。原始的YOLOv8
    的头像 发表于 05-16 11:14 1.2w次阅读
    <b class='flag-5'>YOLOv8</b>版本升级支持小目标<b class='flag-5'>检测</b>与高分辨率图像输入

    AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板上用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板上使用OpenVINO 开发套件部署并测评YOLOv8
    的头像 发表于 05-26 11:03 1241次阅读
    <b class='flag-5'>AI</b>爱克斯开发板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目标<b class='flag-5'>检测</b><b class='flag-5'>模型</b>

    AI爱克斯开发板上用OpenVINO™加速YOLOv8-seg实例分割模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 目标检测模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO 开发
    的头像 发表于 06-05 11:52 1003次阅读
    在<b class='flag-5'>AI</b>爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b>-seg实例分割<b class='flag-5'>模型</b>

    教你如何用两行代码搞定YOLOv8各种模型推理

    大家好,YOLOv8 框架本身提供的API函数是可以两行代码实现 YOLOv8 模型推理,这次我把这段代码封装成了一个类,只有40行代码左右,可以同时支持
    的头像 发表于 06-18 11:50 3055次阅读
    教你如何用两行代码搞定<b class='flag-5'>YOLOv8</b>各种<b class='flag-5'>模型</b><b class='flag-5'>推理</b>

    AI爱克斯开发板上用OpenVINO™加速YOLOv8-seg实例分割模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 目标检测模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO 开发
    的头像 发表于 06-30 10:43 905次阅读
    在<b class='flag-5'>AI</b>爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b>-seg实例分割<b class='flag-5'>模型</b>

    三种主流模型部署框架YOLOv8推理演示

    部署。这里以YOLOv8为例,演示了YOLOv8对象检测模型在OpenVINO、ONNXRUNTIME、TensorRT三个主流框架上C++推理
    的头像 发表于 08-06 11:39 2735次阅读

    OpenCV4.8+YOLOv8对象检测C++推理演示

    自从YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都无法再加载导出ONNX格式模型了,只有OpenCV4.7以上版本才可以支持最新版本YOLOv5与
    的头像 发表于 09-27 11:07 1538次阅读
    OpenCV4.8+<b class='flag-5'>YOLOv8</b>对象<b class='flag-5'>检测</b>C++<b class='flag-5'>推理</b>演示

    基于YOLOv8的自定义医学图像分割

    YOLOv8是一种令人惊叹的分割模型;它易于训练、测试和部署。在本教程中,我们将学习如何在自定义数据集上使用YOLOv8。但在此之前,我想告诉你为什么在存在其他优秀的分割模型时应该使用
    的头像 发表于 12-20 10:51 771次阅读
    基于<b class='flag-5'>YOLOv8</b>的自定义医学图像分割

    基于OpenCV DNN实现YOLOv8模型部署与推理演示

    基于OpenCV DNN实现YOLOv8推理的好处就是一套代码就可以部署在Windows10系统、乌班图系统、Jetson的Jetpack系统
    的头像 发表于 03-01 15:52 1584次阅读
    基于OpenCV DNN实现<b class='flag-5'>YOLOv8</b>的<b class='flag-5'>模型</b>部署与<b class='flag-5'>推理</b>演示