<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jameschen9051的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jameschen9051</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jameschen9051]]></copyright><item><title><![CDATA[图像超分辨率算法ESRGAN原理及应用]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/136635126</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/136635126</guid><author>jameschen9051</author><pubDate>Mon, 11 Mar 2024 21:09:02 +0800</pubDate><description><![CDATA[图像超分辨率算法是一种用于增加图像分辨率的算法，与传统的图像缩放算法不同的是，超分算法在放大图像的同时根据原图纹理生成更多细节，确保图像在放大后仍然有清晰的纹理细节。3、训练数据：由于我们很难得到同一场景下低分辨率图像和高分辨率图像，因此模型训练数据通常由原始高分辨率图像组成，对原始图像进行缩放和加入噪声等方式得到低分辨率图像；4、训练过程：模型训练过程，生成模型对低分辨率重建得到高分辨率图像后与原始高清图像计算loss，通过大量的对抗训练得到有效的生成模型。4、降低图像噪点，提升画质。]]></description><category></category></item><item><title><![CDATA[AI影像修复及图像超分辨率]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/133843866</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/133843866</guid><author>jameschen9051</author><pubDate>Sun, 15 Oct 2023 16:25:42 +0800</pubDate><description><![CDATA[AI图像修复软件主要包含人脸修复、图像超分等功能。人脸修复功能主要对图像上的人脸进行识别和修复，从模糊、缺损、噪声图像中恢复高质量人脸图像。图像超分功能主要对图像进行超分辨率重建，将低分辨率图像处理为高分辨率图像。选择图像文件和输出路径，如果需要对整张图像进行超分处理，可以勾选背景超分，然后选择2倍或4倍超分，完成设置后点击“处理”按钮开始运行图像修复。功能—>图像超分，启动图像超分界面。选择图像文件和输出路径，选择2倍或4倍超分，完成设置后点击“处理”按钮开始运行图像超分。]]></description><category></category></item><item><title><![CDATA[pytorch保存、加载和解析模型权重]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/131683677</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/131683677</guid><author>jameschen9051</author><pubDate>Wed, 12 Jul 2023 15:57:24 +0800</pubDate><description><![CDATA[以Conv2d算子为例进行测试，首先设定卷积层输入为3，输出为3，卷积核为3*3，偏置bias为False。通过numpy随机一个3*3*3*3的矩阵作为自定义参数，将参数转换为Tensor以后，添加到dict中，然后通过load_state_dict将参数加载进网络。当加载某个模型文件后，如果需要查看模型中的算子和参数，可以将模型解析为字典，然后逐一打印。以lent5为例，将lenet5模型保存为权重文件，然后重新加载权重文件并解析其中每一层的参数。2、解析模型权重文件。]]></description><category></category></item><item><title><![CDATA[yolov8目标检测onnx推理及后处理实现]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/131069271</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/131069271</guid><author>jameschen9051</author><pubDate>Tue, 06 Jun 2023 15:45:48 +0800</pubDate><description><![CDATA[YOLOv8输出shape跟yolo之前系列模型（YOLOv5输出为[25200,85]），有较大差异，查找一番后，发现yolov8在两个方面做了调整，一是取消了anchor（因为每个anchor对应3个bbox），因此总的bbox数降低三倍；编写推理脚本前可以通过netron工具查看模型输入输出，可以看到yolov8输入为[1,3,640,640]，输入为[1,84,8400]。YOLOv8n预训练模型为pytorch的pt格式，大小为6.2M，下载完成后，通过pytorch转换为onnx。]]></description><category></category></item><item><title><![CDATA[YOLOv7迁移昇腾NPU推理测试]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/130847875</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/130847875</guid><author>jameschen9051</author><pubDate>Wed, 24 May 2023 15:30:04 +0800</pubDate><description><![CDATA[3、模型转换，使用昇腾atc模型转换工具将onnx模型转换为om格式。主要步骤：acl初始化（设置device、创建context）、加载模型（获取模型id、模型描述、根据模型信息在npu申请输入输出内存）、执行推理（拷贝输入数据、执行推理、拷贝输出数据）。2、使用源码脚本将模型导出为onnx格式：python3 export.py --weights yolov7.pt --grid --simplify --topk-all 100 --img-size 640 640 --max-wh 640。]]></description><category></category></item><item><title><![CDATA[图像语义分割网络FCN(32s、16s、8s)原理及MindSpore实现]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/128385166</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/128385166</guid><author>jameschen9051</author><pubDate>Tue, 20 Dec 2022 15:14:31 +0800</pubDate><description><![CDATA[当图像进入神经网络，第一个卷积层将图像由三通道转换为96通道featuremap，第二个卷积层转换为256个通道，第三个卷积层384个通道，直到最后一个卷积层变为21个通道，每个通道对应不同分割类型。FCN模型结构可以根据分割细粒度使用FCN32s、FCN16s、FCN8s等结构，32s即从32倍下采样的特征图恢复至输入大小，16s和8s则是从16倍和8倍下采样恢复至输入大小，当然还可以使用4s、2s结构，数字越小使用的反卷积层进行上采样越多，对应模型结构更加复杂，理论上分割的效果更精细。]]></description><category></category></item><item><title><![CDATA[mindspore实现自定义CNN图像分类模型]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/127552287</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/127552287</guid><author>jameschen9051</author><pubDate>Thu, 27 Oct 2022 14:52:39 +0800</pubDate><description><![CDATA[该卷积神经网络需要用到的算子分别为卷积层nn.Conv2d、激活函数nn.Relu、池化层nn.Maxpool2d、打平操作nn.Flatten、全连接层nn.Dense。这里用的自定义卷积神经网络由4层卷积+2层全连接组成，每个卷积层后接一个激活函数和最大池化层，每个池化层通过设置步长为2对特征图进行尺寸减半，因此在经过四层卷积后特征图变为输入的1/16，也就是6*6。在卷积层后接一个打平操作，将特征图从二维转换为一维，特征图打平以才能后进入全连接层，最后一层全连接层输出通道数与分类类别数一致。]]></description><category></category></item><item><title><![CDATA[MindSpore系列一加载图像分类数据集]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/125386924</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/125386924</guid><author>jameschen9051</author><pubDate>Tue, 21 Jun 2022 11:08:40 +0800</pubDate><description><![CDATA[MindSpore提供了大部分常用数据集和标准格式数据集的加载接口，可以直接使用mindspore.dataset中对应的数据集加载类进行数据加载，如MNIST、CIFAR-10、CIFAR-100、VOC、COCO、ImageNet、CelebA、CLUE等， 以及业界标准格式的数据集，包括MindRecord、TFRecord、Manifest等。常用数据集加载以cifar10为例，首先将cifar10数据集下载并解压到本地。1、加载cifar10数据集：


用create_dict_iterator]]></description><category></category></item><item><title><![CDATA[YOLO系列目标检测后处理-非极大值抑制]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/124868274</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/124868274</guid><author>jameschen9051</author><pubDate>Tue, 31 May 2022 15:57:40 +0800</pubDate><description><![CDATA[非极大值抑制（NMS）经常应用于各种目标检测模型中，使用NMS可以有效地剔除目标检测结果中多余的检测框，保留最合适的检测框。

以YOLOv5为例，模型输入为640*640时，推理输出结果在20*20,40*40，80*80三个尺度上的预测框总和为20*20*3+,40*40*3+80*80*3=25200，每个预测框包含检测框中心xy坐标，预测框宽高wh，预测框置信度，每个分类对应的置信度。要从这上万个预测框中取出正确的检测结果就需要用到非极大值抑制。

...]]></description><category></category></item><item><title><![CDATA[Pytorch中的grid_sample算子功能解析]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/124714759</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/124714759</guid><author>jameschen9051</author><pubDate>Wed, 11 May 2022 17:25:23 +0800</pubDate><description><![CDATA[近期在一个模型从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...]]></description><category></category></item><item><title><![CDATA[基于mindspore的口罩检测训练与在线推理]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/123505553</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/123505553</guid><author>jameschen9051</author><pubDate>Tue, 15 Mar 2022 16:25:59 +0800</pubDate><description><![CDATA[mindspore安装地址：https://www.mindspore.cn/install

 mindspore开源模型库：https://gitee.com/mindspore/models

 测试平台为昇腾Atlas800训练服务器，Ubuntu18.04系统，搭载昇腾910AI加速芯片，FP16算力为320T。

 数据集为VOC_MASK口罩数据集，在使用数据集之前需要对数据集文件进行转换，将voc标注文件由xml转为coco的j...]]></description><category></category></item><item><title><![CDATA[resnet18到resnet152模型pytorch实现]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/123379830</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/123379830</guid><author>jameschen9051</author><pubDate>Wed, 09 Mar 2022 17:16:25 +0800</pubDate><description><![CDATA[resnet在深度学习领域的重要性不言而喻，自从15年resnet提出后，被各种深度学习模型大量引用。得益于其残差结构的设计，使得深度学习模型可以训练更深层的网络。常见的resnet有resnet18、resnet34、resnet50、resnet101、resnet152几种结构，resnet残差网络由一个卷积块和四个残差块组成，每个残差块包含多个残差结构。从残差结构上看，resnet18和resnet34结构近似，使用相同的残差结构，仅在残差结构数量上有区别，都是使用两个卷积层加一个残...]]></description><category></category></item><item><title><![CDATA[VGG模型构建与实现]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122861715</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122861715</guid><author>jameschen9051</author><pubDate>Thu, 10 Feb 2022 15:22:46 +0800</pubDate><description><![CDATA[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.]]></description><category></category></item><item><title><![CDATA[AlexNet网络构建与训练]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122844746</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122844746</guid><author>jameschen9051</author><pubDate>Wed, 09 Feb 2022 17:01:15 +0800</pubDate><description><![CDATA[2012年AlexNet横空出世，正式将深度学习推向高潮。如今10年过去，整个深度学习生态已经发展到非常庞大。这里使用pytorch进行AlexNet网络实现及在图像分类任务上的训练过程。

 AlexNet是在LeNet基础上发展而来，模型结构更深。LeNet5由2层卷积层加3层全连接层构成，AlexNet则在此基础上将卷积层增加到5层，网络深度达到了8层，并且增加了Dropout，将池化层由平均池化换成最大池化，激活函数改为Relu，整体参数量达到千万级。

...]]></description><category></category></item><item><title><![CDATA[自定义LeNet5，开启你的炼丹之路]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122640557</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122640557</guid><author>jameschen9051</author><pubDate>Sat, 22 Jan 2022 17:30:47 +0800</pubDate><description><![CDATA[LeNet5是卷积神经网络的开山之作，在手写数字识别上达到了出色的效果。LeNet5具有5层神经网络，其中2层卷积神经网络，3层全连接。两层卷积神经网络之后分别接了一个激活层和一个平均池化层。这里通过对lenet进行解析和修改，实现对自定义图像数据的分类。

 首先来解析lenet5手写数字识别模型：

 第一个卷积层：输入图像为32*32大小的灰度图，图像通道为1，宽高为32*32，卷积层包含6个卷积核，每个卷积核大小为5*5，经过第一个卷积层后，生成通道为...]]></description><category></category></item><item><title><![CDATA[使用onnxruntime进行yolov5s模型推理实现]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122360989</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122360989</guid><author>jameschen9051</author><pubDate>Fri, 07 Jan 2022 11:41:28 +0800</pubDate><description><![CDATA[首先，使用onnxruntime模型推理比使用pytorch快很多，所以模型训练完后，将模型导出为onnx格式并使用onnxruntime进行推理部署是一个不错的选择。接下来就逐步实现yolov5s在onnxruntime上的推理流程。

1、安装onnxruntime

pip install onnxruntime

2、导出yolov5s.pt为onnx，在YOLOv5源码中运行export.py即可将pt文件导出为onnx。

3、使用onnx进行推理，这一步只能获取模型推理产生的候...]]></description><category></category></item><item><title><![CDATA[YOLOv5训练coco128数据集流程]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122305964</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122305964</guid><author>jameschen9051</author><pubDate>Tue, 04 Jan 2022 16:34:08 +0800</pubDate><description><![CDATA[一、安装pytorch

1、创建虚拟环境

 使用Anaconda安装，建议先创建一个虚拟环境。启动Anaconda Prompt，在命令行输入：

 conda create -name torch python==3.7.11

2、安装pytorch

 进入pytorch官网，根据需要选择系统、安装包、语言和计算平台。

 通过conda安装CPU版pytorch：

 conda install pytorch to...]]></description><category></category></item><item><title><![CDATA[砍掉九成代码，重构并简化YOLOv5图像目标检测推理实现]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122217906</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122217906</guid><author>jameschen9051</author><pubDate>Wed, 29 Dec 2021 16:10:36 +0800</pubDate><description><![CDATA[YOLOv5官方开源代码给出了完成的推理实现，但过于封装，只能通过修改配置参数对指定文件夹下图像和视频进行推理，而且三百多行的推理代码也显得过于冗长。如果想要在项目上进行部署应用，显然需要更高的灵活性。

这里就用单张图像目标检测来重构YOLOv5的推理代码。

依赖项：OpenCV、numpy、pytorch、models文件夹下experimental.py、utils文件夹下general.py、训练结果yolov5s.pt文件。

 对于图...]]></description><category></category></item><item><title><![CDATA[深度学习常见概念解析]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122177266</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122177266</guid><author>jameschen9051</author><pubDate>Mon, 27 Dec 2021 17:45:31 +0800</pubDate><description><![CDATA[1、损失函数loss

 用于定义网络输出结果与正确结果之间的误差的函数，常用损失函数为均方差（MSE）和交叉熵（Cross Entropy）。一般均方差用于回归问题，交叉熵用于分类问题。

2、梯度

 梯度下降：让损失函数沿着负梯度方向更新神经网络参数，使得损失函数不断减小，达到优化网络模型的目的。梯度下降方法有全局梯度下降、随机梯度下降和小批量梯度下降，常用小批量梯度下降方法。

 梯度消失：神经网络训练过程中，loss非常小，导致参数难以更新，即梯度消...]]></description><category></category></item><item><title><![CDATA[OpenCV图像处理基础操作汇总]]></title><link>https://blog.youkuaiyun.com/jameschen9051/article/details/122156729</link><guid>https://blog.youkuaiyun.com/jameschen9051/article/details/122156729</guid><author>jameschen9051</author><pubDate>Sun, 26 Dec 2021 16:19:59 +0800</pubDate><description><![CDATA[1、使用opencv读写图像

OpenCV支持jpg、png、tif等格式图像读取。


import cv2

import matplotlib.pyplot as plt

path = ‘lena.jpg’

img = cv2.imread(path)

cv2.imwrite(‘lena1.jpg’, img)

2、BGR转RGB

opencv是按照bgr方式读取图像，而plt按照rgb格式显示图像，因此会出现显示异常。为了正常显示，需要进行顺序转换，由BGR转为RGB。

使用openc]]></description><category></category></item></channel></rss>