4840-1054: Media Computing in Practice(Summer 2022)

April 6, 2022
Yusuke Matsui1InformationInstructor Yusuke Matsui https://yusukematsui.meDates
 Wednesday, 2nd period (10:25 - 12:10)
Location: Zoom (See ITC-LMS for the Zoom URL)
This lecture is given by the Department of Information and Communication Engineering, Graduate School ofInformation Science and Technology. However, it is open to any graduate student of the University of Tokyo.
2Web: https://media-comp.github.io/2022/3

Web: https://media-comp.github.io/2022/

4

Goal Learn about recent research in the multimedia field(including but not limited to CV, NLP, ML, etc.)

 Learn how to publish your research through the release ofsource code Learn modern software development through theexperience of modifying other students' source codeusing Pull Request
5

Prerequisites

 Coding skill to reproduce existing work

 How to use Git/GitHub
 GitHub account Your GitHub Account name will be public.
 If you don't like it, please create a new account.

6

Seminar & hands-on style

Step 1:
 Read a paper Code it Summarize it Present it

Step 2:
 Create a repository
for the code
 Make the repository
publicly available

Step 3:
 Run others’ repositories
 Create a Pull Request to
update them7

Seminar & hands-on style

Step 1:
 Read a paper Code it Summarize it Present it

Step 2:
 Create a repository
for the code
 Make the repository
publicly available

Step 3:
 Run others’ repositories
 Create a Pull Request to
update them8

Step 1:
 Read a paper Summarize it Code it Present it

 Pick up your favorite paper in your field Any research field w/ coding is acceptable Ok: CV, NLP, ML, CG, HPC, Audio, OS, DB, Network, PL, …
 No: Pure theory w/o coding. Hardware.
 Don’t select a paper from your lab

9

Step 1:
 Read a paper Summarize it Code it Present it Implement the proposed method in the paper (mandatory) reimplement the method (good) benchmark it, improve it, …
 If the official code is available, it’d be better to implement
it yourself and compare it with the official one
 Don't rely too heavily on existing frameworks
 Any programming language is acceptable: C/C++, python,MATLAB, Julia, …
 Recommended OS: Ubuntu

10Step 1:
 Read a paper Summarize it Code it Present it

 Make slides
 Explain the original method in the paper Explain what you’ve done (ingenuity in implementing
the method, benchmark result, etc.)
 The slides will be publicly available
 Prepare X min presentation
 Include self-introduction
 Explain carefully and visually Assume that the audience is high school students andknows nothing about your area.

11Step 1:
 Read a paper Summarize it Code it Present it During the lecture, present what you’ve done
 3 - 4 students are expected to present in each lecture Good presentation is…
 After listening to the presentation, the audience will gain
one new piece of knowledge.

12Seminar & hands-on style

Step 1:
 Read a paper Code it Summarize it Present it

Step 2:
 Create a repository
for the code
 Make the repository
publicly available

Step 3:
 Run others’ repositories
 Create a Pull Request to
update them13

Step 2:
 Create a repository for the code
 Make the repository publicly available

 I will give you a public repository
 Upload the source code you wrote
 Reproducibility is a key
 You should maintain your repo such that otherstudents can run it and reproduce the result
 Follow the basic structure of the repository
14

Step 2:
 Create a repository for the code
 Make the repository publicly available

 Repositories must be located under media-comp organization
https://github.com/media-comp Example of python repository (skeleton code) https://github.com/media-comp/2022-matmul

15 The repo name should be “2022-XXX”
 Let me know “XXX”
 Write CI for testing Write README.md16

 Explain the original paper Write how to setup

 Write how to run
 For ML, write the both training
and testing codes if possible17

 Write docstring Explain your code carefully

18

 Write CI
 The code should be tested by GitHub Actions
 Not necessarily run the full benchmark on CI(e.g., GPUs are not available on gh actions)19 Reproducible at least on gh actions!
20 Good: If you have an idea to extend themethod, please write it on “Issues”

 You can label “good first issue”
 i.e., “Someone help me implement it. It's easy.”21

 “help wanted”

22Seminar & hands-on style

Step 1:
 Read a paper Code it Summarize it Present it

Step 2:
 Create a repository
for the code
 Make the repository
publicly available

Step 3:
 Run others’ repositories
 Create a Pull Request toupdate them23

Step 3:
 Run others’ repositories
 Create a Pull Request to update them Run others’ repositories
 Create Pull Requests, e.g.,
 The code doesn’t work in Mac, so update XXX and YYY
 Add another method for benchmark and run it again
 Find and fix a bug
 Propose another component to improve the method such as
better IO
 If there’re “help-wanted” or “good-first-issue”, you can try it24

Step 3:
 Run others’ repositories
 Create a Pull Request to update them

 It is usually nice idea to create issues and discuss the point
before submitting PRs.
 Remarks:
 modern software development ≅ communication
 Reference: Opensource guideline https://opensource.guide/25

 You can create an issue
on other’s repository Discussion26

 Fork the repo, and create a PR

 The repo owner will review
the PR, and merge/reject it27

Step 3:
 Run others’ repositories
 Create a Pull Request to update them

 Good issues
 Be humble Discuss precisely (e.g., for bug-report, write all necessary
information such as OS, version of software, etc)
 Don’t paste screenshot. Write a log message
 Good PRs
 Don’t make drastic changes
 A small but important contribution
 Independent and easy to review

28Step 3:
 Run others’ repositories
 Create a Pull Request to update them If you receive PRs
 Do review
 Accept or reject Don't be aggressive when asking for corrections

29

Seminar & hands-on style

Step 1:
 Read a paper Code it Summarize it Present it

Step 2:
 Create a repository
for the code
 Make the repository
publicly available

Step 3:
 Run others’ repositories
 Create a Pull Request toupdate them30Step 4:
 Short presentations?

 Another round of (short) presentations about PRs
 Explain the PRs you created Depends on the number of attendees

31Computational resources For CPU: Your own computer Cloud IDE: Google Cloud Shell Editor https://cloud.google.com/shell/docs/launchingcloud-shell-editor
 Free For GPU: Your Lab computer (Ask your professor in advance tosee if it is acceptable to use Lab GPUs for this lecture.) Cloud IDE: Amazon SageMaker Studio Lab https://studiolab.sagemaker.aws/login
 Free32

In summary: (1) when you present By 23:59 of the day before your presentation,
 Let me know the title of the paper Let me know the name of the repo (I will create one foryou under https://github.com/media-comp ) Push your code to the repo
 Submit your slides (pdf) to me You can reach me via Slack
if you are a student of IST ICE If not, e-mail me matsui@hal.t.u-tokyo.ac.jp
or DM me via twitter @utokyo_bunny33

In summary: (2) after your presentation
 If you receive a PR, review and merge/reject it.

34

In summary: (3) when you’re not a presenter Listen to the presentation
 After the presentation, do the following if you like the paper Run the code Send PRs

35

Assessment

 Presentation + Coding (Repo) + PR
 Please submit at least three Pull Requests to different
repositories Attendance?
 I’m tracking your log-in information of Zoom
 Come to the class every time Depending on the number of students attending thelecture, attendance may be used as a grade.
36

If you wish to take this class Please fill out the survey at ITC-LMS today (mandatory)
 I will make a schedule of presentation

 If anyone could present next week, I’d appreciate it!

37

Next week The 1st time presentation, or my lecture

Questionnaire Have you ever reimplemented an existing work in your field?
 Do you know how to use Git/GitHub?
 Do you know “fork”?
 Have you ever created a Pull Request?
 Have you ever reviewed a Pull Request?
 Do you know how to use GitHub actions?
38