计算机视觉入门与调优
大家好啊,我是董董灿。
在 CSDN 上写文章写了有一段时间了,期间不少小伙伴私信我,咨询如何自学入门AI,或者咨询一些AI算法。
90%的问题我都回复了,但有时确实因为太忙,没顾得过来。
在这个过程中,我发现很多小伙伴问的问题都类似:比如如何入门计算机视觉,某某算法是做什么的,有什么作用。

之前写的文章由于过于分散,不成体系,很多知识点没有串联起来。
于是我做了个合集,计划系统的从传统计算机视觉,到基于深度学习的计算机视觉走一遍。
然后依托Resnet50这一经典图像分类网络,将涉及到的算法都剖析和实现一遍,最后亲自完成该神经网络的搭建,并带你完成任意图像的识别。
专栏计划更新目录大纲为(高亮部分是已经写完的)
我所理解的计算机视觉
基础背景知识
-
图片和像素
-
灰度图
-
彩色 RGB 以及通道
-
彩色YUV
-
OpenCV 介绍、环境搭建及一个实战完成YUV的分量提取
传统计算机视觉初探
-
传统CV之均值滤波
-
传统CV之高斯滤波
-
传统CV之高斯滤波实战
-
传统CV之边缘检测
-
传统CV之图像分割(大津算法)
-
传统CV之利用大津算法实战完成图像分割
深度学习基础
-
机器学习和深度学习的关系
-
深度学习之神经网络
-
深度学习之训练和推理
-
深度学习之正向传播和反向传播
-
深度学习之损失函数
-
推理的性能,那些框架存在的意义
-
深度学习实战——完成一个模型的训练和推理
图片分类模型 - Resnet50
-
什么是 Resnet50 神经网络?
-
Resnet 神经网络为什么这么重要?
-
Resnet 中共包含哪些算法?
-
卷积 - 为什么是卷积?
-
卷积 - 什么是卷积的 Feature Map?
-
卷积 - 到底什么是感受野?
-
卷积 - 矩阵乘法的本质
-
卷积 - 实际上是一个特征提取器
-
卷积 - 卷积特征的可视化和一个神奇的网站
-
卷积 - 卷积的基础公式
-
卷积参数 - padding 的作用
-
卷积参数 - stride 的作用
-
卷积参数 - dilation 的作用以及什么是空洞卷积
-
卷积参数 - 长宽方向的公式推导
-
变种卷积 - 分组卷积
-
实战 - 手写一个基础卷积算法
-
卷积 - 算法总结
-
池化 - 什么是池化算法
-
池化 - 池化与卷积的区别
-
池化 - 池化的特征不变性
-
池化 - 平均池化和全局平均池化
-
实战 - 手写一个最大池化函数
-
BatchNorm - 什么是批归一化以及它解决了什么问题
-
BatchNorm - 经典面试题:训练和推理中的批归一化有什么不一样
-
实战 - 手写一个BatchNorm 算法
-
BatchNorm 为什么可以和卷积融合?
-
激活函数 - 非线性的重要性
-
激活函数 - relu
-
激活函数 - sigmoid
-
激活函数 - 梯度消失和梯度爆炸
-
Resnet - 残差结构和它的作用
-
实战 - 利用 conv + bn + relu + add 手写一个残差结构
-
全连接 - 特征的全局融合
-
全连接 - 特征与样本空间的对应关系
-
实战 - 手写一个全连接算法
-
Softmax 分类器以及它的底层原理
-
损失函数和softmax
-
Resnet 中的下采样
模型实战
-
python 环境搭建
-
resnet50 模型下载
-
resnet50 权值和参数保存
-
resnet50 权值和参数加载
-
python - 手写卷积、bn、池化、全连接、激活、ResBlock
-
python - 全手写搭建 resnet50 神经网络
-
图片预处理:Resize and Crop
-
图片预处理:Normalize
-
python - 利用手写的网络,成功预测一张图片
-
python - 代码仓库介绍
-
AI 模型性能评估指标:吞吐和延时
-
python - 第一版手写代码性能评估
-
python - 利用向量内积来优化卷积运算
-
C++ 环境搭建和一些库的安装
-
C++ 代码格式规范的一个工具使用
-
C++ 仓库目录结构介绍
-
C++ 编译,运行介绍
-
C++ - 手写卷积、池化、bn、全连接、relu等算法
-
C++ - 手写 BottleNeck 结构,搭建resnet50 神经网络
-
C++ - 预测图片数据集介绍
-
C++ - 图片预处理介绍
-
C++ - 完成一张图片的推理,top1和 top5 的准确度验证
-
C++ - 性能评估:Latency 和 FPS 介绍
模型性能优化1 - AVX2 向量指令集
-
什么是计算向量化
-
avx2 向量指令集介绍
-
avx2 向量寄存器介绍
-
avx2 数据 load/store 向量化操作介绍
-
avx2 向量实现乘累加
-
利用 avx2 向量指令集优化卷积运算
-
评估优化前后的性能差距
模型性能优化2 - 权值预加载
-
计算机基础 - 计算数据流加载(IO)
-
为什么要做权值预加载
-
手写的模型如何模拟权值预加载
-
权值预加载实现,评估优化前后的性能差距
模型性能优化3 - 内存操作的移除
-
操作系统:内存的申请机制介绍
-
系统负载:频繁申请内存的影响
-
如何移除推理 routie 上的内存操作
-
移除内存操作前后的性能评估
模型性能优化4 - 代码生成
-
什么是代码生成
-
代码生成一般都是怎么做的
-
代码生成有什么好处,为什么性能会更好
-
手写的模型如何模拟代码生成
-
将所有算子替换成代码生成逻辑
-
JIT 编译介绍
-
如何在代码中加载动态库
-
如何从动态库中获取到函数符号
-
利用代码生成的逻辑优化手写的神经网络性能
-
优化前后性能评估
我自从转行来做AI,有不少启发,可以查看:我是如何转行 AI 并且实现薪资翻倍的。
上面的内容适合想入门计算机视觉同学,或者已经有一些基础但是想提高自己的同学,还有就是想学习神经网络性能优化的同学。
上面的知识点我都全程答疑,并且可深度链接作者,咨询算法问题。
所有代码我会亲自编写,确保可以完全实操起来,并且理解为什么可以这么做。
做这个文章和代码实战合集,其实也是对我的一种锻炼和知识积累,如果你想入门学习AI视觉,想提高自己的同学,欢迎一起学习,我们一起冲吧。
相关文章:
计算机视觉入门与调优
大家好啊,我是董董灿。 在 CSDN 上写文章写了有一段时间了,期间不少小伙伴私信我,咨询如何自学入门AI,或者咨询一些AI算法。 90%的问题我都回复了,但有时确实因为太忙,没顾得过来。 在这个过程中&#x…...
Ndk编译hevc静态库
源码下载: https://hg.videolan.org/x265 然后执行以下脚本: #!/bin/bash# 设置NDK路径,根据你的实际安装路径修改 NDK_PATH/mnt/c/Users/Administrator/ubuntu_dev/ndk/android-ndk-r21e# 设置目标平台和ABI版本,可以根据实际情况修改 aarch64-linux-…...
Linux系统安装MySQL
Linux系统安装MySQL 第一步:下载YUM wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm第二步:安装MySQL的YUM 仓库 rpm -ivh mysql57-community-release-el7-11.noarch.rpm第三步:查看MySQL版本 yum repolist …...
linux go环境安装 swag
下载依赖包 go get -u github.com/swaggo/swag编译 移动到下载的swag包目录,一般在$GOPATH/pkg/mod下 查看 GOPATH echo $GOPATHcd /root/GolangProjects/pkg/mod/github.com/swaggo/swagv1.16.2go install ./cmd/swag/不出意外,$GOPATH/bin下 已经有了swag 初…...
高效分割视频:批量剪辑,轻松提取m3u8视频技巧
在数字媒体时代,视频分割是一项常见的需求。无论是为了编辑、分享还是其他要求,经常要将长视频分割成多个短片。传统的视频分割方法往往需要手动操作,既耗时又容易出错。现在来看云炫AI智剪高效分割视频的方法,批量剪辑并轻松提取…...
自由DIY预约小程序源码系统:适用于任何行业+自由DIY你的界面布局+全新升级的UI+多用户系统 带安装部署教程
随着移动互联网的普及,预约服务逐渐成为人们日常生活的一部分。从家政服务、医疗挂号到汽车保养,预约已经渗透到各个行业。然而,市面上的预约小程序大多功能单一,界面老旧,无法满足商家和用户的个性化需求。今天来给大…...
el-select 多选,选有一个未选择的选项
多选有未选择这个选项后。会出现一个情况,绑定的数据为[‘未选择’,‘cpu1’,‘cpu2’] 进行一个处理,选择(未选择)就清除(其它的选择),选择(cpu)就清除(未选…...
CISSP 第6章: 密码学与对称加密算法
第六章 密码学与对称加密算法 6.1 密码学历史上的里程碑 6.1.1 凯撒密码 简单的将字母表中的每个字母替换成其后的三个字母,是单一字母的替代置换密码 6.1.2 美国内战 美国内战使用词汇替代和置换的复杂组合,从而试图破坏敌人的破译企图 6.1.3 Ultra与…...
《深入理解C++11:C++11新特性解析与应用》笔记八
第八章 融入实际应用 8.1 对齐支持 8.1.1 数据对齐 c可以通过sizeof查询数据的长度,但是没有对对齐方式有关的查询或者设定进行标准化。c11标准定义的alignof函数可以查看数据的对齐方式。 现在的计算机通常会支持许多向量指令,4组8字节的浮点数据&a…...
算法——BFS解决FloodFill算法
什么是FloodFill算法 中文:洪水灌溉。假设这一块4*4的方格是一块土地,有凸起的地方,也有凹陷的地方(凹陷的地方用负数表示)。此时下大雨发洪水,会把凹陷的地方填满。绿色圈起来的属于一块区域(…...
【Linux】常用的基本命令指令②
前言:前面我们学习了Linux的部分指令,今天我们将接着上次的部分继续将Linux剩余的基本指令. 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:Linux的学习 👈 💯代码仓库:卫卫周大胖的学习日记…...
52、全连接 - 特征与样本空间的对应关系
上一节说到经过全连接层之后,神经网络学习到的特征,会从隐层特征空间逐步映射到样本空间,这主要是由于全连接层可以融合全局的特征。 在经过全连接层之后,在 ResNet50 这个神经网络中会输出1000个特征的得分值,这1000个特征的得分值,便可以对应到图像的分类。 怎么对应…...
Go语言中的包管理工具之Go Vendor的使用
GoLang 中常用的包管理的方式 常用的有三种 Go PathGo VendorGo Modules 关于 Go Vender 1 )概述 在2015年的时候,我们的另一个包管理工具Go Vendor就诞生了它诞生于 2015.8.19 ,是在Go的 1.5 版本当中引入的,它默认是关闭的我…...
QString设置小数点精度位数
QString设置小数点精度位数 Chapter1 QString设置小数点精度位数Chapter2 Qt中QString.toDouble有效位数6位问题以及数据小数点有效位数的处理问题一:QString.toDouble有效位只有6位问题二:小数点有效位数的问题 Chapter3 qt QString转Double只显示6位数字的问题(精…...
基于Java驾校预约管理系统
基于Java的驾校预约管理系统是一个为驾校提供在线预约服务的系统。该系统利用Java编程语言,采用SSM框架,并使用MySQL数据库进行开发。 这个系统主要有三个角色:用户、教练和管理员。 用户可以注册和登录系统,查看驾校的公告信息…...
C++面向对象高级编程(侯捷)笔记2
侯捷C面向对象高级编程 本文是学习笔记,仅供个人学习使用,如有侵权,请联系删除。 如果你对C面向对象的组合、继承和委托不了解,对什么是拷贝构造、什么是拷贝赋值和析构不清楚,对类设计中的Adapter、pImpl、Template…...
双曲正弦函数(*) 优化麦克劳林公式
#include<stdio.h> #include<math.h> int main() {double x,eps,i3,y,item;scanf("%lf%lf",&x,&eps);yx;itemx;while(fabs(item)>eps){itemitem*x*x/i/(i-1);i2;yitem;}printf("%.6f\n",y);return 0; }...
无监督关键词提取算法:TF-IDF、TextRank、RAKE、YAKE、 keyBERT
TF-IDF TF-IDF是一种经典的基于统计的方法,TF(Term frequency)是指一个单词在一个文档中出现的次数,通常一个单词在一个文档中出现的次数越多说明该词越重要。IDF(Inverse document frequency)是所有文档数比上出现某单词的个数,通常一个单词…...
web3 : blockscout剖析
Blockscout 是第一个功能齐全的开源区块链浏览器,可供任何以太坊虚拟机 (EVM) 链使用。项目方可以下载并使用Blockscout作为其链的浏览器,用户可以轻松验证交易、余额、区块确认、智能合约和其他记录。 目录 Blockscout可以做什么主要特征blockscoutDocker容器组件Postgres 1…...
【机器学习基础】DBSCAN
🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学! ⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
