当前位置: 首页 > news >正文

富阳市建设局网站常州做企业网站

富阳市建设局网站,常州做企业网站,网站建设策划书范本,品牌营销策划方案案例[嵌入式AI从0开始到入土]嵌入式AI系列教程 注#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间#xff0c;后期会考虑出视频教程#xff0c;务必催更#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…[嵌入式AI从0开始到入土]嵌入式AI系列教程 注等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间后期会考虑出视频教程务必催更以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章 官方模型适配工具使用 第四章 炼丹炉的搭建基于Ubuntu23.04 Desktop 第五章 Ubuntu远程桌面配置 第六章 下载yolo源码及样例运行验证 第七章 转化为昇腾支持的om离线模型 第八章 jupyter lab的使用 第九章 yolov5在昇腾上推理 第十章 yolov5在昇腾上应用 未完待续… 文章目录 [嵌入式AI从0开始到入土]嵌入式AI系列教程前言一、获取案例1、获取系统镜像2、获取案例3、原始案例 二、修改案例1、打开jupyter2、atc转换模型3、安装依赖4、修改预处理函数5、修改模型和标签路径6、选择你需要的推理模式 三、问题1、No module named scikit2、No module named ais_bench3、 InputTensor Data Type mismatches.1、怀疑导出onnx模型问题2、怀疑版本问题3、om模型有问题 4、预测框错乱 总结 前言 注本文基于Atlas 200 Dk编写其他版本可能会有版本依赖问题 上一节中我们已经完成了图片推理但是仅仅图像的推理怎么够起码得视频或者摄像头吧。因此我参考了案例进行了修改。 一、获取案例 我扒了200i DK A2的案例下来似乎官方没有给案例的下载地址当然你也可以使用上一节的资源包然后新建这个案例文件。 当然你可以使用我本文置顶的资源都是我测试完成的。 1、获取系统镜像 下载地址https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/images/23.0.RC3/1.2.3/A200I-DK-A2_desktop-image_1.2.3_ubuntu22.04-aarch64.img.xz 2、获取案例 下载完后解压在Ubuntu中挂载A200I-DK-A2_desktop-image_1.2.3_ubuntu22.04-aarch64.img镜像文件,案例在root_fs/home/HwHiAiUser/samples/notebooks下。这次我们取第一个案例即可。 复制出来上传到200DK。 3、原始案例 这里贴一份出来毕竟镜像有一点点大。挂资源大概率过不了审核。 # 导入代码依赖 import cv2 import numpy as np import ipywidgets as widgets from IPython.display import display import torch from skvideo.io import vreader, FFmpegWriter import IPython.display from ais_bench.infer.interface import InferSessionfrom det_utils import letterbox, scale_coords, nmsdef preprocess_image(image, cfg, bgr2rgbTrue):图片预处理img, scale_ratio, pad_size letterbox(image, new_shapecfg[input_shape])if bgr2rgb:img img[:, :, ::-1]img img.transpose(2, 0, 1) # HWC2CHWimg np.ascontiguousarray(img, dtypenp.float32)return img, scale_ratio, pad_sizedef draw_bbox(bbox, img0, color, wt, names):在图片上画预测框det_result_str for idx, class_id in enumerate(bbox[:, 5]):if float(bbox[idx][4] float(0.05)):continueimg0 cv2.rectangle(img0, (int(bbox[idx][0]), int(bbox[idx][1])), (int(bbox[idx][2]), int(bbox[idx][3])),color, wt)img0 cv2.putText(img0, str(idx) names[int(class_id)], (int(bbox[idx][0]), int(bbox[idx][1] 16)),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1)img0 cv2.putText(img0, {:.4f}.format(bbox[idx][4]), (int(bbox[idx][0]), int(bbox[idx][1] 32)),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1)det_result_str {} {} {} {} {} {}\n.format(names[bbox[idx][5]], str(bbox[idx][4]), bbox[idx][0], bbox[idx][1], bbox[idx][2], bbox[idx][3])return img0def get_labels_from_txt(path):从txt文件获取图片标签labels_dict dict()with open(path) as f:for cat_id, label in enumerate(f.readlines()):labels_dict[cat_id] label.strip()return labels_dictdef draw_prediction(pred, image, labels):在图片上画出预测框并进行可视化展示imgbox widgets.Image(formatjpg, height720, width1280)img_dw draw_bbox(pred, image, (0, 255, 0), 2, labels)imgbox.value cv2.imencode(.jpg, img_dw)[1].tobytes()display(imgbox)def infer_image(img_path, model, class_names, cfg):图片推理# 图片载入image cv2.imread(img_path)# 数据预处理img, scale_ratio, pad_size preprocess_image(image, cfg)# 模型推理output model.infer([img])[0]output torch.tensor(output)# 非极大值抑制后处理boxout nms(output, conf_threscfg[conf_thres], iou_threscfg[iou_thres])pred_all boxout[0].numpy()# 预测坐标转换scale_coords(cfg[input_shape], pred_all[:, :4], image.shape, ratio_pad(scale_ratio, pad_size))# 图片预测结果可视化draw_prediction(pred_all, image, class_names)def infer_frame_with_vis(image, model, labels_dict, cfg, bgr2rgbTrue):# 数据预处理img, scale_ratio, pad_size preprocess_image(image, cfg, bgr2rgb)# 模型推理output model.infer([img])[0]output torch.tensor(output)# 非极大值抑制后处理boxout nms(output, conf_threscfg[conf_thres], iou_threscfg[iou_thres])pred_all boxout[0].numpy()# 预测坐标转换scale_coords(cfg[input_shape], pred_all[:, :4], image.shape, ratio_pad(scale_ratio, pad_size))# 图片预测结果可视化img_vis draw_bbox(pred_all, image, (0, 255, 0), 2, labels_dict)return img_visdef img2bytes(image):将图片转换为字节码return bytes(cv2.imencode(.jpg, image)[1])def infer_video(video_path, model, labels_dict, cfg):视频推理image_widget widgets.Image(formatjpeg, width800, height600)display(image_widget)# 读入视频cap cv2.VideoCapture(video_path)while True:ret, img_frame cap.read()if not ret:break# 对视频帧进行推理image_pred infer_frame_with_vis(img_frame, model, labels_dict, cfg, bgr2rgbTrue)image_widget.value img2bytes(image_pred)def infer_camera(model, labels_dict, cfg):外设摄像头实时推理def find_camera_index():max_index_to_check 10 # Maximum index to check for camerafor index in range(max_index_to_check):cap cv2.VideoCapture(index)if cap.read()[0]:cap.release()return index# If no camera is foundraise ValueError(No camera found.)# 获取摄像头camera_index find_camera_index()cap cv2.VideoCapture(camera_index)# 初始化可视化对象image_widget widgets.Image(formatjpeg, width1280, height720)display(image_widget)while True:# 对摄像头每一帧进行推理和可视化_, img_frame cap.read()image_pred infer_frame_with_vis(img_frame, model, labels_dict, cfg)image_widget.value img2bytes(image_pred)cfg {conf_thres: 0.4, # 模型置信度阈值阈值越低得到的预测框越多iou_thres: 0.5, # IOU阈值高于这个阈值的重叠预测框会被过滤掉input_shape: [640, 640], # 模型输入尺寸 }model_path yolo.om label_path ./coco_names.txt # 初始化推理模型 model InferSession(0, model_path) labels_dict get_labels_from_txt(label_path)infer_mode videoif infer_mode image:img_path world_cup.jpginfer_image(img_path, model, labels_dict, cfg) elif infer_mode camera:infer_camera(model, labels_dict, cfg) elif infer_mode video:video_path racing.mp4infer_video(video_path, model, labels_dict, cfg)二、修改案例 1、打开jupyter 在yolov5_ascend_example文件夹下打开终端输入 jupyter lab --ip 192.168.3.2 --allow-root电脑浏览器访问http://192.168.3.2:8888右侧打开我们的mian.ipynb文件。 2、atc转换模型 200DK照抄200I DK A2最后改成Ascend 310B1 atc --modelmodels/best.onnx --framework5 --outputmodels/mymodel --input_formatNCHW --input_shapeimages:1,3,640,640 --input_fp16_nodesimages --logerror --soc_versionAscend310运行结果如下大约5到10分钟。当然你也可以用ubuntu主机去做会快很多我用pc转换只需要半分钟左右还是一台4代i7的老年机。 3、安装依赖 使用我的案例代码的直接运行即可 其他的请按照以下方法安装 !pip install scikit_video !pip install pip_packages/aclruntime-0.0.2-cp39-cp39-linux_aarch64.whl !pip install pip_packages/ais_bench-0.0.2-py3-none-any.whl注意aclruntime和ais_bench推理程序的whl包请前往昇腾gitee仓库下载。 4、修改预处理函数 这里我们使用自己训练的模型需要做如下修改。 将img np.ascontiguousarray(img, dtypenp.float32)改为img np.ascontiguousarray(img, dtypenp.float16)/255.0 5、修改模型和标签路径 6、选择你需要的推理模式 这里务必注意如果是在vscode里远程打开main.ipynb的不要推理视频 不仅不显示推理的图像还会导致内存占用不断升高且无法终止内核甚至杀不死进程最后爆内存断开ssh连接。最终我只能按下复位。 三、问题 1、No module named ‘scikit’ pip install scikit-video别搞错名字就行。 2、No module named ‘ais_bench’ 访问Gitee仓库这里有三种方法作为懒人肯定是选择whl包安装啦。 我的pc机python是3.9所以下载这两个按照下方说明进行安装就行。 咱就粗暴一点强制覆盖安装啦。 pip3 install ./aclruntime-{version}-{python_version}-linux_{arch}.whl --force-reinstall pip3 install ./ais_bench-{version}-py3-none-any.whl --force-reinstall安装成功会提示 # 成功安装aclruntime Successfully installed aclruntime-{version} # 成功安装ais_bench推理程序 Successfully installed ais_bench-{version}安装失败的话检查版本然后祭出重启大法。 3、 InputTensor Data Type mismatches. 这里是折磨了我三天的问题甚至进行了一下几个可能的排列组合请不要笑 1、怀疑导出onnx模型问题 我对比了两个onnx模型结构 发现只有这里不一样但是不应该会导致这个问题啊 2、怀疑版本问题 这里怀疑的是转换时的版本问题。因此进行了一波友好的控制变量法测试手动狗头。键盘差点不保 pc机cann7.0200dkcann5.1best.onnx我自己的模型yolov5s.onnx 200i案例的模型yolo.om 200i案例的模型best.om我pc机转的模型mymodel.om 200dk转的模型 最终耗时一下午还是失败了。 3、om模型有问题 最后只能怀疑是om模型有问题于是我使用atc指令查询其信息果然发现了问题所在。关于用法请参考文档。 对比两个模型在Atc command line中best.om多了--input_fp16_nodesimages。我回去一查嘿mindx似乎只能用fp16做输入而我之后转换的模型都是fp32的怪不得main.py报错。但是这时ais_bench推理的main.ipynb又报错了我们只需要把这个32改成16. 4、预测框错乱 这里在经过我刨地三尺翻了三遍论坛终于找到了罪魁祸首。详情请参考原文链接。 我们只需要在这个案例这一行后面添加/255.0即可。 总结 不要问我为什么放鸽子当你被bug折磨别说解决方案了甚至这个报错百度都搜不到那是心态直接爆炸啊。 强烈建议直接使用我置顶提供的案例文件避免踩坑从我做起 我是替你们踩坑的工具人呵呵下期继续希望能尽快爬出来吧。
http://www.zqtcl.cn/news/880560/

相关文章:

  • 个人网站备案 淘宝客wordpress 面包屑导航修改
  • 网站建设 总体思路企业网站建设费是无形资产吗
  • 专业外贸网站开发上海外包公司网站建设
  • iis网站伪静态为什么要网站备案
  • 什么是网站东莞常平律师事务所
  • 网站落地页制作最简单的网站
  • 长兴县建设管理网站抖音小程序注册
  • 做网站容易挣钱吗厦门网页制作厦门小程序app
  • 大型网站开发前端准备北京网站建设V芯ee8888e
  • 关于做营销型网站的建议网页小游戏无需登录
  • 网站短期培训能学什么高校网站建设评比标准
  • 做外贸什么网站比较好做dede鲜花网站模板下载
  • 网站广告推广怎么做网站怎么优化关键词排名
  • 怎样做易支付网站数字化校园建设网站
  • 东莞做网站哪里好公司网站维护怎么维护
  • 微信网站界面设计江阴网站开发公司电话
  • 手机制作网站的软件离石做网站的网络公司
  • 贺州住房和城乡建设部网站广州商城网站建设地址
  • 响应式网站报价服务器上的wordpress
  • 做培训的都上哪些网站东莞网站新站排名
  • 济南网站制郑州快速建站公司
  • 网站推广企业网站建设属于什么工作
  • 公司做网站还是做app用土豆做美食的视频网站
  • 做网站除了广告还有什么收入的中国计算机技术职业资格网
  • 陕西建设银行网站查排名的软件有哪些
  • 企业网站备案教程北京专业做网站的
  • 音乐网站如何建设的如何做学校网站
  • 济南比较好的网站开发公司个人注册网站怎么注册
  • 济南高端网站设计策划图书馆网站建设情况汇报
  • 知识付费网站建设做网站源码