🤗
入门 免费 English

Computer Vision Course

Computer Vision Course

Hugging Face · Hugging Face 团队 · 待确认

[待填写] Computer Vision Course — 来自 Hugging Face 的免费课程

📖 你将学到

  • [待填写]

01 初识计算机视觉

欢迎来到计算机视觉的世界!别被名字吓到,简单来说,就是让电脑“看懂”图片和视频。这门课会用 Hugging Face 平台,全程免费,跟着我一步步来,你也能做出自己的图像识别项目。

核心概念:计算机视觉的核心任务包括图像分类(这张图是猫还是狗)、目标检测(找出图中的人和车)、图像分割(把图中不同物体分开)。我们先用最基础的图像分类入门。

实操步骤:
1) 打开浏览器,访问 Hugging Face 官网(huggingface.co)。国内用户如果访问慢,可以试试镜像站 hf-mirror.com,或者用梯子。
2) 注册一个免费账号,点击右上角“Sign Up”,用邮箱注册就行。
3) 登录后,在顶部搜索栏输入“google/vit-base-patch16-224”,这是谷歌预训练的 ViT 模型,专门做图像分类。
4) 点进模型页面,你会看到“Use in Transformers”按钮,点击它,会弹出一段 Python 代码。别慌,我们复制下来,稍作修改就能用。
5) 打开你的 Python 环境(推荐用 Jupyter Notebook 或 Google Colab)。如果你没有本地环境,直接用 Colab 最方便,国内也能流畅访问。
6) 安装必要的库:在代码单元格里运行 `!pip install transformers pillow`。如果网络慢,可以加 `-i https://pypi.tuna.tsinghua.edu.cn/simple` 用清华镜像。
7) 复制下面这段代码运行:

```python
from transformers import pipeline
# 加载图像分类 pipeline
classifier = pipeline("image-classification", model="google/vit-base-patch16-224")
# 用一张图片测试(你可以换成自己的图片链接)
result = classifier("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco/people.png")
print(result)
```

8) 你会看到输出结果,比如 `[{'label': 'person', 'score': 0.99}]`,表示模型99%确定图中有人。恭喜!你完成了第一个计算机视觉任务。

实用技巧:
- 如果图片链接失效,可以上传本地图片:`classifier("your_image.jpg")`,确保图片在代码同目录下。
- 换模型试试:把 `model` 参数改成 `"microsoft/resnet-50"` 或 `"facebook/convnext-tiny-224"`,看看效果差异。
- 国内用户注意:Hugging Face 会自动下载模型到本地缓存,第一次运行会慢一些,之后会很快。如果下载失败,手动从 hf-mirror.com 下载模型文件放到缓存目录。

现在你已经入门了!下一章我们深入讲如何用模型做更酷的事。

02 用预训练模型做识别

上节课我们用了现成的 pipeline,这节课来点更灵活的——用 Transformers 库直接调用模型,自己控制识别过程。这样你能理解模型内部是怎么工作的,也为后面的微调打基础。

核心知识:Hugging Face 的 Transformers 库把模型分成三部分:处理器(Processor,处理图片)、模型(Model,做预测)、配置(Config,调参数)。我们手动组合它们,就能精细控制。

实操步骤:
1) 打开 Jupyter Notebook 或 Colab,先装库(如果上次装了可跳过):
```python
!pip install transformers pillow torch torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple
```
2) 导入必要模块:
```python
from transformers import ViTImageProcessor, ViTForImageClassification
from PIL import Image
import requests
```
3) 加载模型和处理器,这次我们选一个更小的模型 `"google/vit-base-patch16-224"`:
```python
processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224")
model = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")
```
4) 准备一张图片,比如一张猫图:
```python
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Cat_November_2010-1a.jpg/1280px-Cat_November_2010-1a.jpg"
image = Image.open(requests.get(url, stream=True).raw)
```
5) 用处理器把图片转成模型能理解的数据格式(张量):
```python
inputs = processor(images=image, return_tensors="pt")
# return_tensors="pt" 表示返回 PyTorch 张量
```
6) 让模型预测:
```python
outputs = model(**inputs)
logits = outputs.logits
# logits 是每个类别的得分,我们需要找到最高分的类别
predicted_class_idx = logits.argmax(-1).item()
print("预测类别索引:", predicted_class_idx)
```
7) 把索引转成可读的标签名。模型配置里存着标签列表:
```python
labels = model.config.id2label
print("预测结果:", labels[predicted_class_idx])
```
你应该会看到类似 `"tabby cat"` 之类的输出。

高级玩法:如果你想看模型对前5个最可能类别的判断:
```python
import torch
probs = torch.nn.functional.softmax(logits, dim=-1)
top5 = torch.topk(probs, 5)
for i in range(5):
print(f"{labels[top5.indices[0][i].item()]}: {top5.values[0][i].item():.4f}")
```

实用技巧:
- 如果图片太大,可以预处理时调整尺寸:`processor(images=image, return_tensors="pt", size=224)`。
- 国内用户注意:`requests.get` 有时会因 SSL 证书报错,可以加 `verify=False` 参数,或者用 `urllib` 替代。
- 试试不同模型:把模型名换成 `"microsoft/resnet-50"`,处理器也要对应换成 `ResNetImageProcessor`。

现在你知道了怎么手动调用模型。下一章我们学如何用现成的 Demo 快速试玩,不用写代码也能体验 CV 功能。

03 无需代码的模型试玩

是不是觉得写代码有点累?别担心,Hugging Face 上有很多现成的 Demo,你完全不需要写一行代码,就能体验计算机视觉的各种功能。这对初学者特别友好,能让你快速感受不同模型的能力。

核心平台:Hugging Face 的 Spaces 是一个托管 AI 应用的地方,很多开发者把训练好的模型包装成简单的网页应用,你上传图片就能直接看到结果。

实操步骤:
1) 打开浏览器,访问 huggingface.co/spaces(国内用户推荐用 hf-mirror.com/spaces)。
2) 在搜索框输入“image classification”,你会看到一堆图像分类的 Demo。选一个评分高的,比如“Image Classification with ViT”。
3) 点进去,你会看到界面:左边是上传图片区域,右边是结果显示。点击“Click to Upload”或拖拽一张图片进去(比如你的猫狗照片)。
4) 等待几秒,右边会显示模型预测的类别和置信度。比如上传一张柯基犬照片,可能会显示“Pembroke Welsh Corgi: 98%”。注意:不同模型训练数据不同,结果可能不一样。
5) 换一个任务试试:在 Spaces 搜索“object detection”,找一个 Demo 如“Object Detection with DETR”。上传一张街景照片,它会用方框标出人、车、交通灯等物体。
6) 再试试图像分割:搜索“image segmentation”,比如“SegFormer” Demo。上传图片后,不同物体会被涂上不同颜色,比如天空蓝色、草地绿色。

进阶玩法:有些 Spaces 支持你调整参数。比如在“Zero-shot Image Classification” Demo 里,你可以自己输入类别名称(比如“狗、猫、鸟”),模型会根据你的描述来分类,不需要固定标签。

实用技巧:
- 如果 Spaces 加载慢,可以看页面左下角,有时有“Duplicate this Space”按钮,点击后复制到自己账号下,用你账号的资源运行,速度会快一些。
- 国内用户注意:Spaces 的图片上传功能可能受网络影响,如果上传失败,可以试试用图片 URL 链接(有些 Demo 支持输入 URL)。
- 想找更多 Demo?去 Hugging Face 首页的“Models”标签,选一个模型,往下翻,通常会有“Spaces using this model”部分,直接点进去试玩。
- 手机也能用:Spaces 在手机浏览器上同样流畅,出门在外也能玩。

通过试玩不同 Demo,你就能直观感受到计算机视觉能做什么:分类、检测、分割、甚至生成图片描述。下一章我们学如何把这些能力集成到自己的应用里。

04 搭建你的图片分类应用

学了这么多,是时候动手做一个属于自己的小应用了!这节课我们教你用 Gradio 库,把之前调用的模型包装成一个简单的网页应用,别人也能通过链接访问。整个过程不到20行代码。

准备工作:Gradio 是 Hugging Face 开发的 Python 库,专门用来快速搭建 ML 应用的 UI。你只需要写一个函数,Gradio 会自动生成漂亮的界面。

实操步骤:
1) 打开 Colab 或本地 Jupyter,安装 Gradio 和 Transformers:
```python
!pip install gradio transformers pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
```
2) 导入库并加载模型(我们继续用 ViT):
```python
import gradio as gr
from transformers import pipeline
classifier = pipeline("image-classification", model="google/vit-base-patch16-224")
```
3) 定义一个预测函数,接收图片,返回结果:
```python
def predict_image(image):
results = classifier(image)
# 把结果格式化成字典
return {result['label']: result['score'] for result in results}
```
4) 用 Gradio 创建界面:
```python
demo = gr.Interface(
fn=predict_image,
inputs=gr.Image(type="pil"),
outputs=gr.Label(num_top_classes=3),
title="图片分类器",
description="上传一张图片,看看它是什么!",
)
```
5) 启动应用:
```python
demo.launch(share=True)
```
运行后,你会看到一个本地地址(如 http://127.0.0.1:7860)和一个公网链接(如 https://xxxx.gradio.live)。注意:公网链接默认72小时有效,非常适合分享给朋友测试。

自定义界面:想更酷一点?可以加更多功能:
```python
demo = gr.Interface(
fn=predict_image,
inputs=gr.Image(type="pil", label="上传你的图片"),
outputs=gr.Label(num_top_classes=5, label="预测结果"),
title="我的第一个CV应用",
description="基于 ViT 模型的图片分类器",
examples=["cat.jpg", "dog.jpg"], # 放一些示例图片路径
allow_flagging="never", # 关闭用户反馈标记
)
```

实用技巧:
- 国内用户注意:`launch(share=True)` 生成的公网链接依赖 Gradio 的服务器,有时会被墙。如果访问不了,可以用 `launch(server_name="0.0.0.0", server_port=7860)` 在本地运行,然后用内网穿透工具(如 ngrok)暴露到公网。
- 想让应用长期在线?把代码上传到 Hugging Face Spaces(选 Gradio SDK),它会自动部署,永久可用。
- 换模型超简单:只改 `pipeline` 里的模型名,比如换成 `"microsoft/resnet-50"`,界面不用动。
- 如果图片太大导致内存溢出,可以在 `gr.Image` 里加 `shape=(224,224)` 限制尺寸。

现在你有了一个完整可用的图片分类网页应用!你可以把它部署到 Spaces 上,分享给朋友,或者作为简历项目。课程到这里就结束了,但 CV 的世界远不止这些,去 Hugging Face 探索更多模型吧!

💡 想要更系统的 AI 学习路线?

去 ganhuo.ai 看完整路线图 →
🐑 小羊助手