python
文章平均质量分 58
TheMatrixs
士不可以不弘毅,任重而道远
展开
-
mindspore实现自定义CNN图像分类模型
该卷积神经网络需要用到的算子分别为卷积层nn.Conv2d、激活函数nn.Relu、池化层nn.Maxpool2d、打平操作nn.Flatten、全连接层nn.Dense。这里用的自定义卷积神经网络由4层卷积+2层全连接组成,每个卷积层后接一个激活函数和最大池化层,每个池化层通过设置步长为2对特征图进行尺寸减半,因此在经过四层卷积后特征图变为输入的1/16,也就是6*6。在卷积层后接一个打平操作,将特征图从二维转换为一维,特征图打平以才能后进入全连接层,最后一层全连接层输出通道数与分类类别数一致。原创 2022-10-27 14:52:39 · 3502 阅读 · 1 评论 -
YOLO系列目标检测后处理-非极大值抑制
非极大值抑制(NMS)经常应用于各种目标检测模型中,使用NMS可以有效地剔除目标检测结果中多余的检测框,保留最合适的检测框。以YOLOv5为例,模型输入为640*640时,推理输出结果在20*20,40*40,80*80三个尺度上的预测框总和为20*20*3+,40*40*3+80*80*3=25200,每个预测框包含检测框中心xy坐标,预测框宽高wh,预测框置信度,每个分类对应的置信度。要从这上万个预测框中取出正确的检测结果就需要用到非极大值抑制。...原创 2022-05-31 15:57:40 · 3317 阅读 · 1 评论 -
resnet18到resnet152模型pytorch实现
resnet在深度学习领域的重要性不言而喻,自从15年resnet提出后,被各种深度学习模型大量引用。得益于其残差结构的设计,使得深度学习模型可以训练更深层的网络。常见的resnet有resnet18、resnet34、resnet50、resnet101、resnet152几种结构,resnet残差网络由一个卷积块和四个残差块组成,每个残差块包含多个残差结构。从残差结构上看,resnet18和resnet34结构近似,使用相同的残差结构,仅在残差结构数量上有区别,都是使用两个卷积层加一个残...原创 2022-03-09 17:16:25 · 2956 阅读 · 0 评论 -
使用onnxruntime进行yolov5s模型推理实现
首先,使用onnxruntime模型推理比使用pytorch快很多,所以模型训练完后,将模型导出为onnx格式并使用onnxruntime进行推理部署是一个不错的选择。接下来就逐步实现yolov5s在onnxruntime上的推理流程。1、安装onnxruntimepip install onnxruntime2、导出yolov5s.pt为onnx,在YOLOv5源码中运行export.py即可将pt文件导出为onnx。3、使用onnx进行推理,这一步只能获取模型推理产生的候...原创 2022-01-07 11:41:28 · 9999 阅读 · 17 评论 -
砍掉九成代码,重构并简化YOLOv5图像目标检测推理实现
YOLOv5官方开源代码给出了完成的推理实现,但过于封装,只能通过修改配置参数对指定文件夹下图像和视频进行推理,而且三百多行的推理代码也显得过于冗长。如果想要在项目上进行部署应用,显然需要更高的灵活性。这里就用单张图像目标检测来重构YOLOv5的推理代码。依赖项:OpenCV、numpy、pytorch、models文件夹下experimental.py、utils文件夹下general.py、训练结果yolov5s.pt文件。 对于图...原创 2021-12-29 16:10:36 · 10263 阅读 · 15 评论 -
OpenCV图像处理基础操作汇总
1、使用opencv读写图像OpenCV支持jpg、png、tif等格式图像读取。import cv2import matplotlib.pyplot as pltpath = ‘lena.jpg’img = cv2.imread(path)cv2.imwrite(‘lena1.jpg’, img)2、BGR转RGBopencv是按照bgr方式读取图像,而plt按照rgb格式显示图像,因此会出现显示异常。为了正常显示,需要进行顺序转换,由BGR转为RGB。使用openc原创 2021-12-26 16:19:59 · 3014 阅读 · 0 评论 -
TensorFlow模型转换h5转pb
在TensorFlow模型训练阶段一般使用model.save()将模型保存为h5格式,但部署阶段经常需要将训练好的模型固化为pb格式。h5模型转pb模型实现脚本:import tensorflow as tffrom tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2def h5_to_pb(h5_save_path): model = t...原创 2021-12-23 15:06:38 · 3040 阅读 · 0 评论 -
使用OpenCV进行多边形绘制和填充
OpenCV中在图像上进行多边形绘制和填充的函数分别为polylines和fillPoly,在图像分割任务中午中,可用于将预测结果绘制到目标图像。简单的实现:import cv2import numpy as npimg = np.zeros([600, 600, 3])points = np.array([[200, 200], [200, 300], [270, 370], [340, 300], [340, 200], [270, 130]], np.int32)img = cv2原创 2021-12-23 14:24:51 · 6812 阅读 · 0 评论 -
MindSDK+yolov5部署及python版图像视频推理实现
一、前言 基于华为云上的MindX SDK + Pytorch yolov5 应用案例:https://bbs.huaweicloud.com/forum/thread-118598-1-1.html 原帖使用预训练yolov5s.onnx模型进行处理,使用c++进行图像推理,由于原帖python版的实现并不完整,这里对python版图像和视频推理进行实现。整个实现流程: 1、基础环境:Atlas800-3000、mxMan...原创 2021-11-29 14:31:16 · 4950 阅读 · 1 评论 -
深度学习图像分类数据集制作
在深度学习中,图像分类已然是一种初级任务。在计算机视觉领域,使用深度学习对图像进行高维特征提取,实现对图像的分类已经非常成熟。常见的深度学习模型,如lenet-5、AlexNet、VGG、Inception、Resnet等系列模型都可以实现图像分类任务。一般我们使用Tensorflow或者Pytorch构建深度学习模型,并使用cifar10、cifar100、Imagenet等数据集即可进行一个图像分类模型的训练。要解决实际问题,实现算法落地,就需要根据应用场景对我们需要...原创 2021-11-21 12:37:46 · 13404 阅读 · 0 评论 -
python字符串转字典并获取多层嵌套字典元素
首先定义一个符合json格式字符串,即字符串首尾由{}符号包裹,内部为key:value键值对组合。如果是嵌套字典,在value内部继续使用{}符号包裹,一个三层嵌套字典的形式:{key:[{key:[{key:[],...}]},{key:[]}],...}。如下:一个key对应一个列表形式的value。str_obj = '{"MxpiObject":[{"classVec":[{"classId":16,"className":"dog","confidence":0.93969...原创 2021-11-14 14:28:02 · 2464 阅读 · 0 评论