Skip to content

Commit 2905b27

Browse files
authoredJan 10, 2025
docs: 更新计算机视觉导论相关内容,新增计算机图形学内容 (#208)
1 parent 1f5ad87 commit 2905b27

File tree

6 files changed

+110
-27
lines changed

6 files changed

+110
-27
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# 计算机图形学
2+
<div class="badges">
3+
<span class="badge cs-badge">CS 专业选修</span>
4+
<span class="badge ai-badge">AI 专业选修</span>
5+
</div>
6+
7+
## 课程学习内容
8+
9+
主要讲述计算机图形学解决的基本问题,基础原则和方法,基础编程技能,但是不包含具体的编程指导和图像信息处理工具的使用,主要讲述了
10+
11+
+ Rasterization
12+
+ Transform, view and Hidden Surface Removal
13+
+ Color, Surface, Materials and Textures
14+
+ Rendering
15+
+ Research(in Graphics and Vision)
16+
17+
还会介绍 OpenGL 和可编程管线,但是提到的 OpenGL 的实现是比较老的版本,如果这里作业使用老版本那么在后面的任务中可能会遇到一些问题。
18+
19+
总体而言讲的是比较 base 的图形学内容,而且吴鸿智老师的讲课偏向于 High-level 而不是细节,听课体验还是不错的。
20+
21+
## 任课教师
22+
23+
[吴鸿智](http://hongzhiwu.com/) 吴老师讲课比较好,会经常发问,对一些原理的东西也会比较深入地讲解
24+
25+
## 课程教材
26+
27+
+ Computer Graphics with OpenGL, Fourth Edition, D. Hearn, M. P. Baker(电子工业出版社)
28+
+ Fundamentals of Computer Graphics, Peter Shirley, Steve Marschner, AK Peters
29+
+ 计算机图形学——原理、方法及应用,潘云鹤, 董金祥, 陈德人,2003
30+
+ OpenGL Programming Guide, Fourth Edition, Addison-Wesley, 2003,(OpenGL编程指南,人民邮电出版社)
31+
+ OpenGL Distilled, Paul Martz , Addison-Wesley, Addison-WesleyProfessional; 1ST edition(OpenGL2.0精髓, 人民邮电出版社)
32+
+ [The NeHetutorials](http://nehe.gamedev.net)
33+
34+
## 分数构成
35+
36+
+ Assignment(30%)
37+
38+
课程一共有 9 次小的作业,分别是 opengl 绘制椭圆/绘制旗帜/书面作业1(简单变换)/solar system/书面作业2(简单原理解释)/大作业组队 + proposal/dream car/给太阳系添加光源/给太阳系添加纹理
39+
40+
小作业的设计基本上都是为了最后的课程项目准备的,里面用到的基本方法也都要求在最后的课程项目中体现,这么来看设计还是相对合理的。你需要的是从头开始学习 OpenGL 并理解他的逻辑,课程没有包含这一部分的指导,你需要通过网上的资料自己进行学习。这一部分主要是学习框架需要花费比较多的时间精力。这一部分的给分只要完成了基本要求都是满分,但是需要注意 deadline,有每天减一半的 late penalty。
41+
42+
+ Course Project(40%)
43+
44+
简单三维建模及真实感绘制(基础90分+高级15分)(以2-3人为一组实现,教师以给平均分的形式打分)。基本上是实现一个游戏,workload 并不小,在大三上众多专业课中也算是名列前茅。一方面要熟悉 OpenGL 的框架,另一方面也需要良好的 C++ 编程能力。
45+
46+
单从最后的给分来说方差并不大,基础的部分中有很多要求是客观的,前面作业中用到的(75分),完成了基础部分并且能让老师觉得你的游戏比较 awesome 就能拿到 88-89 分左右的分数,如果你对细节的设计更好,比如你设计了一个飞行导弹轨迹很好看或者爆炸效果很好,那你也许就能达到 92-93 的分数。当然高级要求中还有移动端和增强现实的加分,但是实现难度很大,很少有人去做。
47+
48+
总而言之,这一部分的分数基本是是与你的投入成正比的,也是需要在最后一次课上进行展示的,你需要把你实现所有的酷炫的都展示给老师看。
49+
50+
+ In-class Performance(30)
51+
52+
课程会进行几次**不提前通知**的 Quiz,这是可能造成失分最多的地方。Quiz 可能与课程内容没有直接关系,允许携带一张 A4 作为 "Cheating" sheet。这一部分主要由于突击性而且题目也比较灵活,是可能造成失分的“重灾区”。当然吴鸿智老师在 24-25 秋冬降低了这一部分的比例(23%),更多的加到了作业里。
53+
54+
另一部分是课堂的互动,这一部分并没有太多的分数,回答或者提问都是可以算入的,一般 2-3 次即可,每次 1 分
55+
56+
24-25 秋冬的 Quiz 题是如何计算两条直线相交,Bezier 曲线的表示,Bezier 曲线的性质证明,brdf 光照模型反射相关。难度不算太大,但是 Quiz 时间比较有限一般 20分钟就要完成。
57+
58+
## 学习建议
59+
60+
如果想要入门图形学的研究,或许 Games101 是更好的选择,这一门课更多是了解基本原理。对想要轻松并且获得高分数的同学,不建议选修这门课。这门课的 Workload 是比较大的,中间遇到问题很多也很折磨人,但是最后完成自己的 project 也是很有成就感的。理论的部分是需要好好理解的,Quiz 的扣分还是比较大的,需要重视。对实践的部分建议是从第一次开始就跟着 [LearnOpenGL](https://learnopengl.com/) 的教程配置环境,这样能很大程度的避免后期发现功能不支持带来的问题。而且这个教程相对而言也是比较详细的实践教程。

‎docs/major_elective/index.md

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
|面向信息安全的信号处理|2.0|三(秋冬)|×|×|||
2424
|[量子计算理论基础与软件系统](quantum_computing/)|3.0|三(秋冬)||||较完善✅|
2525
|[编程语言原理](../major_module/principle_of_programming_languages)|2.0|三(秋冬)||×||较完善✅|
26+
|[计算机图形学](computer_graphics/)|2.5|三(秋冬)|||×|较完善✅|
2627
|[专题研讨](special_discussion/)|2.0|三(秋冬)||-||较完善✅|
2728
|[脑启发人工智能导论](brain_inspired_ai/)|3.0|三(冬)|×||×||
2829
|[计算机视觉](computer_vision/)|2.0|三(冬)||×|×|较完善✅|

‎docs/major_mandatory/computer_vision/index.md

+46-25
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
!!! warning "不要和计算机视觉课程混淆"
88
计算机视觉是一门两学分课程,不算在 AI 的专业选修课程中,但有很多其他专业方向的同学会去选修。导论课比没有导论两字的课难度和容量都更大应该也是老传统了(笑)。
9+
在 24 级的培养方案中没有这门课,大概 23 级是最后一次有图灵同学选修这门课(悲)
910

1011
## 课程学习内容
1112

@@ -24,31 +25,6 @@
2425

2526
除此主线内容之外,在最开始会有一个导论和对线性代数的简单回顾,在 2 和 3 之间会有一个对优化方法的介绍,在 6 和 7 之间会有一个对深度学习的介绍。
2627

27-
这门课的大作业是三维重建 + 位姿估计。一般使用 [Hierachical Localization](https://github.com/cvg/Hierarchical-Localization) 就可以得到一个比较好的结果,稍微微调一下参数做一下预处理也是可以的。虽然是打榜的形式,但是事实上按照笔者的体验分差并不明显,最后会有一个课堂展示 + 验收。
28-
29-
但是从23-24秋冬开始,由于大作业打榜的形式造成大家最后都用差不多的方法,而且leaderboard的形式太卷了,因此大作业改成了五选一的形式。今年的五个题目分别是:
30-
31-
- 光心不一致时的全景图拼接
32-
- 重建校园某区域,基于图像对自身做定位
33-
- 从多视角视频还原车辆、行人轨迹
34-
- 基于多视角图片重建小动物/人
35-
- 参考一段网络舞蹈视频,合成自己跳舞的视频
36-
37-
其中每个任务都分为基础解决方案和额外提升方案。大作业整体的工作量是比较大的,但是课程提供了GPU资源,同时如果遇到困难都可以问助教,助教都是周老师的博士生,水平很高而且人也很好。
38-
39-
课程有实验课,实验普遍比较简单,可以不去上课。当然,有一次课会讲怎么使用 COLMAP ,那一次课前周老师也会提醒,也建议稍微去听一下,虽然只看文档也能折腾明白。6 次实验的内容分别是:
40-
41-
1. matplotlib, OpenCV 和 Open3d 的基本使用方式;
42-
2. 高斯滤波、中值滤波、双边滤波和透视投影的实现;
43-
3. 使用 Gauss-Newton 法求解优化问题;
44-
4. 图片匹配和图片拼接:Harris 角点检测、SIFT 和 RANSAC 来计算单映变换;
45-
5. 使用 COLMAP 完成 SfM 和(可选的)MVS;
46-
6. 使用 mmdetection 完成目标检测, 写一个CNN完成图像分类。
47-
48-
期末考试不考后面 7 8 9 10 节的内容,当然,周老师会在复习课上讲明考试范围,这个范围仅供参考,复习课讲的更加细致。20 级的考试大题印象中有一道图像拼接和一道三维重建,考的都比较基础,给分普遍似乎也不错,不用过于担心。
49-
50-
23-24秋冬课程所有的内容都有涉及,考察的内容不难但是覆盖面很大,有很多内容比较细节。分为30分的不定项选择题,20分的判断题,20分的填空题,30分的大题。
51-
5228
### 先修要求
5329

5430
可以没有。线性代数会用就足够了,也不会在考试要求计算;前几节内容在图像信息处理课程中会讲,但是没上过也没有风险;机器学习当然上过最好,但是周老师会把所有用到的内容讲清楚,甚至可能比隔壁赵洲老师还清楚,所以没上过也无伤大雅;在渲染的讲解中也会涉及计算机图形学的内容,同样会有充分的介绍;除此以外,还有一门计算摄影的课程,也是周老师开的,笔者没有上过不知晓详情。
@@ -69,6 +45,50 @@
6945

7046
平时作业 30% + 大作业 30% + 期末考试 40%。
7147

48+
=== "平时作业"
49+
50+
课程有实验课,实验普遍比较简单,可以不去上课。当然,有一次课会讲怎么使用 COLMAP ,那一次课前周老师也会提醒,也建议稍微去听一下,虽然只看文档也能折腾明白。6 次实验的内容分别是:
51+
52+
1. matplotlib, OpenCV 和 Open3d 的基本使用方式;
53+
2. 高斯滤波、中值滤波、双边滤波和透视投影的实现;
54+
3. 使用 Gauss-Newton 法求解优化问题;
55+
4. 图片匹配和图片拼接:Harris 角点检测、SIFT 和 RANSAC 来计算单映变换;
56+
5. 使用 COLMAP 完成 SfM 和(可选的)MVS;
57+
6. 使用 mmdetection 完成目标检测, 写一个CNN完成图像分类。
58+
59+
=== "大作业"
60+
61+
22-23 秋冬这门课的大作业是三维重建 + 位姿估计。一般使用 [Hierachical Localization](https://github.com/cvg/Hierarchical-Localization) 就可以得到一个比较好的结果,稍微微调一下参数做一下预处理也是可以的。虽然是打榜的形式,但是事实上按照笔者的体验分差并不明显,最后会有一个课堂展示 + 验收。
62+
63+
23-24 秋冬,由于大作业打榜的形式造成大家最后都用差不多的方法,而且 leaderboard 的形式太卷了,因此大作业改成了五选一的形式。今年的五个题目分别是:
64+
65+
- 光心不一致时的全景图拼接
66+
- 重建校园某区域,基于图像对自身做定位
67+
- 从多视角视频还原车辆、行人轨迹
68+
- 基于多视角图片重建小动物/人
69+
- 参考一段网络舞蹈视频,合成自己跳舞的视频
70+
71+
其中每个任务都分为基础解决方案和额外提升方案。大作业整体的工作量是比较大的,但是课程提供了GPU资源,同时如果遇到困难都可以问助教,助教都是周老师的博士生,水平很高而且人也很好。
72+
73+
24-25 秋冬,本学期延续了去年的形式,选题减少了,分别是
74+
75+
- 视觉定位:重建校园某区域,基于图像对自身做定位
76+
- 表面重建:基于多视角图片重建物体
77+
- 数字人:参考一段网络舞蹈视频,合成自己跳舞的视频。
78+
- 开放选题:自主选择计算机视觉领域方向的选题,例如新视角合成、多模态理解、AIGC等,要求在冬二周前提交立项说明
79+
80+
每个选题包括了基础解决(14分)和进阶探索部分(6分),最后的汇报展示(10分),要求展示自己采集数据完成的 demo
81+
82+
=== "期末考试"
83+
84+
周老师会在复习课上讲明考试范围,复习课讲的更加细致。20 级的考试大题印象中有一道图像拼接和一道三维重建,考的都比较基础,给分普遍似乎也不错,不用过于担心。
85+
86+
23-24 秋冬课程所有的内容都有涉及,考察的内容不难但是覆盖面很大,有很多内容比较细节。分为 30 分的不定项选择题,20 分的判断题,20 分的填空题,30 分的大题。
87+
88+
24-25 秋冬课程的全部章节都有涉及,但是难度并不大,也不要求较难的数学推导,诚如周老师所言“我们这门课希望大家学到一些有用的东西”,考察更注重理解,当然复习课很重要,98 上有一份回忆卷的拟合效果也很好。
89+
90+
今年是 30 分的不定项选择,10 分的判断题,20 分的填空题,40 分的大题。试卷是中文试卷,对于专业词汇都标注英文,可以说非常友好。对于复习课提到的东西都好好掌握基本就没有问题。
91+
7292
## 推荐书目
7393

7494
+ Richard Hartley 和 Andrew Zisserman 的 [ *Multiple View Geometry in Computer Vision*](https://www.cambridge.org/core/books/multiple-view-geometry-in-computer-vision/0B6F289C78B2B23F596CAA76D3D43F7A) , 从射影几何角度出发, 极其经典, 但较难读。
@@ -80,3 +100,4 @@
80100

81101
- [lhj 的笔记](https://frightenedfoxcn.github.io/notes/qnotes/computer_vision/)
82102
- [lhx 的笔记](https://lhxcs.github.io/note/AI/cv/icv/)
103+
- [lt 的笔记](https://626lt.github.io/note/icv/)

‎docs/short_term/index.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
|课程综合实践 Ⅰ|...|一(短)|2.5||
2323
|课程综合实践 Ⅱ|[C++ 项目管理及工程实践](cpp_project/)|二(短)|2.5|较完善✅|
2424
|课程综合实践 Ⅱ|[Rust 开发实训](rust/)|二(短)|2.5|较完善✅|
25-
|课程综合实践 Ⅱ|[大模型应用与实践](llm)|二(短)|2.5|较完善✅|
25+
|课程综合实践 Ⅱ|[大模型应用与实践](llm_practice/)|二(短)|2.5|较完善✅|
2626
|课程综合实践 Ⅱ|...|二(短)|2.5||
2727
|[人工智能实践](ai_practice/)(仅 AI)||三(短)|3.0||
2828

File renamed without changes.

‎mkdocs.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ nav:
103103
- 社交网络安全与隐私: major_elective/social_network_security/index.md
104104
- 量子计算理论基础与软件系统: major_elective/quantum_computing/index.md
105105
- 多媒体安全: major_elective/multimedia_security/index.md
106+
- 计算机图形学: major_elective/computer_graphics/index.md
106107
- 短学期课程:
107108
- short_term/index.md
108109
- 固定课程:
@@ -119,7 +120,7 @@ nav:
119120
- short_term/index.md
120121
- C++ 项目管理及工程实践: short_term/cpp_project/index.md
121122
- Rust 开发实训: short_term/rust/index.md
122-
- 大模型应用与实践: short_term/llm/index.md
123+
- 大模型应用与实践: short_term/llm_practice/index.md
123124
- 跨专业课程:
124125
- others/index.md
125126
- 常微分方程: others/ode/index.md

0 commit comments

Comments
 (0)
Failed to load comments.