当前位置: 首页 > news >正文

12.02 深度学习-卷积

# 卷积 是用于图像处理 能够保存图像的一些特征 卷积层 如果用全连接神经网络处理图像 计算价格太大了 图像也被转为线性的对象导致失去了图像的空间特征 只有在卷积神经网络cnn的最后一层使用全连接神经网络

# 图像处理的三大任务

# 目标检测 对图像中的目标进行框出来

# 图像分割

# 图像分类

# 卷积核的参数是要变的 这个值有个最优解 线性回归求这个最优解

# 卷积的计算 先卷再积 卷 左右上下移动 积 对应位置矩阵 对应位置相乘再相加 最后得到一个特征矩阵跟卷积结果一样的size

# import os

# current_path=os.path.dirname(__file__) #  将脚本文件所在的目录路径赋值给变量 current_path, 所在文件夹路径

# path2=os.path.relpath(路径1) # 获取路径1 文件到当前文件的相对路径

# 在神经网络中加入卷积层 为卷积神经网络 cnn

# cv2读 图像 然后 torch创建卷积核

import os

import cv2

from torch import nn

import torch

import torch.nn.functional as F

import matplotlib.pyplot as plt

def demo1():

    path="assets/1.png"

    # print(path)

    # 读取图像

    img=cv2.imread(path)

    # 创建卷积核 一个卷积核就是卷积层

    conv=nn.Conv2d(in_channels=3,out_channels=1,kernel_size=3,stride=1,padding=0)  # 传入输入图像的通道数 和输出的特征图数量 卷积核大小   步长(卷积核移动的规格) 填充

    # 这个会自动初始化一个卷积和的参数

    # conv(图像tensor数组) 传入图像进行卷积 得到特征图 tensor 的应该为 n,c,h,w 或者c,h,w

    # 传入图像的通道数应该跟in_channels一致 且数据类型为tensor.float

    # 转为tensor,并归一化到[0, 1]  

    img = torch.tensor(img, dtype=torch.float32) / 255.0

   

    # 转换维度

    img=img.permute(2,0,1).unsqueeze(0)

    # print(img.shape)        

    # 卷积

    img=conv(img) # 卷积操作的tensor 必须为float

    # print(img.shape)

    # 用 plt 显示出来

    plt.imshow(img[0][0].detach().numpy(),cmap="gray")

    plt.show()

    pass

def demo2():

    # 一个四通道的图像 通过卷积核处理 这个卷积核应该也有四个通道 对应处理rgba 也可以说是4个卷积核吧 然后 每个通道进行卷积 然后加起来 为一个特征图 输出多个特征图 就要有多个卷积核每个卷积核参数不一样

    # 然后再卷积的话 上面输出的特征图数量就会被下一个卷积和当做通道

    # 如果 一个四通道的卷积核 核大小为3 且有偏置 如果输出32和特征图 那么有 32*4*3*3+32 个参数 特征图数量*每个卷积核的通道数 *卷积核的规格 +偏置数 每一个卷积核对应1个偏置

    # 输出多个特征图 后面每一个特征图 对图像注意的地方不同

    # 边缘填充: 通过上面的卷积计算,我们发现最终的特征图比原始图像要小,如果想要保持图像大小不变, 可在原图周围添加padding来实现。更重要的,边缘填充还更好的保护了图像边缘数据的特征。

    # 让边缘的数据利用更充分 在原图上进行边缘填充

   

    # 卷积结果 特征图的大小的计算 (W-F+2P) / S +1  W:图像的大小 W*W 卷积核大小F*F 边缘填充 P 步长:S 宽高不一样就各自算各自的 宽高 都带一遍公式


 

    pass

# 构建卷积神经网络

def demo3():

    class MyNet(nn.Module):

        def __init__(self, *args, **kwargs):

            super().__init__(*args, **kwargs)

            # 卷积层

            self.conv1=nn.Conv2d(in_channels=1,out_channels=32,kernel_size=3,stride=1,padding=0)

            self.conv2=nn.Conv2d(in_channels=32,out_channels=128,kernel_size=3,stride=1,padding=0)

            self.conv3=nn.Conv2d(in_channels=128,out_channels=512,kernel_size=3,stride=1,padding=0)

            # 线性层 线性层的输入是 特征的数量 特征的总数量是不是 图片数乘图片规格 表示每一个特征图的每个点啊

            self.fc=nn.Linear(512*26*26,10)

        # 前向传播

        def forward(self,x):

            # 每一层用激活函数激活

            x=F.relu(self.conv1(x))

            x=F.relu(self.conv2(x))

            x=F.relu(self.conv3(x))

            # 线性层全连接输出 先展平为2维 因为线性层输入是一个二维的矩阵

            x=x.view(x.shape[0],-1) # x.size(0):这部分获取x的第0维的大小。在PyTorch中,张量的维度通常按照以下顺序表示

            # x.view(x.size(0),-1):这个操作将x重塑为一个新的形状,其中第0维(batch_size)保持不变,而其他维度被“展平”(flattened)为一个长向量。这是在很多神经网络架构中常见的操作,

            # 特别是在将卷积层的输出传递给全连接层(fully connected layer)之前。因为全连接层期望的输入是一个二维张量,其中第一维是批次大小,第二维是每个样本的特征数量。

            return F.softmax(self.fc(x))

    net1=MyNet()

    input=torch.randn(4,1,32,32,dtype=torch.float32)

    output=net1.forward(input)

    print(output)

# 卷积参数共享

# 卷积神经网络只考虑卷积核的参数 以卷积核为单位 全链接 以每一个节点为单位而且还要与上层全链接 参数个数直接爆炸          

# 卷积就是把这些数据放到多个维度上单维度的数量就少了

if __name__=="__main__":

    # demo1()

    # demo2()

    demo3()

    pass

相关文章:

12.02 深度学习-卷积

# 卷积 是用于图像处理 能够保存图像的一些特征 卷积层 如果用全连接神经网络处理图像 计算价格太大了 图像也被转为线性的对象导致失去了图像的空间特征 只有在卷积神经网络cnn的最后一层使用全连接神经网络 # 图像处理的三大任务 # 目标检测 对图像中的目标进行框出来 # 图…...

MySQL 主从同步一致性详解

MySQL主从同步是一种数据复制技术,它允许数据从一个数据库服务器(主服务器)自动同步到一个或多个数据库服务器(从服务器)。这种技术主要用于实现读写分离、提升数据库性能、容灾恢复以及数据冗余备份等目的。下面将详细…...

Spring源码导入idea时gradle构建慢问题

当我们将spring源码导入到idea进行构建的时候,spring采用的是gradle进行构建,默认下注在依赖是从https://repo.maven.apache.org会特别慢,需要改为国内的镜像地址会加快速度。 将项目中build.gradle配置进行调整: repositories …...

Dockerfile 安装echarts插件给java提供服务

java调用echarts插件,生成图片保存到磁盘然后插入到pptx中报表。 Dockerfile文件内容: #基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8 FROM docker.io/centos:centos7 #暴露端口 EXPOSE 9311 # 避免centos 日志输出 …...

Springboot小知识(1):启动类与配置

一、启动类(引导类) 在通常情况下,你创建的Spring应用项目都会为你自动生成一个启动类,它是这个应用的起点。 在Spring Boot中,引导类(也称为启动类,通常是main方法所在的类)是整个…...

[CISCN 2019华东南]Web11

[CISCN 2019华东南]Web11 给了两个链接但是都无法访问 这里我们直接抓包试一下 我们插入X-Forwarded-For:127.0.0.1 发现可以修改了右上角的IP地址,从而可以进行注入 {$smarty.version} 查看版本号 if标签执行PHP命令 {if phpinfo()}{/if} 查看协议 {if system(…...

Cypress内存溢出奔溃问题汇总

内存溢出报错信息 <--- Last few GCs ---> [196:0xe58001bc000] 683925 ms: Scavenge 1870.7 (1969.9) -> 1865.6 (1969.9) MB, 6.07 / 0.00 ms (average mu 0.359, current mu 0.444) task; [196:0xe58001bc000] 683999 ms: Scavenge 1872.4 (1969.9) -> 1867.1…...

树莓派4B--OpenCV安装踩坑

报错&#xff1a; Source directory: /tmp/pip-install-pv7l9r25/opencv-python_08fdf5a130a5429f89b0e0eaab39a329 Working directory: /tmp/pip-install-pv7l9r25/opencv-python_08fdf5a130a5429f89b0e0eaab39a329/_skbuild/linux-armv7l-3.7/cmake-build Please check the i…...

电子电气架构 --- 面向服务的汽车诊断架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…...

Pytest --capture 参数详解:如何控制测试执行过程中的输出行为

--capture 选项用于控制测试用例执行过程中标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;的捕获行为。 --capture 的选项值&#xff1a; fd&#xff08;默认&#xff09; 捕获文件描述符级别的输出&#xff08;stdout 和 stderr&#x…...

IS-IS的原理

IS-IS的基本概念&#xff1a; 概述&#xff1a; IS-IS&#xff0c;中间系统到中间系统&#xff0c;是ISO国际标准化组织为它的无连接网络协议设计的一种动态路由协议 IS-IS支持CLNP网络和IP网络&#xff0c;采用数据链路层封装&#xff0c;区别于ospf只支持IP网络&#xff0…...

C++(4个类型转换)

1. C语言中的类型转换 1. 隐式 类型转换&#xff1a; 具有相近的类型才能进行互相转换&#xff0c;如&#xff1a;int,char,double都表示数值。 2. 强制类型转换&#xff1a;能隐式类型转换就能强制类型转换&#xff0c;隐式类型之间的转换类型强相关&#xff0c;强制类型转换…...

Ubuntu20.04安装NVIDIA显卡驱动

Ubuntu20.04安装NVIDIA显卡驱动 参考资料&#xff1a;https://blog.csdn.net/weixin_39244242/article/details/136282614?fromshareblogdetail&sharetypeblogdetail&sharerId136282614&sharereferPC&sharesourceqq_37397652&sharefromfrom_link 成功配置…...

速盾:介绍一下高防cdn的缓存响应事什么功能?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种基于分布式缓存技术的网络加速服务&#xff0c;能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先&#xff0c;高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…...

Nuclei-快速漏洞扫描器

Nuclei-快速漏洞扫描器 声明 学习内容来自 B 站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 ✍&#x1f3f…...

linux网络抓包工具

linux网络抓包工具 一、tcpdump1.1 基本用法1.2 龙芯平台实例操作 二、wireshark2.1 主要功能2.2 龙芯平台实例操作 一、tcpdump tcpdump 指令可列出经过指定网络界面的数据包文件头&#xff0c;可以将网络中传送的数据包的 “头” 完全截获下来提供分析。它支持针对网络层、协…...

详解桥接模式

引言 在开发过程中&#xff0c;可能会遇到系统设计有多种维度变化的情况&#xff0c;比如我们想画一幅五彩斑斓的画&#xff0c;需要用到12个颜色&#xff0c;但是需要粗细不同的线条&#xff08;粗、中、细&#xff09;&#xff0c;如果用蜡笔&#xff0c;就需要粗中细三种蜡笔…...

探索AI新世界!热门工具与学习资源免费获取

​抖知书老师推荐&#xff1a; 人工智能技术的迅速发展让人们既充满期待又有些迷茫。有人担忧被AI技术取代&#xff0c;有人却积极拥抱这场科技浪潮。无论你处于哪种心态&#xff0c;人工智能已经深入到我们生活的方方面面。如果你希望轻松掌握最新的AI工具与动态&#xff0c;…...

vue3项目搭建-6-axios 基础配置

axios 基础配置 安装 axios npm install axios 创建 axios 实例&#xff0c;配置基地址&#xff0c;配置拦截器,目录&#xff1a;utils/http.js 基地址&#xff1a;在每次访问时&#xff0c;自动作为相对路径的根 // axios 基础封装 import axios from "axios";…...

Django 视图层

from django.shortcuts import render, HttpResponse, redirectfrom django.http import JsonResponse1. render: 渲染模板 def index(request):print(reverse(index))return render(request, "index.html")return render(request, index.html, context{name: lisi})…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...