• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

aidlux的ai模型边缘设备模型部署3.图像分类

武飞扬头像
YI355
帮助1

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)

修改视频传入方式,调用手机摄像头,调用该函数便可在手机端显示实时处理画面。显示效果如下所示。 视频链接:www.bilibili.com/video/BV1Qh…

4、总结

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgajfbk
系列文章
更多 icon
同类精品
更多 icon
继续加载