视觉处理基础1

news2024/12/23 14:48:09

目录

一、CNN

1. 概述

1.1 与传统网络的区别

1.2 全连接的局限性  

1.3 卷积思想

1.4 卷积的概念

1.4.1 概念

1.4.2 局部连接

1.4.3 权重共享

2. 卷积层

2.1 卷积核

2.2 卷积计算

2.3 边缘填充

2.4 步长Stride

2.5 多通道卷积计算  

2.7 特征图大小计算方法

2.9 卷积参数共享


一、CNN

视觉处理三大任务:图像分类、目标检测、图像分割

1. 概述

卷积神经网络Convolutional Neural Network,CNN)是一种专门用于处理具有网格状结构数据的深度学习模型。

CNN网络主要有三部分构成:卷积层、池化层和全连接层构成,其中卷积层负责提取图像中的局部特征;池化层用来大幅降低运算量并特征增强;全连接层类似神经网络的部分,用来输出想要的结果。

1.1 与传统网络的区别

1.2 全连接的局限性  

  • 参数量巨大
  • 表达能力太有限

1.3 卷积思想

卷:从左往右,从上往下

积:乘积,求和

1.4 卷积的概念

1.4.1 概念

Convolution,输入信息与卷积核(滤波器,Filter)的乘积。

1.4.2 局部连接
  • 局部连接可以更好地利用图像中的结构信息,空间距离越相近的像素其相互影响越大。

  • 根据局部特征完成目标的可辨识性。

1.4.3 权重共享
  • 图像从一个局部区域学习到的信息应用到其他区域。

  • 减少参数,降低学习难度。

2. 卷积层

2.1 卷积核

卷积核用来提取图像中的特征,卷积核本质是矩阵,在定义时需要考虑:

  • 卷积核的个数:卷积核的个数决定了其输出特征矩阵的通道数

  • 卷积核的值:卷积核的值是自定义的,根据想要提取的特征来进行设置,后续进行更新。

  • 卷积核的大小:常见的卷积核有1×1、3×3、5×5等,一般都是奇数 × 奇数。

2.2 卷积计算

卷积的过程是将卷积核在图像上进行滑动计算,每次滑动到一个新的位置时,卷积核和图像进行点对点的乘积,并将其求和得到一个新的值,然后将这个新的值加入到特征图中,最终得到一个新的特征图。

2.3 边缘填充

在图像四周填充数值。

Padding的作用

(1)保持图像大小不变,。

(2)更好的保护了图像边缘数据的特征。

2.4 步长Stride

卷积层通常按照步长为1来移动卷积核。

Stride的设置需注意:

(1)stride太小:重复计算较多,计算量大,训练效率降低;

(2)stride太大:会造成信息遗漏,无法有效提炼数据背后的特征;

2.5 多通道卷积计算  

计算方法如下:

(1)当输入有多个通道(Channel), 例如RGB三通道, 此时要求卷积核需要有相同的通道数

(2)卷积核通道与对应的输入图像通道进行卷积。

(3)将每个通道的卷积结果按位相加得到最终的特征图。

2.7 特征图大小计算方法

  • 输入图像大小: W x W

  • 卷积核大小: F x F

  • Stride: S(步长)

  • Padding: P(零填充的方式)

  • 输出图像大小: N x N

2.9 卷积参数共享

一个卷积核一个偏置参数

数据是 32×32×3 的图像,用 10 个 5×5 的filter来进行卷积操作,所需的参数有多少个呢?

需要 卷积核参数:5×5×3×10 个 ,偏置参数:10个

需要参数总数:5×5×3×10+10

import torch
import os
import matplotlib.pyplot as plt
import torch.nn as nn


img = plt.imread('data/test.png')

# numpy转tensor: HWC-->CHW-->NCHW  链式调用
img  =torch.tensor(img).permute(2,0,1).unsqueeze(0)
print(img.shape)

conv = nn.Conv2d(
    in_channels = 4,# 输入通道
    out_channels =3,# 输出通道
    kernel_size=(3,3),# 卷积核大小
    stride = 1,# 步长
    padding = 0,# 零填充
)

out = conv(img)
print(out.shape)
plt.imshow(out[0][0].detach().numpy(),cmap='gray')
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大疆T100大载重吊运植保无人机技术详解

大疆T100作为一款大载重吊运植保无人机,融合了全新的AI和AR功能,旨在进一步提升安全性并满足喷洒、播撒、吊运等多种作业场景的需求。以下是对其技术的详细解析: 一、总体性能 最大起飞重量:149.9公斤 喷洒容量:75升…

Kylin Server V10 下 RocketMQ 主备自动切换模式部署

一、NameServer简介 NameServer 是一个注册中心,提供服务注册和服务发现的功能。NameServer 可以集群部署,集群中每个节点都是对等的关系,节点之间互不通信。 服务注册 Broker 启动的时候会向所有的 NameServer 节点进行注册,注意这里是向集群中所有的 NameServer 节点注册…

ESP32+VSCODE开发过程无法使用Debug调试问题解决

1.点击Debug按钮报错 Error: libusb_open() failed with LIBUSB_ERROR_ACCESS Error: esp_usb_jtag: could not find or open device! 2.解决办法 1.找见espidf的安装目录下的如下文件(如下自己的安装目录) home\fjq\esp-idf\espidfv5.3.1\tools\tool…

【CSS】一篇掌握CSS

不是因为有了希望才去坚持,而是坚持了才有了希望 目录 一.导入方式 1.行内样式 2.内部样式 3.外部样式(常用) 二.选择器 1.基本选择器(常用) 1.1标签选择器 1.2类选择器 1.3id选择器 2.层次选择器 2.1后代选择器 2.2子选择器 2.3相邻兄弟选择器 2.4通用兄弟选择器…

MySQL底层概述—6.索引原理

大纲 1.索引原理 2.二叉查找树 3.平衡二叉树(AVL树) 4.红黑树 5.B-Tree 6.BTree 7.Hash索引 8.聚簇索引与非聚簇索引 1.索引原理 索引会在数据文件中(ibd文件),通过数据页(Page)进行存储。索引可以加快检索速度,但也会降低增删改速度&#xff0…

C语言学习笔记:循环结构

循环结构 什么是循环 代码的重复执行,就叫做循环。 循环的分类 无限循环:程序设计中尽量避免无限循环,其实就是死循环。程序中的无限循环必须是可控的。有限循环:循环限定循环次数或者循环的条件。 循环的构成: …

stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别

大家有没有这样的困惑:在找模型时,老是会出现一些奇怪的标签,像 sd1.5、sdxl 之类的模型后缀,真让人摸不着头脑,一会儿 1.0,一会儿 1.5,一会儿 XL,完全搞不清楚状况。今天就来给大家…

AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。

大家好,我是微学AI,今天给大家介绍一下AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。本文利用专家模…

PyCharm中Python项目打包并运行到服务器的简明指南

目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释器 配置部署 上传代…

git clone超大仓库时报错:fatal: early EOF

环境版本: 系统:Ubuntu git版本:version 2.43.0 在执行git clone命令时报错,信息如下: 系统:Win10 git版本:version 2.47.0 解决办法1: 1、关闭压缩: git conf…

C++基础:list的基本使用

文章目录 1.基本构造和插入删除基本构造和尾插数据迭代器的分类内置排序sort任意位置插入删除 2.链表的合并,去重和剪切链表的合并链表去重链表的剪切 list的本质就是带头双向循环列表 1.基本构造和插入删除 基本构造和尾插数据 与之前vector的方法相同直接调用即可 迭代器的分…

C++ explicit关键字的作用

C explicit关键字的作用 explicit的作用 这个关键字只能用于类的构造函数,被修饰的构造函数不能发生相应的隐式类型转换,只能以显式的方式进行类型转换。 另外,这个关键字只能用于单个参数(这里的单个参数包括多参但是具有默认…

Leecode刷题C语言之N皇后②

执行结果:通过 执行用时和内存消耗如下: struct hashTable {int key;UT_hash_handle hh; };struct hashTable* find(struct hashTable** hashtable, int ikey) {struct hashTable* tmp NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);return tmp; }void insert(…

全场景——(八)低成本 Modbus 传感器的实现

文章目录 一、硬件资源介绍与接线二、创建与体验第 1 个工程2.1 创建工程2.2 配置调试器2.3 配置 GPIO 操作 LED 三、UART 编程3.1 使用 STM32CubeMX 进行配置3.1.1 UART13.1.2 配置 RS485方向引脚 3.2 封装 UART3.3 上机实验3.3.1 硬件连接3.3.2 STM32H5 程序改造3.3.3 STM32F…

如何实现一套键盘鼠标控制两台计算机(罗技Options+ Flow功能快速实现演示)

需求背景 之前我写过一篇文章如何实现一套键盘鼠标控制两台计算机(Mouse Without Borders快速上手教程)_一套键鼠控制两台电脑-CSDN博客 当我们在局域网内有两台计算机,想使用一套键鼠操控时,可以安装Mouse Without Borders软件…

MacOS 配置github密钥

MacOS 配置github密钥 1. 生成GitHub的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxx.com" -f ~/.ssh/id_ed25519_github 其中 xxxxxxxxxxx.com 是注册github、gitee和gitlab的绑定账号的邮箱 -t ed25519:生成密钥的算法为ed25519(ed25519比rsa速度快&…

嵌入式Linux之wifi配网脚本分析

嵌入式Linux系统,一般都支持wifi联网,可以通过sh脚本或其它语言代码编程来实现wifi联网。 本篇来介绍一种通过sh脚本来配置wifi的脚本执行原理。 1 sh脚本wifi联网介绍 这里以飞凌开发板中的wifi启动脚本为例来介绍。 在飞凌开发板的串口中,执行如下命令(调用fltest_wif…

Cursor安装与使用,5分钟完成需求

Cursor简单介绍 Cursor是一款基于AI的代码编辑器,旨在帮助开发者更高效地编写和管理代码。它提供了智能代码补全、AI对话和跨文件编辑等创新功能。 一、安装下载 1、下载cursor:https://www.cursor.com/ 2、注册账号,直接拿自己的邮箱登录…

Ubuntu 20.04 Server版连接Wifi

前言 有时候没有网线口插网线或者摆放电脑位置不够时,需要用Wifi联网。以下记录Wifi联网过程。 环境:Ubuntu 20.04 Server版,无UI界面 以下操作均为root用户,如果是普通用户,请切换到root用户,或者在需要权…

IDEA 2024 配置Maven

Step 1:确定下载Apache Maven版本 在IDEA 2024中,随便新建一个Maven项目; 在File下拉菜单栏中,找到Setings; 在Build,Execution,Deployment中找到Maven 确定下载的Apache Maven版本应略低于或等于IDEA绑…