Fall 2026 CS543/ECE549 Projects
Proposals due Nov 16, progress reports due Nov 30, final reports due Dec 16
These dates will not slip!

C. Van Loo, Architecture, 1752
You cannot slip the due date using ANY mechanism
I will not grade any materials received after 16 Dec.
General
The goal of your project is to try something new and, perhaps, to contribute something to the
field of computer vision. Projects should be done in groups of one
to four people. Individual projects require the instructor's
approval. Feel free to use the pinned "Project teammate search" topic
on Campuswire to form teams. There is also a "project" tag for
discussing project ideas. And of course, you're encouraged to discuss
possible topics with us during office hours.
Here are some ideas for getting started on projects:
- Reimplementation Find a recent computer vision paper, reimplement and test its approach. This is harder than it
sounds. We are not excited by (say) convolutional classifiers applied to MNIST. But many recent papers are very elaborate, and take
a lot of reimplementation. Take care with this approach.
- Break it Take some publicly available code and try to make it fail. To do this you'll need some
ideas about what it should do well or badly, and you'll need to find datasets. One thought: for some procedures (like single image depth estimation) there are several strong codes. You could search for types of image where different codes behaved differently. These would be interesting.
Just running existing code on the data provided by the authors is not sufficient -- you need to do more in-depth exploration along the lines suggested above.
- Extend it Take some publicly available code and adjust it so that it now does something useful that it didn't do beforehand. To do this you'll need some
ideas about what it should do well or badly.
Just running existing code on the data provided by the authors is not sufficient -- you need to do more in-depth exploration along the lines suggested above.
- Innovate Design and implement a solution to a problem that interests you. It is fine to pick a problem related to your RA or dissertation research, but be sure to formulate a clear short-term goal and desired outcome for the class project. Ideally, you should use the class project as an opportunity to try new techniques that you might not consider or have a chance to use otherwise.
- Compete Find an interesting competition or dataset on Kaggle. It is not necessary to actually enter the competition -- just use however much of the data or problem definition or evaluation makes sense to you and is feasible in your circumstances.
For inspiration, feel free to browse
the list
of project titles from the last decade of this
class. However, don't feel that you need to choose a popular
topic -- in particular, there is no requirement to use deep
learning!
FAQ
- Can I do a project on my own? Yes, in principle, but I want to be sure this will work;
check with a TA by email, using "SINGLETON PROJECT" in the header.
- Can I do a project in a huge
group Possibly, but you need to convince me
that there won't be a hassle with dynamics in the
group; usually groups of six or more melt down.
- Can I hand in the final report early? Yes
- Can I do something that I'm doing for my thesis?
or for my RA work? or for another class? The
principle that applies here is we must avoid double counting;
you can't get two or more grades for the same piece of work.
So I need to know which part of your activity counts toward
CS543/ECE549 and which towards some other thing. Apart from
that, great.
- What if I try really hard but it doesn't
work? That's life - explain what you tried and why it
didn't work (to the extent you can).
- What if I didn't try really hard and it doesn't
work? You might be able to work the answer out for
yourself; don't do this
- Can I use other people's code?
Sure; the principle that applies here is that I need
to know what you did so you should
declare that you used other people's code; otherwise,
have fun.
- I tried to use someone else's code but it
didn't work (or I can't get it installed; or...); can
you fix it? This sort of thing happens
surprisingly often. Likely no, but if you try
Canvas/Campuswire/TA's/your colleagues you might get
lucky. Also, google it; sometimes other people have
had this problem as well, and you can benefit from
their experience. It's good manners and good practice
to acknowledge help you received.
- I had a brilliant project idea the day before
projects were due and I did that, but there wasn't enough
time; what will happen to me?You might be able to
work the answer out for yourself; don't do this
- I tried to use someone else's dataset, and I found something nasty; what to do?
This sort of thing happens with datasets collected
from the web. Consult me if absolutely
essential.
- Can I work on (controversial topic
X)? Sure. Try not to stir up negative publicity
without a good reason. If your project requires disturbing
data, don't show it to people without some warning. Be aware
that there are some kinds of data you can't legally possess
(classified images; images of child abuse; etc), so avoid
projects that require this kind of data.
What we look for in projects
- A systematic approach
Did you think about what are you trying to achieve and
why? Did you think about how what you plan to do or have done will
achieve this?
Example: Imagine you wish to make
a transformer more efficient. Randomly knocking out
layers and hoping isn't that great a strategy.
Ideally, you would think about the ways you might
change the architecture and have reasons to try the
changes you try.
- Context
Did you look up other things other people have done about your problem?
Are you better at this problem than they are, or is
your project new (most unusual)?
Can you make what they did work for you and improve on
it? Have you looked on Github or Huggingface or ArXiv
or google scholar to see what others have
done? Example: Your very ambitious
project might be to make pictures of yourself wearing
clothing that you take from other pictures. It turns
out that lots of people want to do this. You would do
well to poke around Github looking for such systems to
see if you can (a) use them and (b) improve them.
- Evaluation Have you tried to
determine whether what you did is usable for what you
want it for? Example: You want to
build a system that sorts garbage using a detector. You
report the accuracy of the detector. But what matters
here is not the absolute accuracy; it's whether your
thing is accurate enough to be used -- would the local
garbage processor get cross with you?
Proposal
Each person must submit a project proposal. So if your group is four
people, there will be four proposals (but they could be very largely
the same). Your proposal will be by filling in a form on Canvas. This form will
require you to declare:
- Your name(can't help you here)
- List of other group members.
- Informative project title.
- What the group wants to do: Describe the problem you plan to solve
and give a basic outline of what you propose to implement. You can
change later as you go along, but try to think this through as much
as possible in advance. Identify the desired final outcome and pose
maximum and minimum goals.
- How you will do it: A brief description of the
mechanisms you will use.
- What you will do: (as opposed to what the other project
members will do).
- What resources you will need: data, compute, disk
space, etc.
- How you intend to get the resources you will need: No
point in doing something that can't be done.
-
What might go wrong: Try to anticipate which part of the implementation or testing may prove the most difficult. Possible stumbling blocks shouldn't necessarily prevent you from attempting a more ambitious project, but you should make sure that you have a realistic "minimum" goal that can be accomplished.
Progress report
Your progress report will be by filling in a form on Canvas. This form will
require you to declare:
- Your name
- List of other group members.
- Informative project title.
- What you have done to date: Describe the problem you plan to solve
and give a basic outline of what you propose to implement. You can
change later as you go along, but try to think this through as much
as possible in advance. Identify the desired final outcome and pose
maximum and minimum goals.
- How you did it: A brief description of the
mechanisms you have used.
- Changes to your intentions: You might have learned
something that makes you change direction.
-
What might go wrong: Try to anticipate which part of the implementation or testing may prove the most difficult. Possible stumbling blocks shouldn't necessarily prevent you from attempting a more ambitious project, but you should make sure that you have a realistic "minimum" goal that can be accomplished.
We intend that:
- the proposal will receive feedback
- No project without a proposal or a progress report will be in
the top equivalence class.
Final report
The final report should be submitted in PDF format by one designated group member on Canvas.
It should be (the equivalent of) at least six pages (single-spaced, 10 point font) and mimic
the style of a research paper. Here is an outline to follow for the report:
- Introduction: Define and motivate the problem, discuss background material or related work, and
briefly summarize your approach.
- Details of the approach: Include any formulas, pseudocode, diagrams -- anything
that is necessary to clearly explain your system and what you have done. If possible, illustrate
the intermediate stages of your approach with results images.
- Results: Clearly describe your experimental protocols. If you are using training and
test data, report the numbers of training and test images. Be sure to include example output figures.
Quantitative evaluation is always a big plus (if applicable). If you are working with
videos, put example output on YouTube or some other external repository and include links in your
report.
- Discussion and conclusions: Summarize the main insights drawn from your analysis and
experiments. You can get a good project grade with mostly negative results, as long as you show evidence of extensive
exploration, thoughtfully analyze the causes of your negative results, and discuss potential
solutions.
- Statement of individual contribution: Required if there is more than one group member.
- References: including URLs for any external code or data used.
In addition to the report, please submit a zip file of your source code. We are looking for only the most important code that you wrote yourself for the project, not any external libraries. We do not plan to run the code, but want to see it to be able to verify that you actually did the work you claim to have done.
Grading
Grades will be based on the quality of the project (originality, thoroughness, extent of analysis,
etc.) and the clarity of the written report and presentation. Ideally, you will try
something new or apply ideas from class to your domain or research. More will be expected of
larger groups. You can still get a good grade if your ideas do not work out, as long as your presentation and
report show evidence of extensive analysis and exploration, and provides thoughtful explanations
of the observed outcomes.
|