🤗
入门 免费 English

Robotics Course

Robotics Course

Hugging Face · Hugging Face 团队 · 待确认

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

📖 你将学到

  • [待填写]

01 认识机器人课程

你好呀!欢迎来到这门来自 Hugging Face 的免费机器人课程。别被“机器人”三个字吓到,这门课是 零基础友好 的,你不需要有编程或硬件经验。我们主要会用 Python 和一些现成的工具来模拟机器人行为,让你快速上手。

这门课的核心是让你理解机器人如何“思考”和“行动”。我们会用到 Hugging Face 上的模型和库,比如 TransformersGymnasium(一个强化学习环境)。考虑到国内网络,建议你提前准备好以下环境:

1)安装 Python 3.8 或更高版本(推荐 3.10)。去 python.org 下载就行,或者用 Anaconda 管理环境。
2)在命令行里运行以下命令安装依赖库(如果下载慢,可以用国内镜像源,比如清华源):
pip install transformers gymnasium numpy torch --index-url https://pypi.tuna.tsinghua.edu.cn/simple
3)注册一个 Hugging Face 账号(huggingface.co),方便后面下载模型。如果打不开官网,可以用镜像站 hf-mirror.com。
4)准备一个文本编辑器(VS Code 或 Jupyter Notebook 都行)。

这门课一共 4 个章节,我们会从最简单的“让机器人说话”开始,一步步到“让机器人自己学走路”。每章都有可以直接跑的代码和 Prompt 模板。准备好了吗?我们开始吧!

02 让机器人开口说话

机器人怎么才能像人一样聊天?其实不需要自己写 AI,直接用 Hugging Face 上别人训练好的模型就行。这一章我们会用 Transformers 库 加载一个对话模型,让机器人回答你的问题。

操作步骤:
1)打开你的 Python 环境(比如 Jupyter Notebook),新建一个文件。
2)导入 Transformers 库,并加载一个中文对话模型。这里我们选 Qwen/Qwen2-0.5B-Instruct(这是一个阿里出的轻量模型,国内可正常下载):

from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2-0.5B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)

3)写一个简单的对话函数:

def chat_with_robot(prompt):
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(inputs.input_ids, max_new_tokens=100)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response.split("assistant")[-1].strip()

4)测试一下:print(chat_with_robot("你好,你叫什么名字?"))
你应该会看到机器人回答:“我是Qwen,一个AI助手。”

实用技巧:如果第一次下载模型很慢,可以在终端设置环境变量 export HF_ENDPOINT=https://hf-mirror.com 再运行代码。另外,max_new_tokens 控制回答长度,调大可以让机器人说更多话。

试试用这个 Prompt 模板:
prompt = "请用一句话解释什么是机器人"
然后运行 chat_with_robot(prompt)。你会发现机器人不仅能聊天,还能帮你解释概念。这就是 Hugging Face 模型的魔力——你不需要训练,直接拿来用就行!

03 让机器人感知世界

光会聊天还不够,机器人得能“看”到东西。这一章我们用 图像分类模型 让机器人识别图片里的物体。我们会用到 Google ViT(Vision Transformer)模型,它能把图片变成文字描述。

操作步骤:
1)安装 Pillow 库来处理图片:pip install Pillow
2)加载一个预训练的图像分类模型。我们用 google/vit-base-patch16-224(国内可访问):

from transformers import ViTForImageClassification, ViTImageProcessor
from PIL import Image
import requests

model_name = "google/vit-base-patch16-224"
processor = ViTImageProcessor.from_pretrained(model_name)
model = ViTForImageClassification.from_pretrained(model_name)

3)找一张图片来测试。你可以用网上的一张猫图:

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/cats.png"
image = Image.open(requests.get(url, stream=True).raw)

如果网络不行,也可以本地放一张 jpg 图片,用 image = Image.open("你的图片.jpg")
4)让模型识别:

inputs = processor(image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("预测类别:", model.config.id2label[predicted_class_idx])

你应该会看到输出:“tabby cat”或类似结果。

实用技巧:模型返回的是英文标签,如果你想看中文,可以自己建一个映射表,比如 label_map = {"tabby cat": "虎斑猫"}。另外,图片大小会自动调整为 224x224,所以不用担心尺寸问题。

试试用你自己的照片(比如手机拍的水杯或书),看看模型能不能认出来。如果识别错了,别担心——模型的准确率取决于训练数据,它可能不认识“保温杯”这种国内常见物品。这时候你可以换一个更通用的模型,比如 microsoft/resnet-50

04 让机器人学会走路

最后一章来点酷的:让机器人在模拟环境里自己学会走路。我们会用 Gymnasium强化学习,让一个虚拟机器人通过试错学会平衡和移动。别怕,代码已经帮你写好了,你只需要跑一下就能看到效果。

操作步骤:
1)安装 Gymnasium 的经典控制环境:pip install gymnasium[classic-control]
2)我们用一个最简单的环境 CartPole-v1(小车上立一根杆子),目标是让杆子不倒:

import gymnasium as gym
env = gym.make("CartPole-v1", render_mode="human")
observation, info = env.reset()
for _ in range(1000):
action = env.action_space.sample() # 随机动作,先看看效果
observation, reward, terminated, truncated, info = env.step(action)
if terminated or truncated:
observation, info = env.reset()
env.close()

运行后你会看到一个窗口,小车在乱晃,杆子很快就倒了——因为我们是随机动作。
3)现在用 简单策略 来改进:如果杆子向左倒,我们就向右推小车。写一个规则:

def simple_policy(obs):
angle = obs[2] # 杆子的角度
if angle < 0:
return 0 # 向左推
else:
return 1 # 向右推

然后在循环里用 action = simple_policy(observation) 替代随机动作。你会发现杆子能立更久了,但还不够稳。
4)如果想更智能,可以用 Hugging Face 上的 强化学习模型。加载一个预训练的策略:

from huggingface_hub import hf_hub_download
import pickle
model_path = hf_hub_download(repo_id="sb3/cartpole-v1", filename="model.pkl")
with open(model_path, "rb") as f:
model = pickle.load(f)

然后用 action, _ = model.predict(observation) 来决策。这个模型是 Stable-Baselines3 训练的,效果比随机好很多。

实用技巧:如果 render_mode="human" 不显示窗口,可能是因为你没有图形界面(比如在服务器上)。可以改成 render_mode="rgb_array" 然后保存为视频。另外,强化学习训练很耗时间,我们这里直接用现成模型,省时省力

课后挑战:试着修改 simple_policy 里的角度阈值,或者加入速度信息,看看能不能让杆子立得更久。这就是机器人的“学习”过程——不断调整策略,直到找到最优解。恭喜你,你已经走完了机器人入门课程!

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

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