TJ Computer Vision Club

Welcome!

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!

Join Us!

Content

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.

Instructions:

  1. Create a Kaggle account.
  2. Click on the contest link, which can be found under Lectures.
  3. Review the competition information, input/output (I/O) format, and download any source code and sample data.
  4. Implement your solution and create a submission file.
  5. Submit the file to recieve feedback (feedback meaning specified in competition).
  6. Tweak your solution, resubmit, and repeat to improve feedback and increase your rank on the leaderboard.

Rules and Guidelines:

  1. Use Python.
  2. Do not use libraries unless otherwise specified.
  3. The competition begins the day of the lecture and ends at 11:59:00 PM the following Tuesday.
  4. 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.


Date Lecture Materials
September 15th Orientation + Face Detection Intro Orientation PDF
Orientation Slides
September 29th Image Transformations Lectures Notes
Code Demonstration
Kaggle Contest

Rankings 2018-2019

Quickstart: Using CSL Resources

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):

lthistle@DESKTOP-1IOTSKU:~$ ssh 2021lthistle@remote.tjhsst.edu
2021lthistle@remote.tjhsst.edu's password: <password>
2021lthistle@ras1:~$

Connecting to the Cluster

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.

2021lthistle@ras1:~$ ssh infosphere
2021lthistle@infocube:~$
   

Scheduling a Job

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:

pip3 install torch===1.6.0 torchvision===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

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).