前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于aidlux的ai模型边缘设备模型部署实战(3.图像分类)

基于aidlux的ai模型边缘设备模型部署实战(3.图像分类)

原创
作者头像
用户10689547
发布2023-08-07 19:34:09
2430
发布2023-08-07 19:34:09
举报
文章被收录于专栏:AI_aidlux

1、简介

之前的内容我们成功调用了摄像头并调用opencv库函数,实现手机摄像头的是实时边缘检测,使用canny边缘检测提取图像边缘特征,当然还能实现更为复杂的函数功能。

经过前两次的学习已经掌握了环境配置和基本图像处理功能应用,接下来我们便进入该课程的主要部分,深度学习模型部署实战课程,实现自己的分类模型部署实战。

2、训练自己的数据集

然后我们根据第三节图像分类模型部署,打开notebook依次运行其中ipynb文件,安装好其中的onnx工具包,熟悉其中的部署代码,让案例他们能够运行起来。

调用手机摄像头图像成功分类出圆珠笔,并在频幕上显示出分类类别与概率,如下图所示。

熟悉完相关函数调用后我们训练自己的分类数据集,为了便于演示,身边简单的3类水果分类数据集采集(西红柿,苹果,桃子),并将训练好的模型转换成onnx格式的模型。不懂模型训练和转换的可以参考@同济子豪兄的视频连接进行学习模型训练和转换。

将转换好的onnx文件上传到Aldiux种并进行测试。

3、模型部署并调用摄像头实时检测

导入上传的onnx,修改文件路径,将调用摄像头分类检测代码,即可在手机端运行摄像头进行实时检测,手机上显示检测的结果和检测处理时间。整合后的代码如下:

代码语言:javascript
复制
import cv2
import numpy as np
import time
from tqdm import tqdm

def generate_video(input_path='videos/fruit.mp4'):
    filehead = input_path.split('/')[-1]
    output_path = "out-" + filehead
    
    print('视频开始处理',input_path)
    
    # 获取视频总帧数
    cap = cv2.VideoCapture(input_path)
    frame_count = 0
    while(cap.isOpened()):
        success, frame = cap.read()
        frame_count += 1
        if not success:
            break
    cap.release()
    print('视频总帧数为',frame_count)
    
    # cv2.namedWindow('Crack Detection and Measurement Video Processing')
    cap = cv2.VideoCapture(input_path)
    frame_size = (cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

    # fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
    # fourcc = cv2.VideoWriter_fourcc(*'XVID')
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    fps = cap.get(cv2.CAP_PROP_FPS)

    out = cv2.VideoWriter(output_path, fourcc, fps, (int(frame_size[0]), int(frame_size[1])))
    
    # 进度条绑定视频总帧数
    with tqdm(total=frame_count-1) as pbar:
        try:
            while(cap.isOpened()):
                success, frame = cap.read()
                if not success:
                    break

                # 处理帧
                # frame_path = './temp_frame.png'
                # cv2.imwrite(frame_path, frame)
                try:
                    frame = process_frame(frame)
                except:
                    print('报错!', error)
                    pass
                
                if success == True:
                    # cv2.imshow('Video Processing', frame)
                    out.write(frame)

                    # 进度条更新一帧
                    pbar.update(1)

                # if cv2.waitKey(1) & 0xFF == ord('q'):
                    # break
        except:
            print('中途中断')
            pass

    cv2.destroyAllWindows()
    out.release()
    cap.release()
    print('视频已保存', output_path)

修改视频传入方式,调用手机摄像头,调用该函数便可在手机端显示实时处理画面。显示效果如下所示。

视频链接:https://www.bilibili.com/video/BV1Qh4y1r7aD?t=9.0

4、总结

经过几次的学习已经掌握了相关的深度学习模型部署的相关步骤,当然我们可以进行更深一步的学习,包括图像检测,图像分割等等视觉任务的部署。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、简介
  • 2、训练自己的数据集
  • 3、模型部署并调用摄像头实时检测
  • 4、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档