Syllabus
CS/ECE 181B
Introduction to Computer Vision
Winter 2019
Essential information:
Lecture:
Monday and Wednesday, 3:30pm - 4:45pm (BRDA 1640)
CS Discussions:
Friday, 9:00am - 9:50am GIRV 2129 (13656)
Friday, 10:00am - 10:50am 387 1011 (13664)
ECE Discussion:
Friday, 9:00am - 9:50am GIRV 2129 (08904)
Friday, 10:00am - 10:50am 387 1011 (08912)
Final Exam:
Friday March 22nd , 12:00pm - 3:00pm, (BRDA 1640)
Instructor:
Yuan-Fang Wang
Office Hours: Monday and Wednesday, 2:30pm - 3:30pm, HFH, Rm. 3113
email: yfwang@cs.ucsb.edu
TA:
Da Zhang
Office Hours: W 12:30pm - 2:30pm, TH 1:00pm - 3:00pm, F 11:30pm - 1:30pm
Office: CSIL
email: dazhang@cs.ucsb.edu
TA:
Peter Zhe Fu
Office Hours: T 1pm - 3pm, T 1pm - 3pm, F 1:30pm - 3:30pm
Office: CSIL
email: peterzhefu@ece.ucsb.edu
Reader:
YiMeng Liu
Office Hours: by appointment
Office: CSIL
email: yimengliu@cs.ucsb.edu
Prerequisites:
This is a college-wide course (crossed-listed under both CS and ECE),
and hence, there is no formal prerequisite for this course. However, no
formal prerequisite does not imply that you need no academic reparation.
Upper-division standing in CS or ECE (or another engineering department) is required, which means that
adequate background in calculus, linear algebra, differential equations,
and probability is assumed. Familiarity with at least one high-level
programming language (e.g., Python, Matlab, C, C++, and Java) is also assumed. We will use
Matlab and Python for programming assignments. While Matlab can be slow, it is an excellent development environment for
fast prototyping. It has built-in functions for reading, writing,
and displaying images, and the Image Processing Toobox has lots of
useful functionalities. You do not have to be an expert in Matlab
to take this course, but must be willing to learn quickly (see Tutorial page).
Grading:
-
Homeworks (four - five programming assignments) = 60%
-
Midterm exam = 15%
-
Final exam = 25%
-
Homework due dates will be clearly marked on the handouts and posted on
the class web site. In general, you have about about two weeks to turn in a programming
project. Plan your schedule wisely as late assignment
turnins will be severely penalized without a documented emergency.
Textbooks:
The following is partial list.
In particular, Szeliski's book (PDF version) is free to download. Be warned that
we will not follow any book closely and will rely mostly
on our class notes and additional assigned readings. However, it is strongly
recommend that you have some reference books.
Lab:
All engineering students should have access to the ECI labs. You can
also use your personal computers for programming assignments and class
projects. If you use Matlab, you can obtain a copy for free to install on your personal computer. You can also
access ECI lab machines remotely.
For CS students, CSIL (Computer Science Instructional Lab) should be
available to you. The policy of the CS Department allows anyone taking
a CS course to obtain a CoE account with access to CSIL. At the
beginning of each quarter, the CoE Account System manages most of this
automatically. For students with a CoE account, it extends CSIL access
to them. For those students without an account,
it allow them to create one
here.
The important thing to note is that as long as you are an engineering student with a
CoE account, you are set to take this class. You will have access to your home directory and
essential software (Matlab, Python, etc.) from any CoE machine in CSIL and ECI labs. You will also have access to
the electronic turnin program at /usr/bin/turnin to electronically turn in your programs for grading.
Objectives:
An introduction to the field of Computer Vision (also known as Machine
Vision or Image Understanding or Computational Vision). The aim of
computer vision is to make computers "see" by processing images and/or
video. By knowing such things as how images are formed, information
about the sensors (cameras), and information about the physical world,
it is possible (at least in some cases) to infer information about the
world from an image or set of images. For example, one may wish to know
the color of an apple, the width of a printed circuit trace, the size of
an obstacle in front of a robot on Mars, the identity of a person's face
in a surveillance system, the motion of an object, the vegetation type
of the ground below, or the location of tumor in an MRI scan -
automatically, from images. Computer vision studies how such tasks can
be done, and how they can be done robustly and efficiently. Originally
seen as a sub-area of artificial intelligence, computer vision has been
an active area of research for almost 40 years.
People learn computer vision with of a variety of motivations. Some
want to better understand biological vision - how people and animals
see, how the eye and the brain work together to enable sight, etc. Others
want to build robots that can perceive and react to the environment
around them. Others are interested in multimedia databases, image
compression, human-computer interaction, security and surveillance,
medical imaging, and other areas. Whatever the motivation or
application, there are several topics that are fundamental to work in
computer vision and are important to almost any application.
Topics covered :
- Image formation - geometry, radiometry, camera calibration
- Color models and perception
- Edge detection and filtering
- Region segmentation
- Stereo and multiple views
- Motion processing
- Tracking
- object recognition
- Recent applications
During the course we will touch upon applications in biological vision
and learning, robotics, image databases, video processing/compression,
medical imaging, computer graphics, and human-computer interaction.
By the end of the course, you should understand what
computer vision is all about - why it is a difficult and interesting
problem (actually, set of problems), what can it be used for, and what
are the main tools and techniques. You will gain experience both
conceptually and practically, by homework assignments that involve
solving problems and programming vision routines. You will see many
examples of working vision systems and research projects pushing the
state of the art.
This is not primarily a programming course - that is, the main goal is
to learn the concepts, not to learn a programming language or particular
programming techniques. However, coding examples of the concepts is
the best way to demonstrate (and facilitate) your knowledge of them.
The course will introduce a mixture of "traditional" and "modern" techniques.
"Traditional" techniques largely focus on high-precision, low-level analysis. Drawn
heavily upon mathematics and geometry, traditional CV techniques have proven
useful in applications such as camera calibration, tracking and 3D reconstruction and modeling.
More recently, CV researchers are exploring high-level, highly-adaptable deep learning
techniques on, say, object recognition, scene segmentation, and event analysis. We will introduce
both classes of approaches in this course.
General class policies and announcements:
-
This class has a Web site at http://www.cs.ucsb.edu/~cs181b. You will find
there useful information such as lecture notes, assignment deadlines,
and on-line copies of syllabus and programming assignments.
It is your responsibility to check the Web site on a regular basis.
-
This class also has a Piazza website for discussion.
Again, it is your responsibility to check the Web site on a regular basis.
-
Important Piazza etiquette:
- Be professional and courteous - this is not a place to vent your frustration!
- Describe your problems clearly but succinctly - you are wasting your time composing long questions in the Twitter era,
- Remember the rule of gives-and-takes: you want people to help you, you should try to help others if possible; however,
- Don't post suggestions that you are not sure of or are intentinally misleading, and
- Most importantly, never ever post your codes on the discussion website (small program snippets where you need help are ok).
-
Late assignment turnin will be severely penalized without proof
of a documented emergency. 20% will be taken off for any fraction of a
day late, up to two days. I.e., if you turn in an assignment late by
less than 24 hours, 20% will be taken off. If you turn in an assignment
late by more than 24 hours but less than 48 hours, 40% will be taken
off. No late assignment turnins will be accepted after the second day
past the due day. This policy applies to all homework assignments, no exception.
-
For all programming assignments, you must keep a copy of your codes in
the E1 or CSIL Lab. You must not edit or change them in any way
after you turn them in electronically for grading. The purpose of this backup copy
is to help resolving dispute regarding assignment grading (e.g., the turnin
process corrupts the codes). You need to have a backup copy (with a
time stamp showing the codes were last modified before the deadline). A
backup copy on your own computer is not acceptable.
-
There is no group programming assignment in this class. You
should do all the assignments on your own. Consult your TAs and
instructor if you have any question. Any act of cheating,
plagiarism, or collaboration on assignments will result an "F" grade
in this class; however minor the infringement may be.
-
If you have any questions concerning your homework/program/exam grades,
you should bring them to your TAs first. If the questions cannot be
resolved to your satisfaction, you should then consult the instructor.
Any dispute over grades must be resolved in a timely manner,
within two weeks from the time grades are emailed to you.
-
Class attendance is highly recommended. You are responsible for
everything that goes on in class. "I wasn't there" and "I didn't know"
are not valid excuses for missing something important!
-
Weekly one-hour discussion sections, led by the TA, will focus on (1)
presenting supplementary material (such as practical examples) to the
lectures and (2) answering questions (about lecture topics, homework
problems, programming issues, etc.). It is expected that students
attend these sessions - you are responsible for what goes on during the
discussion sessions also.
-
The two discussion sessions in a week will be lead by the same TA and devoted to the same topics.
You can choose to attend either one (9am or 10am on Friday).
-
Students are encouraged to give the TA (and,
if appropriate, the instructor) feedback regarding topics or issues they
would like to have discussed during this time.
Academic Honesty Policy
In this class, you are expected to subscribe to the highest standard of
academic honesty. This means that every idea that is not your own must
be explicitly credited to its author. Failure to do this constitutes
plagiarism.
Plagiarism includes using ideas, code, and old solution sets from any
other students or individuals, or any sources other than the required
text, without crediting these sources by name. In this class, the
homework includes several programming assignments.
You are encourage to discuss problems with your instructor
and TA. You may not copy codes from other students, or give your codes
to others under any circumstances.
Academic dishonesty will not be tolerated. Any student caught of
academic dishonesty will be reported to the proper authority for
disciplinary action. You will receive a failing grade for this course
and may be suspended or dismissed from the university.
Back to the Course Home Page