分享
从零构建计算机视觉与深度学习系统
输入“/”快速插入内容
🥰
从零构建计算机视觉与深度学习系统
用户8049
用户8049
2025年12月28日修改
前言
一些声明
本教材默认读者拥有良好的Python编程基础、机器学习基础、高等代数基础、算法基础。
《用纯 Python 手搓经典计算机视觉与深度学习系统》是一个
从零构建视觉算法与深度学习框架的开源教材项目
。 本项目坚持一个核心理念:
不调用现成主流深度学习框架,而是亲手构建算法、自动求导系统与模型训练流程。
项目从最基础的算法(KNN、线性分类器)出发,逐步过渡到神经网络、自动求导(Autograd)系统,最终实现卷积神经网络(CNN)以及现代生成模型(如 DDPM)。除了部分下载或者导入数据的情景外,整个项目只使用numpy、matplotlib、pillow、cupy等原生库。
本项目是
23 级数科班《计算机视觉》课程大作业
的成果,同时也是一次
与大语言模型(LLM)深度协作的软件工程实践
。在项目中,我们将 LLM 视为“虚拟的资深算法工程师与导师”,共同完成了算法设计、系统搭建、实验分析与文档撰写的完整流程。
本项目中的自动求导系统参考并基于 DeZero 框架进行了教学化改造。
DeZero 由斋藤康毅提出,并采用 MIT License 发布。
本仓库代码仅用于学习与课程展示目的,无任何商业化用途。
本教材采用
“算法主线 + 系统主线”
的双线并行结构:
第一阶段:算法即公式(Algorithm as Formula)
目标:把数学公式完整地“翻译”为可运行的 Python 程序
在这一阶段,我们使用 Python 与 NumPy,实现经典视觉与机器学习算法。你将学会:
•
如何从数学定义出发,逐行实现算法
•
如何手动推导并编码损失函数与梯度
•
如何分析算法的时间复杂度与数值稳定性
•
如何通过实验验证模型假设的适用范围
📘 对应章节:1-3:KNN / Two-Layer NN / Softmax
第二阶段:算法即计算图(Algorithm as Graph)
目标:让“求导”成为程序的一部分,而不是人脑的负担
随着网络结构变深,手写反向传播会迅速变得不可维护。本阶段从这一“痛点”出发,引导构建一个最小可用的自动求导系统。你将学会:
•
如何将链式法则表达为程序结构
•
如何构建并遍历计算图
•
Variable / Function 抽象背后的设计思想
•
自动求导系统如何解耦“模型结构”和“梯度计算”
📘 对应章节:4-6:自动微分/框架搭建/框架拓展
第三阶段:模型即系统(Model as System)
目标能力:将复杂模型视为“可组合、可扩展的系统”
在拥有自动求导能力后,模型的复杂度不再受限于人类手算。本阶段使用自制框架,逐步构建现代深度学习模型。你将学会:
•
将 CNN 拆解为可复用的模块(Conv / Pool / FC)
•
理解卷积神经网络为何适合图像数据
•
将模型训练视为“程序化优化过程”