计算机视觉入门与调优
大家好啊,我是董董灿。
在 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实战…...
客服服务时长难统计?RPA自动记时长,排班更合理
RPA在客服服务时长统计中的应用客服服务时长的准确统计是优化排班和提高效率的关键。传统手动统计方式存在误差大、效率低等问题。RPA(机器人流程自动化)技术可以自动记录客服工作时长,为排班提供数据支持。RPA自动记录客服工作时长的实现方式…...
保姆级教程:用Docker快速搭建一个可复现的Hive测试环境(专治各种启动报错)
从零构建可复现的Hive沙箱:Docker Compose全流程避坑指南 每次调试Hive时遇到FAILED: HiveException或metastore连接问题,是否感觉像在破解一个没有说明书的密码锁?传统环境配置的不可复现性让问题排查变成一场噩梦。本文将带你用Docker技术…...
Uvicorn与Couchbase Analytics Service集成:构建高性能数据分析API的终极指南
Uvicorn与Couchbase Analytics Service集成:构建高性能数据分析API的终极指南 【免费下载链接】uvicorn An ASGI web server, for Python. 🦄 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn 在现代数据驱动的应用开发中,…...
RAG的墓志铭:当AI不再需要检索
上个月读到一篇在 Hacker News 上引发热议的文章——《The RAG Obituary: Killed by Agents, Buried by Context Windows》。作者 Nicolas Bustamante 是金融科技公司 Fintool 的创始人,他在文中抛出了一个颇具争议的观点:RAG(检索增强生成&a…...
AIGlasses_for_navigation免配置环境:预置ffmpeg+opencv+torchvision全栈
AIGlasses_for_navigation免配置环境:预置ffmpegopencvtorchvision全栈 1. 引言:让AI视觉开发变得简单 如果你曾经尝试过搭建一个完整的AI视觉处理环境,一定知道那是个多么痛苦的过程:安装CUDA、配置ffmpeg、编译OpenCV、处理各…...
通用多模态检索——大模型微调
1、7B的模型,参数量就占到了16G,而且你要检索,要把所有的候选项candidate全部变成向量嵌入,然后计算相似度,3090的24G显存很容易爆,而且数据量一旦大了一点,达到几万,基本就很难跑通…...
华为MatePad 11鸿蒙2.0平板变身编程本:保姆级AidLux+VSCode配置避坑指南
华为MatePad 11鸿蒙平板编程环境搭建实战:AidLux与VSCode高效配置指南 在移动办公与碎片化学习成为主流的今天,将华为MatePad 11这样的高性能平板转变为便携式编程工作站,正成为越来越多开发者的现实需求。鸿蒙系统2.0的分布式能力与AidLux的…...
编译原理避坑指南:自顶向下语法分析的5个常见错误及解决方法
编译原理避坑指南:自顶向下语法分析的5个常见错误及解决方法 第一次接触自顶向下语法分析时,我盯着那个无限循环的递归文法整整三天没想明白——为什么明明按照教材步骤操作,程序却始终报错?直到助教指出我忽略了间接左递归的隐蔽…...
【Hot 100 刷题计划】 LeetCode 138. 随机链表的复制 | C++ 链表深拷贝题解
LeetCode 138. 随机链表的复制 | C 哈希表 DFS 深拷贝题解 📌 题目描述 题目级别:中等 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 请你构造这个链表的深拷…...
Android Gradle - Gradle 自定义插件(Build Script 自定义插件、buildSrc 自定义插件、独立项目自定义插件)
一、Build Script 自定义插件 1、基本介绍插件代码直接写在模块级 build.gradle 文件中逻辑非常简单,且仅在该模块使用2、演示 (1)具体实现 在模块级 build.gradle 文件中定义插件 class SimpleBuildScriptPlugin implements Plugin<Proje…...
