Computer Vision Club meets every Wednesday B block. We focus on the theory and applications of
computer vision, computational photography, computer graphics, machine learning in image processing, and much more, all of which
are unique to only us. Please sign up for our mailing list!
The purpose of computer vision is to extract information from real-world content and use it to solve
real-world problems, for instance, image reconstruction, anomaly detection, and autonomous driving. In
the past few years, CV's popularity and potential began to spike as computational platforms became more
powerful and new ideas were developed. Computer graphics is the reverse process of CV: obtain and image
given environmental conditions. Our goal is to create an engaging environment where all members can
acquire the necessary skills and experience to use CV and CG for their projects and research.
In the fall, we will mainly focus on human and computer vision theory, such as the camera model, feature
extraction, and motion. In the spring, we will explore broader, more complex topics such as object detection
and AI-based image processing.
Contests
We host weekly contests on Kaggle to reinforce the lectures. During previous school years, the winner of each
Kaggle competition would receive a candy bar -- but COVID-19 makes that a bit difficult. As such, we will track
contest standings throughout the year and try to arrange for a prize at the end of the year, when we're hopefully
back in school.
Click on the contest link, which can be found under Lectures.
Review the competition information, input/output (I/O) format, and download any source code and sample data.
Implement your solution and create a submission file.
Submit the file to recieve feedback (feedback meaning specified in competition).
Tweak your solution, resubmit, and repeat to improve feedback and increase your rank on the leaderboard.
Rules and Guidelines:
Use Python.
Do not use libraries unless otherwise specified.
The competition begins the day of the lecture and ends at 11:59:00 PM the following Tuesday.
The leaderboard displayed during the competition and is determined uses only a certain percentage of the test data.
When the competition is over, the hidden test data is used to determine the real leaderboard. This is
to prevent you from writing a solution that is geared towards specific data, which defeats the purpose
of the contest.
Officers
Captain: Sagar Gupta
Captain: Ron Nachum
Teaching Coordinator: Arya Grayeli
Teaching Coordinator: Vishal Kotha
2020-2021
2019-2020
2018-2019
2017-2018
Luke Thistlethwaite
Saketh Gabbita
George Tang
Neil Thistlethwaite
Yusuf Bahm
Ray Bai
Neal Bayya
George Tang
Stephen Huan
Praneeth Reddygari
Alexey Didenkov
Ajith Kemisetti
Hashir Aqeel
Luke Thistlethwaite
Jacob Consalvi
Sylesh Suresh
Selected topics 2021-22
Lectures and contest links are updated throughout the year. Some contests also require additional materials
(shell code, text files, explanations), which are also attached.
We are very fortunate to have access to the TJHSST Computer Systems Lab and, more specifically, computer power it possesses. For various computer science courses and personal projects, you might find a need to tap into this computing power.
Connecting to School Computers with SSH
Before running anything on school computers, you need to actually connect to them. This is simple with an SSH client (such as PuTTY on Windows):
Once you're ssh'd into ras (which stands for remote access server), you can ssh into a workstation or the cluster. We're going to ssh into the cluster, which is called infosphere.
To schedule jobs, the cluster uses a workload manager called Slurm. Let's assume you want to run the following Python program (assuming you have already installed PyTorch):
#hello_pytorch.py
import torch.cuda
import socket
machine_name = socket.gethostname()
print(f"Running a PyTorch program from {machine_name}! I have access to {torch.cuda.device_count()} GPUs")
In our Slurm command, we're going to request two GPUs from the GPU partition. Computers on the cluster are divided into two partitions, compute and gpu. We need a GPU, so we'll be using the latter.
2021lthistle@infocube:~$ srun --partition=gpu --gres=gpu:2 python hello_pytorch.py
Running a PyTorch program from duke! I have access to 2 GPUs
As we can see, Slurm scheduled our program to run on duke, one of the computers on the cluster. We also see that it has access to 2 GPUs. For the machine learning we'll be doing, there's little
added benefit in using multiple GPUs. As such, don't request more than you need because it takes away from resources available to other students.
Languages and Libraries
We use Python3. If you do not have Python3, you must install it following the instructions at
https://www.python.org/downloads/. Installing
Python3 also installs pip3, which you will be using to install other libraries.
The list of Python libraries we'll use throughout the year includes Numpy, OpenCV, and PyTorch.
Computer Vision
OpenCV is a robust computer vision library. To install it, use:
pip3 install opencv-python
OpenCV provides comprehensive installation tutorials using cmake for C++ for Linux, MacOS, and Windows at
their website.
We recommend Linux and MacOS as they have very similiar terminal enviornments.
Machine Learning
For machine learning related tasks, such as object classification, we will mainly be using PyTorch. As of October 7th, PyTorch can be installed with:
However, to install a different version of PyTorch or use a different environment, see the PyTorch website.
Mathematical References
Computer Vision involves vector/matrix algebra and single/multivariable calculus. We will cover the
basics in our lectures. If you want more in-depth, rigorous apporaches, refer to
MIT OpenCourseWare Linear Algebra for vector/matrix algebra
and Calculus Early Transcendentals for
single (chpt. 1-10) /multivariable calculus (chpt. 11-15).