Intro to Computer Vision and Machine Learning

Spring 2020

Assignments

Assignment 01

1. "Rozin Mirror"

Due: Tuesday, 02.04.20, before class

Description: Create your own screen-based version of a Daniel Rozin interactive mirror in P5.js, based on the code we wrote in class.

How to submit: Push your final version to your GitHub, and post the link to the work in the corresponding assignment on Canvas. We will have a quick speed-show at the beginning of class, so arrive with your sketch ready to go! Your link should look something like:

yourgithubusername.github.io/code/in_class/day01/01_RozinMirror

2. Reading response: Invisible Images article by Trevor Paglen

Due:Tuesday, 02.04.20, before class

Description:Select a quote from the article that stuck out to you. Write a brief paragraph about why you chose that quote. We will discuss the article in class the day it's due.

How to submit: Write your quote and one-paragraph response in its corresponding Canvas assignment.

Assignment 02 | SOLUTION

1. Text Rain

Due: Tuesday, 02.11.20, before class

Description: Recreate the classic Text Rain interactive installation created by Camille Utterback and Romy Achituv. Personalize it with your own source text, colors, or other effects; the important thing for this assignment is figuring out how to properly display and manipulate the position of each falling letter.

You may attempt it from scratch, but for more in-depth guidelines, as well as some hints/code to get you started, you can use this P5.js sketch here. If you feel you need more explanation/hints, use this P5.js sketch here (it's the same code, just with more explanatory comments).

How to submit: In the Canvas assignment here:

Option 1: Post a link to your Text Rain sketch in the p5.js web editor.

Option 2: Push your final version to your GitHub, then post a link to your sketch running in the browser.

NOTE: Even if you haven't completely figured out the "solution" to this assignment, post whatever progress you made, along with some comments in your code with some questions about where you got stuck. That goes for every assignment!

Assignment 03

1. Open-ended CV project

Due: Tuesday, 02.18.20, before class

Description: Based on the sketches and techniques we've explored in class, create an interactive P5.js sketch with some computer vision implementation. Use this assignment as an opportunity to experiment with some of the code we've been working with. On Tuesday, we'll have a speed-show at the beginning of class, so please arrive with your sketch ready to run.

Your sketch should be viewable in a web page on your personal class website. Additionally, the homepage of your website should have a single image screen-capture of your sketch that works as a link. I fleshed out the sample home page we made in class with some CSS, so it actually looks like a website now (and it's sort of mobile-responsive! Still working on that a bit). You can check that out here: Sample Portfolio Site. Check out the about page of that site if you want to use the code to make your own portfolio page. There's also a link to the page in the left-hand menu, at the bottom.

How to submit: Push your changes to your GitHub site, then submit a link to the sketch that lives on your website to Assignment 03 in Canvas.

Assignment 04

1. Creative Coding exercises

Due: Tuesday, 02.25.20, before class

Description: Using the creative coding tools we went over in class this week, create the following sketches to the best of your ability. They will start simple and increase in complexity. I'll be adding them throughout the day.

How to submit: Push your changes to your GitHub site, then submit a link to an "Assignment 04" page that you create to the Canvas Assignment. That page should have a link to each of the mini-sketches you create for this assignment.

Sample Assignment 4 page. Feel free to make this fancier, but this is acceptable



If you need a little help getting started, you can click on the links of each sketch below. (See if you can figure out the sketches just by looking at the GIFs first!

Assignment 05

1. Mini Midterm

Due: Tuesday, 03.03.20, beginning of class

Description: Don't let the word "midterm" stress you out! You only have a week to work on it, I'm not expecting a masterpiece ;). I consider this assignment similar to what we did week three for our open-ended assignment. That said, I'm going to be a little bit pickier about. We'll be presenting these in class next week, and so I'd like you all to put more consideration into how your audience will interact with your work.

Using a Kinect with this project is encouraged, but optional

    Some things to consider...
  • Will these be projected, or should we experience it on your desktop?
  • What lighting conditions does your piece require?
  • How will we know how to interact with it?
    • Can the piece itself communicate how we should interact with it?
    • Is that through on-screen instructions, or...
    • Is it self-explanatory once you start interacting with it?

Since there's more of a focus on presentation this week, I ask that you come to class prepared with your sketch uploaded to GitHub and ready to show. Part of the requirement for this sketch is showing your work in a web browser, and not just the P5.js online editor

How to submit: Push your changes to your GitHub site, then submit your website link to the Canvas Assignment.

Assignment 06

1. Image Classifier Sketch

Due: Tuesday, 03.10.20, beginning of class

Description: Train an Image Classifier using Teachable Machine, and use your trained model in a P5.js sketch to control some sound or visual element. You should include at least two image classes when you train your model

Check out the code from Day 06 if you need a refresher. You can also check out this Coding Train Teachable Machine Video if you think that might help you too!

How to submit: Put your sketch on a web page and add it to your website, then post a link to it in Canvas. (Technically, I already have your website links from past assignments, so I can just look through those to see your new assignment without you having to post anything new in Canvas...but this way, we can keep a record in Canvas of your completed assignments.) Don't forget to push your changes to GitHub!

2. Readings

Due: Tuesday, 03.10.20

Description: Read the following essays. No written response needed.

  1. The Building Blocks of Interpretability
  2. A Sea of Data: Apophenia and Pattern (Mis-)Recognition

3. Google Experiments

Due: N/A

Description: Spend some time going through the collection of Google AI Experiments (just keep scrolling and they'll continue to appear). Find one or two that interest you the most. Note: some of these are big projects by teams with large budgets; some are more modest individual projects (Teachable Machine itself is a 'Google Experiment'). Write down questions you might have about any of these works that you want to discuss.

Final Project

Guidelines

Due: Tuesday, 05.05.20, beginning of class

Description: The final is an open-ended project. The final output can take any form: installation or web based work (interactive or non-interactive), video, still images, prints. A single work or a series of smaller works. A self-contained idea or a variety of experiments. Have fun with it.

Proposal (Due Tuesday 04/21)

Write up a brief proposal for the project that includes the following:

  1. A brief paragraph describing the project: What will it look like/how will it function? What ideas are you exploring?
  2. A plan for how you'll approach the technical aspect of this project. How will you pull it off? What areas do you need help with? Try to really think through how you would make the thing. Trying writing some pseudo code that's structured how you think your actual code might be structured.
  3. 2-3 art works you found interesting that relate to the final you're thinking about doing.
  4. (If you can find it) An interview with one of the artists you found above where they talk about the work, or some writing they've done about the work.
  5. Sign up for a 20-minute meeting with me on Tuesday, April 21 to talk about the project (please sign up through Canvas in your Canvas Calendar. I posted a video about that in a recent Canvas announcement).