代码讲解系列-CV(二)——卷积神经网络

文章目录

  • 一、系列大纲
  • 二、卷积神经网络(图像分类为例)
    • 2.1 pytorch简介
      • 训练框架
      • 张量
      • 自动微分
      • 动态计算图
      • 更深入学习
    • 2.2 数据输入和增强
      • Dataset—— torch.utils.data.Dataset
      • DataLoader——torch.utils.data.Dataloader
      • 数据增强
    • 2.3 CNN设计与训练
      • nn.Module
      • 卷积层
      • 池化层和归一化层
      • 模块
      • 训练
    • 2.4 指标评估和可视化
      • 指标评估
      • Tensorboard
      • Timm库

一、系列大纲

第1讲CV基础框架
·环境配置
anaconda,cuda
IDE:vscode,pycharm
·linux常用命令,Git管理
·Coding流程与常用工具
第2讲卷积神经网络
pytorch入门
·数据输入和数据增强
CNN网络设计与模型训练
·指标评估和可视化
Timm库的使用
第3讲Transformer系列
ViT结构解析
使用ViT进行图像分类
·注意力的可视化
第4讲目标检测初探
·标注检测数据
·数据解析与输入
YOLOV8的使用
·指标评估
第5讲语义分割基础
·数据的标注与解析
·U-Net网络设计
网络输出与指标
第6讲视觉生成模型
·生成原理简介
·Stable Diffusion代码框架
·AP-adapter介绍
第7讲前沿论文复现
Readme与环境配置
模型的增删改查
代码Debug方法
第8讲模型的修改与设计
自定义输入数据
为模型添加Refine模块
为模型添加注意力

二、卷积神经网络(图像分类为例)

2.1 pytorch简介

训练框架

在这里插入图片描述

张量

在这里插入图片描述
在这里插入图片描述
对运算符进行重载,主要是形状变换
cat就是结合,split就是拆分

自动微分

在这里插入图片描述

动态计算图

在这里插入图片描述

更深入学习

熟悉API:

  • 数据输入(Dataset和Dataloader)
  • 模型搭建和训练(nn.Module)
  • 损失函数和反向传播
  • 模型保存

进阶功能:

  • 并行训练,混合精度训练
  • 冻结参数,复杂训练模式
  • 自定义前向和反向算子
  • 梯度裁剪
    新特性:
    Torch.Compile()
    FlashAttention

https://space.bilibili.com/478674499

2.2 数据输入和增强

Dataset—— torch.utils.data.Dataset

在这里插入图片描述
init就是把所有的数据都加载进来
getitem就是逐个读出

DataLoader——torch.utils.data.Dataloader

在这里插入图片描述

数据增强

在这里插入图片描述

2.3 CNN设计与训练

nn.Module

在这里插入图片描述
init把组件和模块定义好
forward就是调用模型的时候使用的

卷积层

2维卷积为例
输入和输出通道、尺寸、步长、填充、偏置(如果后面有归一化层,需要打开)、分组卷积。
在这里插入图片描述

池化层和归一化层

在这里插入图片描述
归一化中(BatchNorm2d用的最多)

模块

了解层之后,组成模块
在这里插入图片描述
在这里插入图片描述
一个列表一个字典,两个方式。这几个方法之间可以相互嵌套
列表:
在这里插入图片描述
字典最灵活,而且可读性很好
在这里插入图片描述

训练

优化器:决定优化方向
在这里插入图片描述
parameters就是参数的意思
train_loop就是训练循环

优化器清零、loss反向传播、更新参数

2.4 指标评估和可视化

指标评估

在这里插入图片描述
每个batch的loss进行相加、再除以长度(data_size)

Tensorboard

在这里插入图片描述
嗯,就是显示

Timm库

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YK人工智能(六)——万字长文学会基于Torch模型网络可视化

1. 可视化网络结构 随着深度神经网络做的的发展,网络的结构越来越复杂,我们也很难确定每一层的输入结构,输出结构以及参数等信息,这样导致我们很难在短时间内完成debug。因此掌握一个可以用来可视化网络结构的工具是十分有必要的…

堆的基本概念

1.1 堆的基本概念 虚拟机所在目录 E:\ctf\pwn-self 进入虚拟机的pwndocker环境 holyeyesubuntu:~$ pwd /home/holyeyes holyeyesubuntu:~$ sudo ./1run.sh IDA分析 int __fastcall main(int argc, const char **argv, const char **envp) { void *v4; // [rsp20h] [rbp-1…

RabbitMQ深度探索:前置知识

消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…

JDK9新特性

文章目录 新特性:1.模块化系统使用模块化module-info.java:exports:opens:requires:provides:uses: 2.JShell启动Jshell执行计算定义变量定义方法定义类帮助命令查看定义的变量:/var…

合宙air001使用命令行烧写固件

起因: 做了个小板子给同事使用,但同事没有air001的arduino编译烧录环境,安装的话,对于没有接触过arduino的人有些复杂,所以想着能不能直接烧录编译好的固件; 经过: 在网上搜索相关教程&#…

manimgl安装

一、环境 笔记本 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy二、安装miniconda3 manimgl基于python开发,为了防止将笔记本中已有的python环境破坏,因此…

Python aiortc API

本研究的主要目的是基于Python aiortc api实现抓取本地设备(摄像机、麦克风)媒体流实现Web端预览。本文章仅仅描述实现思路,索要源码请私信我。 demo-server解耦 原始代码解析 http服务器端 import argparse import asyncio import json…

编程AI深度实战:大模型哪个好? Mistral vs Qwen vs Deepseek vs Llama

随着开源 LLM 的发展,越来越多的模型变得专业化,“代码”LLM 变得非常流行。这些 LLM 旨在比其 “常识” 对应物更小,但旨在超越更大的通用模型的编码性能。 这些模型以极低的成本提供大型模型的功能,进一步使本地 LLM 空间民主化…

DeepSeek:全栈开发者视角下的AI革命者

目录​​​​​​​ DeepSeek:全栈开发者视角下的AI革命者 写在前面 一、DeepSeek的诞生与定位 二、DeepSeek技术架构的颠覆性突破 1、解构算力霸权:从MoE架构到内存革命 2、多模态扩展的技术纵深 3、算法范式的升维重构 4、重构AI竞争规则 三、…

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…

HTB:EscapeTwo[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…

一文讲解Java中的ArrayList和LinkedList

ArrayList和LinkedList有什么区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的。 二者用途有什么不同? 多数情况下,ArrayList更利于查找,LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…

多无人机--强化学习

这个是我对于我的大创项目的构思,随着时间逐渐更新 项目概要 我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目,但是在由于时间原因,并未考虑强化学习,所以现在通过大创项目来弥补遗憾 我们项目分为三部分,分为虚…

龙芯+FreeRTOS+LVGL实战笔记(新)——16数码管驱动

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了完善与优化,各位可以前往本人在B站的视频合集(图1所示)观看所有演示视频,合集首个视频链接为: https://www.bilibili.…

Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等

文章目录 本次课程内容第四章 数组、广义表和串第一节 数组及广义表数组的基本操作数组的顺序存储方式-借用矩阵行列式概念二维数组C语言对应的函数-通常行主序方式 矩阵的压缩存储对称矩阵和三角矩阵压缩存储后,采用不同的映射函数稀疏矩阵-可以构成三元组线性表三…

[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…

Java进阶14 TCP日志枚举

Java进阶14 TCP&日志&枚举 一、网络编程TCP Java对基于TCP协议得网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。 1、TCP协议发数据 1.1 构造方法 方法 说明 Socket(InetAddress address…

Java三十天速成(java进阶篇)

Day 15 一、集合框架 1、集合框架图 2、数据结构: ①、逻辑结构; 在计算机科学中,逻辑结构是指数据元素之间的关系,它描述了数据元素之间的逻辑联系,而不是它们在计算机内存中的物理存储方式。逻辑结构可以分为以下…

专门记录台式电脑常见问题

1、蓝屏死机,检查内存硬盘和cpu 2、拆内存条,用橡皮擦金手指 3、放主板静电,扣主板电池 4、系统时间不正确,主板电池没电 5、开机键坏了 6、电脑主机的风扇转,正常通电运行,但显示器没信号。看键盘的num键&…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误,断网安装即可! 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本(如 Netplan 或传统的 ifupdown),配置方法有所不同。以下是基于 Netplan 的配置方法(适用于Ubuntu 17.10及更高版…