人工智能
文章平均质量分 67
TheMatrixs
士不可以不弘毅,任重而道远
展开
-
图像语义分割网络FCN(32s、16s、8s)原理及MindSpore实现
当图像进入神经网络,第一个卷积层将图像由三通道转换为96通道featuremap,第二个卷积层转换为256个通道,第三个卷积层384个通道,直到最后一个卷积层变为21个通道,每个通道对应不同分割类型。FCN模型结构可以根据分割细粒度使用FCN32s、FCN16s、FCN8s等结构,32s即从32倍下采样的特征图恢复至输入大小,16s和8s则是从16倍和8倍下采样恢复至输入大小,当然还可以使用4s、2s结构,数字越小使用的反卷积层进行上采样越多,对应模型结构更加复杂,理论上分割的效果更精细。原创 2022-12-20 15:14:31 · 5793 阅读 · 3 评论 -
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 · 3268 阅读 · 1 评论 -
MindSpore系列一加载图像分类数据集
MindSpore提供了大部分常用数据集和标准格式数据集的加载接口,可以直接使用mindspore.dataset中对应的数据集加载类进行数据加载,如MNIST、CIFAR-10、CIFAR-100、VOC、COCO、ImageNet、CelebA、CLUE等, 以及业界标准格式的数据集,包括MindRecord、TFRecord、Manifest等。常用数据集加载以cifar10为例,首先将cifar10数据集下载并解压到本地。1、加载cifar10数据集:用create_dict_iterator原创 2022-06-21 11:08:40 · 1927 阅读 · 0 评论 -
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 · 3087 阅读 · 1 评论 -
Pytorch中的grid_sample算子功能解析
近期在一个模型从pytorch迁移到mindspore框架中遇到一个算子适配问题,pytorch中的grid_sample在mindspore中没有对应的算子,需要考虑自定义实现。查找pytorch官网发现grid_sample是一种特殊的采样算法。调用接口为:torch.nn.functional.grid_sample(input,grid,mode='bilinear',padding_mode='zeros',align_corners=None)。 i...原创 2022-05-11 17:25:23 · 13910 阅读 · 8 评论 -
基于mindspore的口罩检测训练与在线推理
mindspore安装地址:https://www.mindspore.cn/install mindspore开源模型库:https://gitee.com/mindspore/models 测试平台为昇腾Atlas800训练服务器,Ubuntu18.04系统,搭载昇腾910AI加速芯片,FP16算力为320T。 数据集为VOC_MASK口罩数据集,在使用数据集之前需要对数据集文件进行转换,将voc标注文件由xml转为coco的j...原创 2022-03-15 16:25:59 · 4957 阅读 · 3 评论 -
resnet18到resnet152模型pytorch实现
resnet在深度学习领域的重要性不言而喻,自从15年resnet提出后,被各种深度学习模型大量引用。得益于其残差结构的设计,使得深度学习模型可以训练更深层的网络。常见的resnet有resnet18、resnet34、resnet50、resnet101、resnet152几种结构,resnet残差网络由一个卷积块和四个残差块组成,每个残差块包含多个残差结构。从残差结构上看,resnet18和resnet34结构近似,使用相同的残差结构,仅在残差结构数量上有区别,都是使用两个卷积层加一个残...原创 2022-03-09 17:16:25 · 2662 阅读 · 0 评论 -
VGG模型构建与实现
VGG卷积神经网络最大的特点就是由多个vgg_block构成,每个vgg_block包含多个卷积层,除第一个卷积层外,其余卷积层输入输出通道数量保持不变,卷积核大小一般为3*3,填充为1,即卷积层不改变特征图大小,由卷积核为2步长为2的池化层进行特征图缩放。vgg_block实现:def vgg_block(conv_num, in_channel, out_channel): layers = [] for _ in range(conv_num): lay.原创 2022-02-10 15:22:46 · 2791 阅读 · 0 评论 -
AlexNet网络构建与训练
2012年AlexNet横空出世,正式将深度学习推向高潮。如今10年过去,整个深度学习生态已经发展到非常庞大。这里使用pytorch进行AlexNet网络实现及在图像分类任务上的训练过程。 AlexNet是在LeNet基础上发展而来,模型结构更深。LeNet5由2层卷积层加3层全连接层构成,AlexNet则在此基础上将卷积层增加到5层,网络深度达到了8层,并且增加了Dropout,将池化层由平均池化换成最大池化,激活函数改为Relu,整体参数量达到千万级。...原创 2022-02-09 17:01:15 · 1512 阅读 · 0 评论 -
自定义LeNet5,开启你的炼丹之路
LeNet5是卷积神经网络的开山之作,在手写数字识别上达到了出色的效果。LeNet5具有5层神经网络,其中2层卷积神经网络,3层全连接。两层卷积神经网络之后分别接了一个激活层和一个平均池化层。这里通过对lenet进行解析和修改,实现对自定义图像数据的分类。 首先来解析lenet5手写数字识别模型: 第一个卷积层:输入图像为32*32大小的灰度图,图像通道为1,宽高为32*32,卷积层包含6个卷积核,每个卷积核大小为5*5,经过第一个卷积层后,生成通道为...原创 2022-01-22 17:30:47 · 838 阅读 · 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 · 9465 阅读 · 17 评论 -
YOLOv5训练coco128数据集流程
一、安装pytorch1、创建虚拟环境 使用Anaconda安装,建议先创建一个虚拟环境。启动Anaconda Prompt,在命令行输入: conda create -name torch python==3.7.112、安装pytorch 进入pytorch官网,根据需要选择系统、安装包、语言和计算平台。 通过conda安装CPU版pytorch: conda install pytorch to...原创 2022-01-04 16:34:08 · 15275 阅读 · 5 评论 -
砍掉九成代码,重构并简化YOLOv5图像目标检测推理实现
YOLOv5官方开源代码给出了完成的推理实现,但过于封装,只能通过修改配置参数对指定文件夹下图像和视频进行推理,而且三百多行的推理代码也显得过于冗长。如果想要在项目上进行部署应用,显然需要更高的灵活性。这里就用单张图像目标检测来重构YOLOv5的推理代码。依赖项:OpenCV、numpy、pytorch、models文件夹下experimental.py、utils文件夹下general.py、训练结果yolov5s.pt文件。 对于图...原创 2021-12-29 16:10:36 · 9687 阅读 · 15 评论 -
深度学习常见概念解析
1、损失函数loss 用于定义网络输出结果与正确结果之间的误差的函数,常用损失函数为均方差(MSE)和交叉熵(Cross Entropy)。一般均方差用于回归问题,交叉熵用于分类问题。2、梯度 梯度下降:让损失函数沿着负梯度方向更新神经网络参数,使得损失函数不断减小,达到优化网络模型的目的。梯度下降方法有全局梯度下降、随机梯度下降和小批量梯度下降,常用小批量梯度下降方法。 梯度消失:神经网络训练过程中,loss非常小,导致参数难以更新,即梯度消...原创 2021-12-27 17:45:31 · 2177 阅读 · 0 评论 -
TensorFlow实现Unet遥感图像分割
Unet是一种U型网络,分为左右两部分卷积,左边为下采样提取高维特征,右边为上采样并与左侧融合实现图像分割。这里使用TensorFlow实现Unet网络,实现对遥感影像的道路分割。训练数据:标签图像:Unet实现:import tensorflow as tfimport numpy as npimport cv2import globimport itertoolsclass UNet: def __init__( self, .原创 2021-12-26 12:18:25 · 5432 阅读 · 18 评论 -
无人机图像优化软件——新增正射影像处理(图像增强、阴影增强、去雾、自动优化、匀光匀色)
无人机图像优化软件,主要用于优化无人机航拍影像视觉效果,解决在不良天气情况下图像较暗、阴影重、有雾等问题。新版本增加正射影像(TIF格式)处理功能。1、高速批处理:采用多线程加速,同时处理多张影像,批处理速度更快。2、多任务:可添加多个文件夹下影像,适用于多架次或多镜头影像数据批处理。3、匀光匀色:采用模板图像与待处理影像直方图匹配,批量进行图像匀光匀色。4、正射影像处理-自动亮度5、正射影像处理-阴影增强6、正射影像处理-自动去雾7、正射影像处理-锐化原创 2021-04-13 12:39:43 · 5289 阅读 · 2 评论 -
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 · 2899 阅读 · 0 评论 -
AI自动P图:maskrcnn+inpaintting消除并修复指定区域图像
采用昇腾800-3000推理服务器实现基于maskrcnn和imageinpainting的图像区域消除和修复模型推理。mask-rcnn模型主要用于图像语义分割,语义分割后,image-inpaiting模型通过指定的坐标对需要消除的区域进行修复。 昇腾开源案例:https://gitee.com/ascend/samples/tree/master/python/level3_multi_model/mask_rcnn_image_inpainting...原创 2021-12-07 15:31:52 · 1027 阅读 · 0 评论 -
使用labelme制作自己的深度学习图像分割数据集
要实现深度学习图像分割应用,首先要获取图像分割标注数据,比如PASCAL VOC、COCO、SBD等大型数据集,但这些数据集主要用于训练预训练模型和评价分割模型精度性能,针对实际应用还需要我们根据项目需求制作自己的训练数据集。这里介绍一种基于labelme图像标注工具的图像分割数据集制作流程。一、安装图像标注工具labelmepip install labelme==3.6安装完成后在终端输入命令labelme,如果出现标注软件界面,则证明安装成功。二、图像标注首先获...原创 2021-12-05 14:57:07 · 10063 阅读 · 11 评论 -
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 · 4680 阅读 · 1 评论 -
深度学习图像分类数据集制作
在深度学习中,图像分类已然是一种初级任务。在计算机视觉领域,使用深度学习对图像进行高维特征提取,实现对图像的分类已经非常成熟。常见的深度学习模型,如lenet-5、AlexNet、VGG、Inception、Resnet等系列模型都可以实现图像分类任务。一般我们使用Tensorflow或者Pytorch构建深度学习模型,并使用cifar10、cifar100、Imagenet等数据集即可进行一个图像分类模型的训练。要解决实际问题,实现算法落地,就需要根据应用场景对我们需要...原创 2021-11-21 12:37:46 · 12938 阅读 · 0 评论 -
tensorflow实现宝可梦数据集迁移学习
目录一、迁移学习简介二、构建预训练模型1、调用内置模型2、修改模型3、构建模型三、导入数据和预处理1、设置batch size2、读取训练数据3、读取验证数据4、读取测试数据5、预处理四、模型训练1、设置early_stopping2、模型编译3、模型设置4、模型评估5、保存训练权重五、模型预测1、构建预测模型2、导入权重3、预测4、对比分析一、迁移学习简介迁移学习就是把预先定义好的模型,以及该模型在对应数据原创 2021-08-17 21:28:49 · 495 阅读 · 0 评论 -
深度学习tensorflow实现宝可梦图像分类
一、数据集简介宝可梦数据集(共1168张图像):bulbasaur(妙蛙种子,234)、charmander(小火龙,238)、mewtwo(超梦,239)、pikachu(皮卡丘,234)、squirtle(杰尼龟,223)。二、数据预处理通过pokmon.py批量读取图像路径,根据不同路径生成每张图像的路径和标签并打乱顺序。import os, globimport random, csvimport tensorflow as tfdef load_cs...原创 2021-08-08 15:25:17 · 2164 阅读 · 0 评论