This is the repository for a community-led course on Computer Vision. Once finished, the course will be released in huggingface.co/learn. Below, you can find how you can help us in this effort.
- 🏃♂️ How to get started
- 🤝 How to contribute to course
- 📆 Deadlines
- 💝 Prizes
- 📝 Content guidelines (Syntax, Notebooks, Becoming a Reviewer)
- 🫂 Asking for Help
-
Join us in Discord 👾
Join the Hugging Face discord, take the role open-source and join us at the channel #cv-community-project.
![image](https://private-user-images.githubusercontent.com/70143200/273146389-c13d5b34-ed1c-4f12-b044-192484b94f9d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NTcyMzYsIm5iZiI6MTcyMzg1NjkzNiwicGF0aCI6Ii83MDE0MzIwMC8yNzMxNDYzODktYzEzZDViMzQtZWQxYy00ZjEyLWIwNDQtMTkyNDg0Yjk0ZjlkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE3VDAxMDg1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFiYzAwNDFiOGU4YzU3ZjgwZmI5NzVhYTlmZDEwMGU1YWMzOTBlMmM3YjQzZWViM2RkZmU4ZjBjOTU2NjUzMWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.KRi--qOuk0rUhL8QNrZUGNlN1di5gI3lVB5qMUK1dU8)
![image](https://private-user-images.githubusercontent.com/70143200/273146871-b3372a47-711f-4b43-bc85-0ba2b6f8b914.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NTcyMzYsIm5iZiI6MTcyMzg1NjkzNiwicGF0aCI6Ii83MDE0MzIwMC8yNzMxNDY4NzEtYjMzNzJhNDctNzExZi00YjQzLWJjODUtMGJhMmI2ZjhiOTE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE3VDAxMDg1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBjNTVhN2M3YzlmYmQwZjNjZTgwNTA5ZGE2M2ZhNTUxZGQxYTUzYjMzNjM2MjlhZDEwYTlkZTZhZGUzZTA3ZjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.CAqrYqHsWCnEwaYZkz-7TXGWKYXEPsPZSdDz7CarEPY)
- Pick a section from the table of contents and add your first name and discord username there. (Please only sign up for two chapters maximum for now.)
- Connect with your team members in Discord
Important Note: If you’ve never contributed to open-source projects on GitHub, kindly read this document to learn how to do so.
Before you, start reading more on the contribution guidelines, this is how our course outline looks like:
.
└── chapters/
├── chapter0/
│ ├── introduction.mdx
│ └── getting_started.mdx
├── chapter1/
│ └── ...mdx
└── _toctree.yml
- First go to the discussion section.
- Each new chapter outline should be put up under a pinned discussion. As shown in this example.
- Each chapter can contain multiple topics and sub-topics. All of that should be defined in the chapter outline. Also, for each sub-topic, a single contributor should be assigned to work on that. See more in this example.
- Interested contributors motivated to work in a common chapter can come together to form a team. Where each contributor can directly contribute to a sub-topic and other fellow teammates can act as reviewers.
- One contributor from each team should fork the repository and other contributors should mutually agree on working collaboratively under that forked repo.
- Under the forked repo, contributors should create issues (that will be the sub-topic name) and start working on that issue.
- When contributors work on a subtopic, they should follow the below instructions:
- Create
.mdx
files or Jupyter Notebooks for the sub-topics you want to contribute to - Make sure to update the requirements.txt file in the root of the repository
- When you feel like you are ready, create a pull request to this repository.
- Your teammates will review your PR under that forked repo and then if things get approved, you can create the PR to merge it in our main branch 🤗
- Create
Tip: Contribute one subsection at a time, so that it’s not overwhelming for both you and reviewers.
We are aiming to have the version 1 of the course with this sprint.
Sprint Beginning: Dec 3rd
Submission for Pull Request Reviews Deadline: Dec 13th
Iterating over Pull Reviews until: Dec 27th
First version will be complete before December 29th.
We will have prizes for those who contribute to the course 🤗 Moreover, each contributor will have their name added to credits section of the associated chapter.
- We will provide one month of Hugging Face PRO subscription or GPU grant.
- You can earn the special merch made for this sprint (with the logo of this sprint). 👕👚
The amount of contribution required to earn the prizes will be announced. Stay tuned!
Syntax and Doc Rules ❗️❗️
These rules are required to render the course on hf.co/learn 😊
- Every chapter should have a main header (h1, e.g. # Introduction) before the content.
- We can use the syntax features in Hugging Face course! This includes 👇
Tip Blocks Write tips like so:
<Tip>
Write your note here
</Tip>
You can write warnings like this:
<Tip warning={true}>
Framework Dependent Code To have multiple frameworks in one code snippet with a toggle, you can do:
<frameworkcontent>
<pt>
PyTorch content goes here
</pt>
<tf>
TensorFlow content goes here
</tf>
<flax>
Flax content goes here
</flax>
</frameworkcontent>
Embedding Gradio Demos
You can embed any Gradio demo that is hosted on Hugging Face Spaces like below 👇 Just provide the src
the url {{username}}-{{space_id}}.hf.space
.
<iframe
src="https://openai-whisper.hf.space"
frameborder="0"
width="850"
height="450">
</iframe>
Anchor Links for Headers If you want to refer to a section inside the text, you can do it like below 👇
## My awesome section[[some-section]]
// the anchor link is: `some-section`
Code Blocks
You can write codeblocks by wrapping it with three backticks. Please add the associated language code, e.g. py
or bash
after top backticks to enable language specific rendering of code blocks.
LaTeX
You can write in-line LaTeX by writing it like this: \\( X )\\
You can write stand alone LaTeX by enclosing with $$
.
For example 👇
$$Y = X * \textbf{dequantize}(W); \text{quantize}(W)$$
- Add your chapter to
_toctree.yml
.
- Note that the directory structure is as follows, so when you add a new chapter, make sure to stick to it:
.
└── course/
└── chapters/
├── chapter0/
│ ├── introduction.mdx
│ └── getting_started.mdx
├── chapter1/
│ └── ...mdx
└── _toctree.yml
-
If you need advice on the tone of your content, feel free to check out Hugging Face Audio Course as it's a good example.
-
Before contributing, please read the general contribution guide.
-
If you have any images, videos and more in your PRs, please store them in this Hugging Face repository to keep this repository lightweight. You can ask for an access to the organization if you aren't a part of it yet. The steps to do so are below 👇
- Request to join the https://huggingface.co/hf-vision organization.
- Upload an image to https://huggingface.co/datasets/hf-vision/course-assets, e.g. via the web UI.
- Get the URL (e.g. if there's blob in the link replace with resolve https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/all_models.png) right click to "Download" button and copy the link.
- Use that in standard markdown like
Thanks to Hugging Face's documentation builder, when we add [[open-in-colab]]
on top of .mdx
files, it creates a button that you can automatically open a notebook containing the notebook version of your markdown file. If you still want to create a notebook that is separate from markdown (and the markdown is complete by means of context you're providing in the notebook), you can do so, in the notebooks folder. Make sure to add it to the associated chapter's folder under notebooks (and if it doesn't exist, feel free to create it).
Is everything already assigned, but do you want to contribute to the course? No worries, you can still become a reviewer! This will allow you to review the notebooks and READMEs and give feedback to the authors.
- Go here and at the bottom choose the "Reviewers" tab,
- Add your first name and GitHub username,
- You'll be added to the repo as a contributor and will be able to review Pull Requests (PRs)!
- Assign yourself to any PRs you think make sense for you,
- While reviewing, ask yourself if the changes and additions make sense - After all, the most important part of a course is conveying ideas properly, which makes the learning experience smoother.
- Share your feedback and ideas with the authors on how they can improve. In the long term, we're aiming to make a robust, high-quality course accessible to everyone!
- Finally, every PR can be merged when it has two approvals from reviewers.
Do not hesitate to ask for help in #cv-community-project channel. 🫂
-
For an easier collaboration when working on notebooks together, feel free to use ReviewNB, which is free for open-source and educational use cases.
-
In the requirements.txt file you can find some packages that can be helpful when creating the material. As we're originating from the HuggingFace community, we can recommend using the transformers, datasets, evaluate and timm libraries.