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

1、简介

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

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

2、训练自己的数据集

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

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

 
 

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

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

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

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

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)

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

基于aidlux的ai模型边缘设备模型部署实战

4、总结

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

相关链接:CD CHASERS:基于aidlux的ai模型边缘设备模型部署实战(2.使用opencv图像处理)_m0_61133217的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值