本项目为基于Aidlux+r-retinanet+tflite,在小米平板5上实现热成像电力训练项目。通过r-retinanet对绝缘子等电力设施进行旋转目标检测。

首先,需要把老师提供的onnx导出为tflite模型,利用onnx2tflite.py进行转换。部分代码如下:

import os
import sys
sys.path.append("D:/wechat data/WeChat Files/wxid_ishz7g32wpon21/FileStorage/File/2023-04/onnx2tflite(1)/onnx2tflite")
from converter import onnx_converterimport os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'def onnx2tflite(onnx_path):onnx_converter(onnx_model_path = onnx_path,need_simplify = False,output_path = os.path.dirname(onnx_path), target_formats = ['tflite'], # or ['keras'], ['keras', 'tflite']weight_quant = False,int8_model = False,int8_mean = None,int8_std = None,image_root = None)if __name__ == "__main__":onnx2tflite("./r-retinanet.onnx")

模型转换完成后,就可以在AidLux平台进行部署了。具体实现代码如下,这个代码是aidlux实现后置摄像头提取目标区域的。

if __name__=="__main__":cap = cvs.VideoCapture(0)frame_id = 0while True:frame = cap.read()if frame is None:continueframe_id += 1if frame_id % 3 != 0:continuetime0 = time.time()# 预处理im, im_scales = process_img(frame, NCHW=False, ToTensor=False)  # im: NHWC#img = preprocess_img(frame, target_shape=(640, 640), div_num=255, means=None, stds=None)# img /= 255''' 定义输入输出shape '''in_shape = [1 * 640 * 800 * 3 * 4]  # HWC, float32out_shape = [1 * 53325 * 8 * 4]  # 8400: total cells, 52 = 48(num_classes) + 4(xywh), float32#out_shape = [1 * 55425 * 8 * 4]  # 8400: total cells, 52 = 48(num_classes) + 4(xywh), float32''' AidLite初始化 '''aidlite = aidlite_gpu.aidlite()''' 加载R-RetinaNet模型 '''tflite_model = '/home/Lesson3_Training_and_Deploy/Lesson3_Training_and_Deploy/AidLux_Deploy/AidLux_Deploy/models/r-retinanet.tflite'res = aidlite.ANNModel(tflite_model, in_shape, out_shape, 4, -1) # Infer on -1: cpu, 0: gpu, 1: mixed, 2: dsp''' 设定输入输出 '''aidlite.setInput_Float32(im, 640, 800)''' 启动推理 '''aidlite.invoke()''' 捕获输出 '''preds = aidlite.getOutput_Float32(0)#preds = preds.reshape(1, 8, 53325)preds = preds.reshape(1, 8, (int)(preds.shape[0]/8))output = np.transpose(preds, (0, 2, 1))''' 创建Anchor '''im_anchor = np.transpose(im, (0, 3, 1, 2)).astype(np.float32)anchors_list = []anchor_generator = Anchors(ratios = np.array([0.2, 0.5, 1, 2, 5]))original_anchors = anchor_generator(im_anchor)   # (bs, num_all_achors, 5)anchors_list.append(original_anchors)''' 解算输出 '''decode_output = decoder(im_anchor, anchors_list[-1], output[..., 5:8], output[..., 0:5], thresh=0.5, nms_thresh=0.2, test_conf=None)for i in range(len(decode_output)):print("dim({}), shape: {}".format(i, decode_output[i].shape))''' 重构输出 '''scores = decode_output[0].reshape(-1, 1)classes = decode_output[1].reshape(-1, 1)boxes = decode_output[2]boxes[:, :4] = boxes[:, :4] / im_scalesif boxes.shape[1] > 5:   boxes[:, 5:9] = boxes[:, 5:9] / im_scalesdets = np.concatenate([classes, scores, boxes], axis=1)''' 过滤类别 '''keep = np.where(classes > 0)[0]dets =  dets[keep, :]''' 转换坐标('xyxya'->'xyxyxyxy') '''res = sort_corners(rbox_2_quad(dets[:, 2:]))''' 评估绘图 '''for k in range(dets.shape[0]):cv2.line(frame, (int(res[k, 0]), int(res[k, 1])), (int(res[k, 2]), int(res[k, 3])), (0, 255, 0), 3)cv2.line(frame, (int(res[k, 2]), int(res[k, 3])), (int(res[k, 4]), int(res[k, 5])), (0, 255, 0), 3)cv2.line(frame, (int(res[k, 4]), int(res[k, 5])), (int(res[k, 6]), int(res[k, 7])), (0, 255, 0), 3)cv2.line(frame, (int(res[k, 6]), int(res[k, 7])), (int(res[k, 0]), int(res[k, 1])), (0, 255, 0), 3)cvs.imshow(frame)

最后,演示视频如下。
演示视频

利用AidLux实现热成像电力巡检项目-lesson3相关推荐

  1. 利用AidLux实现热成像电力巡检

    本项目参考AidLux实战训练营四次课内容:基于热成像的巡检及AidLux工程方案. 要利用两款主要识别算法, 配合前后辅助处理算法, 分别讲解对可见光图像和红外热成像图像的分析. 识别.两款算法分别 ...

  2. 基于AidLux实现热成像电力巡检

    热成像巡检介绍 输电线路巡检主要分为线路本体.附属设施.通道及电力保护区三大类.其中线路线路本体巡检内容包括绝缘子.金具以及导.地线等.特别的,绝缘子,顾名思义,是隔离导线与塔体,起绝缘作用. 输电线 ...

  3. AidLux+无人机——AI电力巡检新模式

    近年来,航空.遥感.以及信息处理等技术迅速发展,使得无人机在电力巡检上逐渐应用开来. 无人机电力巡检作为新型电力巡检方式,不受地形地貌限制.便携易用且高效,能够极大程度降低传统巡检工作的风险和失误,提 ...

  4. 实战落地!电力巡检目标检测和推理部署

    1 项目背景 一架无人机穿梭在电力线路和杆塔之间,对输电线路进行高精度拍照,拍摄完成的照片利用算法进行高倍率压缩,并通过无人机自带的无线通讯能力,结合杆塔的复合光纤架空地线,快速传输到后端机房设备中, ...

  5. YOLO系列优化策略与电力巡检案例

    目录 前言 一.PP-YOLO深度解析 YOLOv3及优化模型 PP-YOLO深度解析 PP-YOLO模型结构 二.YOLO优化策略详解 0. 目标检测模型优化方法 1. YOLOv3-DarkNet ...

  6. 无人机管控平台,推动电力巡检管理水平提升

    各地区无人机作业水平和管理水平存在参差不齐,电力巡检管理要求与业务发展水平不匹配的问题.同时,巡检数据的存储和管理分散,缺乏有效的整合与共享手段,使得内外业脱节,没有形成统一应用和闭环管理.这就导致巡 ...

  7. 手持巡检仪_专业的三防产品设计-电力巡检仪设计

    我个人认为所有科技的发展都是建立在人们的需求而产生的.让人们更加方便快捷舒适.在电力巡检的问题上,为了减少值班员抄表和记录因此设计出这款电力巡检仪设计.用于记录设备的运行.检修.备用状态,可查询当天的 ...

  8. 美格智能5G模组助力电力巡检之无人机产品智能化高效运作

    近日,美格智能与国内大型工业无人机及全自动机场制造商云圣智能合作,针对电力行业推出了全新一代适配5G网络的"虎鲸Ⅲ"全自主工业无人机,该设备搭载了美格智能5G工业级通信模组SRM8 ...

  9. 【解决方案】电力巡检进入智能化时代,无人机+EasyDSS开启智能巡检新模式

    一.方案背景 随着国家的发展和社会的进步,人们的日常生活越来越不能离开电力,而我国电网建设在速度和规模上都已经飞速发展,这使得我国的电网规模跃居到了世界首位.国电建设除了规模和发展速度超前之外,还要保 ...

最新文章

  1. java安全编码指南之:堆污染Heap pollution
  2. python【数据结构与算法】内置函数enumerate(枚举) 函数(看不懂你来打我)
  3. 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY6-支持向量机
  4. 对象检测目标小用什么模型好_[目标检测] YOLO4论文中文版
  5. 13.3的MacBook air 8g内存还是有点吃力
  6. 如何在ubuntu上搭建hustoj?
  7. arcgis批量裁剪矢量模型
  8. 1,Django 基础一
  9. [插头DP自我总结]
  10. docker mysql主从复制
  11. BZOJ 3221: [Codechef FEB13] Obserbing the tree树上询问( 可持久化线段树 + 树链剖分 )
  12. 计算机基础(二):嵌入式驱动、图像处理知识设备小结
  13. 一个移动端的在线五笔输入法
  14. These dependencies were not found:问题
  15. 管理信息系统案例分析_万华集团 IT 规划案例分析
  16. 本地数据库数据导入linux
  17. 上传服务器文件代码,文件上传服务器代码
  18. linux无法识别raid,linux – 无法从失败的RAID中恢复
  19. Go调试工具Delve
  20. 【动手深度学习-笔记】注意力机制(一)注意力机制框架

热门文章

  1. Python利用turtle库绘制花样螺旋正方形
  2. maven依赖没法下载解决方案
  3. 团队项目(1) -- 肥宅快乐拼图
  4. Vmware Workstation 17 安装 windows 11
  5. 苹果公司下魔怔的6月,watch OS 和 IPv6的更新说明。
  6. PCB模块化设计14——MIPI模块PCB布局布线设计规范
  7. android 面试题 答案,android面试题及答案
  8. Android中Bitmap(图片)和Base64互相转换
  9. 【GIS | celestrak】高分卫星系列TLE
  10. 向大家分享一个shell脚本的坑