thequitesunshine007
探索者
展开
-
Win10从零安装、训练、部署yolov5 6.x一条龙实战案例
Win10 64位;:英伟达GTX 1050TI(配置较低):pytorch 1.7.1(python 3.6),基于Anaconda环境.:包含3类案例,1) OpenCV DNN(C++ 、Python,使用CPU进行推理),若想通过 OpenCV DNN利用GPU进行推理,则必须编译支持CUDA的OpenCV库;本人 只有CPU版本的OpenCV 4.5.4,没有尝试CUDA版本的OpenCV推理。往往在工程部署中,设备端是没有GPU的,所以本人也不想侧重于GPU推理。原创 2022-12-25 21:46:05 · 564 阅读 · 1 评论 -
mAP@0.5与mAP@0.5:0.95的含义
在COCO数据集中,更关注预测框位置的准确性,AP值是针对多个IoU阈值的AP平均值,具体的就是在0.5 和0.95之间取10个IoU阈值(0.5、0.55、0.6 ..... 0.9、0.95)。目标检测问题中,算法通常输出一个预测框(bounding box)来标识检出目标的位置,要衡量这个预测框与目标的实际位置(ground truth)的准确度,可以使用IoU指标。我们如果把所有预测结果对样例进行排序,排在前面的是“最可能”的正例样本,以查准率为纵轴、查全率为横轴作图,得到一条”P-R曲线”。转载 2022-11-22 09:46:15 · 7861 阅读 · 0 评论 -
pytorch自定义图像分类训练+OpenCV部署实战项目案例
训练时:visdom等等插件,代码中需要什么包就执行对应的安装命令即可。模型部署及推理时:导出网络模型时安装onnx工具包、OpenCV4.5.4(C++部署)、VS2017(VS2019也可,VS2015没测试,应该也可以)原创 2022-11-11 22:16:26 · 1656 阅读 · 0 评论 -
基于OpenCV实现的图像拼接(配准)案例
-VS2015 C++-OpenCV 4.5.1-Windows 10 64位 Note: 两幅图像的拼接需要满足基本条件,一是图像本身要层次细节纹理丰富,不可单调重复(比如两张不同角度拍摄的棋盘网格图、重复单调的瓷砖墙/条纹等等是无法拼接的),二是两张图要有一定的重叠部分。1、对每幅图片进行特征点提取(AKAZE、sift、surf、ORB均可);2、对特征点进行描述和匹配;a、将一个点附近邻近点点采用K近邻算法归为一类点b、挑选出优秀的匹配点(good match);c、将匹配点连接在一起;3、进原创 2022-07-29 14:48:14 · 2370 阅读 · 1 评论 -
Pytorch学习系列之十二:OpenCV(C++)加载onnx分类模型进行推理
1 前言博客Pytorch学习系列之九:OpenCV加载onnx模型进行推理_thequitesunshine007的博客-优快云博客_opencv 加载onnx记载了python版本opencv加载onnx模型进行推理的方法。这里记录的是C++版本OpenCV加载onnx模型进行推理。2 代码#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include&l原创 2022-04-05 23:12:59 · 6416 阅读 · 0 评论 -
Anaconda中安装Pytorch、Pycharm中项目配置
以下两篇参考博客均为访问量2w+,收藏次数100+的不错文章!在此记录一下,方便以后装环境,免得查来查去!重要的是,亲测可行!Anaconda中安装Pytorch:参考:在Anaconda下安装Pytorch的超详细步骤_伏城无嗔的博客-优快云博客_anaconda pytorch但是这个博客有一个疏漏的地方就是他在安装pytorch之前并没有conda activate新建的环境(该博客中名为pytorch,使用Python版本是3.7)。所以完整的指令顺序应该如下:#切.原创 2022-01-21 16:16:56 · 1101 阅读 · 0 评论 -
Pytorch学习系列之十一:Visdom的使用方法
1,基本介绍类似于TensorBoard, facebook开源的visdom,非常优雅,支持numpy和torch,是一款很好用的训练可视化工具,可以用来追踪训练过程中的损失值、验证精度等等指标。自然地,该工具还可以做图片的可视化显示。Visdom采用CS架构,本身作为一个服务端(默认端口为8097,可以根据需要加上-p选项修改端口),在使用时,用户程序向服务端提供数据,在web端访问该服务,数据在web端被可视化展示(通过web-socket于前端通信)。2,安装方法python..原创 2021-11-30 21:03:53 · 1390 阅读 · 1 评论 -
继承自nn.Module的自定义Flatten模块
在Pytorch中构建网络时,nn.Sequential容器只能传入继承自nn.Module的模块(参数),搭建一个流水线式的神经网络。就一个简单的打平flatten操作来说,比如要将一个(N,C,H,W)的输入打平为 (N ,C*H*W),其实就是一行简单的 x = x.view(x,size(0), -1)但是这句话不能单独加入到nn.Sequential容器中。 而nn.Module中也确实没这个打平flatten操作的子模块。所以就必须自定义一个,便于直接放入nn.Sequentia..原创 2021-11-09 15:10:39 · 1430 阅读 · 0 评论 -
如何防止过拟合(OverFitting)
声明!内容来源:如何防止过拟合。什么是过拟合为了得到一致假设而使假设变得过度复杂称为过拟合(overfitting),过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差。也就是说模型的泛化能力弱。在很多问题中,我们费心费力收集到的数据集并不能穷尽所有的状态,而且一般训练得到的模型被用来预测未知数据的结果,模型虽然在训练集上效果很好,但是在实际应用中效果差,就说明这个模型训练的并不是很成功,还需要改进。就譬如下方的图像中,左边黑色直线在一定程度拟合数据排列,而蓝紫色的曲线就是照顾到每一个原创 2021-11-02 11:02:08 · 524 阅读 · 0 评论 -
Pytorch学习系列之十:如何确定合适的epoch数、在加载的模型基础上继续训练
1,使用背景当有以下两种情况时:1) 不知道训练的epoch选取为何值时。过小,训练不充分,泛化能力差; 过大,训练过度,导致过拟合。所以需要动态观察每个epoch后,模型在验证集(也可以不严谨的说是测试集)上的精度,选取精度最大的epoch作为最终的训练结果。2)在加载的模型基础上继续训练。在训练模型的时候可能会因为一些问题导致程序中断,或者常常需要观察训练情况的变化来更改学习率等参数,这时候就需要加载中断前保存的模型,并在此基础上继续训练。2,实战代码本文以CIFAR10数据原创 2021-10-26 17:12:01 · 10003 阅读 · 0 评论 -
Pytorch学习系列之九:OpenCV加载onnx模型进行推理
0. 为什么选着OpenCV进行推理 按道理,使用OpenVINO推理套件(引擎)进行优化加速推理,或者其他推理套件进行推理,比如TensorRT等等。OpenVINO是英特尔推出的一款全面的工具套件,用于快速部署应用和解决方案,支持计算机视觉的CNN网络结构超过150余种。 但引入推理套件(引擎)势必带来额外的工作量,在对推理速度要求不高的情况下,使用OpenCV自带的DNN模块已经足够满足需求了,且能做到轻量化部署,减少对第三方平台的依赖。随着版本的更迭,OpenCV...原创 2021-10-12 09:46:25 · 5307 阅读 · 5 评论 -
pytorch标准化(Batch Normalize)中计算数据集的均值和方差
1,浅谈深度学习训练中数据规范化(Normalization)的重要性为什么要Normalization? 请参考浅谈深度学习训练中数据规范化(Normalization)的重要性 - Oldpan的个人博客原创 2021-09-26 15:12:32 · 1519 阅读 · 0 评论 -
为何pytorch预训练的resnet模型对输入图片的大小无要求?
原本的ResNet18模型对于输入的训练图像是有严格的大小限制的,规定的大小为224*224。但是最近发现Pytorch中预训练的resnet模型时,输入图片的大小为200*200或者是其他尺寸时也可以。 于是就好奇到底是什么原因。1,RESNET-18网络图示理解17个卷积层(conv)+1个全连接层(fc)提示: BN 就是批量归一化 RELU 就是**函数 lambda x:x 这个函数的意...原创 2021-09-23 14:37:56 · 11286 阅读 · 1 评论 -
pytorch里transforms.ToTensor和Normalize()
Pytorch官方文档:1, change H W C to C H W;2, 将【0,255】映射为【0,1】原创 2021-09-20 00:12:46 · 684 阅读 · 0 评论 -
pytorch保存、加载模型, 并将网络模型.pt保存为ONNIX
原始的代码如下:import torchif __name__ == "__main__": # 保存为onnx格式 model = torch.load("E:/age_gender_model.pt") model.cpu() dummy_input1 = torch.randn(1, 3, 64, 64) torch.onnx.export(model, (dummy_input1), "age_gender_model.onnx", verbose=Tru原创 2021-08-02 00:27:58 · 3080 阅读 · 0 评论 -
loss.backward()引发“RuntimeError: Found dtype Double but expected Float”
解决办法是将Tensor转化为想要的torch.float32类型。具体为: 在将Tensor送入损失函数(mse_loss,cross_loss)之前,将Tensor转化为想要的torch.float32类型age_batch = age_batch.view(-1, 1).to(torch.float32) # 损失函数 mse_loss = torch.nn.MSELoss() cross_loss = torch.nn.CrossEntropyLoss()原创 2021-07-30 00:10:46 · 5037 阅读 · 0 评论 -
OPENVINO的安装(2021版)与环境配置 (C++配置、python配置)
下载网址:https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit.html选择操作系统,发布版本,安装类型等等,最后点击Download原创 2021-07-24 17:58:10 · 6125 阅读 · 13 评论 -
什么是全局平均池化,全局最大池化
下面举个例子,假如最后的一层的数据是10个6*6的特征图,global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值。即对于每一层的6x6=36个像素点,计算这36个像素点的均值(最大值),由于共有10层,所以共得到10个数据。这样10 个特征图就会输出10个数据点,将这些数据点组成一个1*10的向量的话,就成为一个特征向量,就可以送入到softmax的分类中计算。...原创 2021-07-17 22:37:34 · 15246 阅读 · 2 评论 -
Pytorch学习系列之八:迁移学习
注:来源于https://www.pytorch123.com/ThirdSection/TransferLearning/#8,本人在理解的基础上做了一些注释。实际中,基本没有人会从零开始(随机初始化)训练一个完整的卷积网络,因为相对于网络,很难得到一个足够大的数据集[网络很深, 需要足够大数据集]。通常的做法是在一个很大的数据集上进行预训练得到卷积网络ConvNet, 然后将这个ConvNet的参数作为目标任务的初始化参数或者固定这些参数。转移学习的两个主要场景:微调Convnet:使用预训练的网原创 2021-07-13 17:13:05 · 188 阅读 · 0 评论 -
Pytorch中transforms.RandomResizedCrop使用说明
加载数据训练集数据扩充(数据增强)和归一化。数据扩充(数据增强)的意义在于通过人为的随机范围裁剪,缩放,旋转等操作,增大训练集中的数据多样性、全面性,进而提高模型的泛化能力。#训练集数据扩充和归一化#在验证集上仅需要归一化data_transforms = { 'train': transforms.Compose([ transforms.RandomResizedCrop(224), #随机裁剪一个area然后再resize transforms.Rand原创 2021-07-13 16:36:41 · 11573 阅读 · 0 评论 -
pip命令行安装pytorch GPU版本
pip install torch==1.7.0+cu101 torchvision==0.8.0+cu101 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html原创 2021-07-12 10:01:44 · 7768 阅读 · 0 评论 -
Pytorch学习系列之七: 数据加载和处理
说明PyTorch提供了许多工具来简化和希望数据加载,使代码更具可读性。全部代码如下,代码量还是有一些的,重点是注释部分可以帮助理解!!# 本文参考借鉴于https://www.pytorch123.com/ThirdSection/DataLoding/# <PyTorch之数据加载和处理>'''1.下载安装包scikit-image:用于图像的IO和变换pandas:用于更容易地进行csv解析'''# from __future__ import print_fun原创 2021-07-05 16:13:59 · 210 阅读 · 0 评论 -
Pytorch学习系列之六: 数据并行处理及模型文件批量自动加载(Dataset, DataLoader用法)
说明将学习如何用 DataParallel 来使用多 GPU。 通过 PyTorch 使用多个 GPU 非常简单。 device = torch.device("cuda:0") model.to(device)然后,你可以复制所有的张量到 GPU:mytensor = my_tensor.to(device)请注意,只是调用 my_tensor.to(device) 返回一个 my_tensor 新的复制在GPU上,而不是重写 my_tensor。你需要分配给他一个新的张量并且在 GPU原创 2021-07-05 10:46:59 · 444 阅读 · 0 评论 -
Pytorch学习系列之五 :OpenCV加载pytorch所生成的ONNX模型进行推理(彩蛋: pyttsx3文字转语音包的使用)
import cv2 as cvimport numpy as npimport pyttsx3 #文字转语音的功能包def mnist_onnx_demo(): mnist_net = cv.dnn.readNetFromONNX("cnn_mnist.onnx") image = cv.imread("C:/Users/Administrator/Desktop/666.png") gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)原创 2021-07-04 17:56:17 · 798 阅读 · 0 评论 -
Pytorch学习系列之四 :卷积神经网络实现Minist数据集手写数值识别(导出为ONNX模型)
全部的逻辑及解释都在代码及其注释之中import torch as tfrom torch.utils.data import DataLoaderimport torchvision as tvimport cv2 as cvimport numpy as npimport os'''$ Notice: torchvision 数据集的输出是范围在[0,1]之间的 PILImage,我们将他们转换成归一化范围为[-1,1]之间的张量 Tensors。 $ transforms.To原创 2021-07-04 15:59:24 · 408 阅读 · 0 评论 -
Pytorch学习系列之三 :动手实现一个图像分类卷积神经网络
概述对于本教程,我们将使用CIFAR10数据集,它包含十个类别:‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’。CIFAR-10 中的图像尺寸为3332,也就是RGB的3层颜色通道,每层通道内的尺寸为3232。训练一个图像分类器我们将按次序的做如下几步:1,使用torchvision加载并且归一化CIFAR10的训练和测试数据集2,定义一个卷积神经网络3,定义一个损失原创 2021-07-02 18:35:23 · 568 阅读 · 1 评论 -
Pytorch学习系列之一 : Numpy基础操作
import numpy as npimport torch定义numpy数组a = np.array([1, 2, 3, 4, 5, 6])b = np.array([8, 7, 6, 5, 4, 3])print(a.shape, b.shape)print(a)reshape改变维度aa = np.reshape(a, (3, 2))bb = np.reshape(b, (1, 1, 1, 6))print(aa, aa.shape)print(bb, bb.shape)压缩成原创 2021-06-26 16:22:12 · 154 阅读 · 0 评论 -
Pytorch学习系列之二 : Opencv基础操作
import cv2 as cvimport numpy as npimage = cv.imread(“C:/Users/Administrator/Desktop/1234.jpg”)cv.imshow(“input”, image)H,W,C = image.shape #默认按照HWC排列print(H,W,C)#变成 C H Wblob = image.transpose(2,0,1)print(blob.shape)#变成灰度图gray = cv.cvtColor(image原创 2021-06-26 12:37:26 · 349 阅读 · 0 评论