资讯动态

Transformers 任务全景指南:用 Pipeline 三行代码完成 NLP、计算机视觉、音频与多模态任务

发布时间:2026/9/11 17:24:44 来源:尧图企业网站定制
Transformers 任务全景指南用 Pipeline 三行代码完成 NLP、计算机视觉、音频与多模态任务【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers Transformers 是一个覆盖自然语言处理NLP、计算机视觉以及音频/语音处理的预训练模型库不仅包含 Transformer 架构也包含用于视觉任务的现代卷积网络等非 Transformer 模型。本文以 docs/source/es/task_summary.md 的任务总览为骨架系统梳理音频、视觉、NLP、多模态四类任务的定义、应用场景与实战代码并深入仓库源码说明pipeline统一推理接口的底层实现与调用关系。读完本文你将掌握如何用三行代码完成情感分析、语音识别、目标检测、文档问答等典型任务并理解这些能力在当前仓库中的落点与扩展方式。Pipeline三行代码背后的统一推理入口原文档反复强调仅用三行代码即可解决各类任务其关键正是pipeline这一高层封装。在仓库中所有任务代码示例都从同一入口出发 from transformers import pipelinepipeline函数定义在 src/transformers/pipelines/init.py它会根据传入的task字符串在SUPPORTED_TASKS映射表中查找到对应的 Pipeline 实现类并实例化。从源码可见pipeline()支持的核心参数包括task任务名称如sentiment-analysis、audio-classification、object-detectionmodel模型名称Hub 上的模型 ID或已加载的模型实例不传时使用该任务的默认模型config、tokenizer、feature_extractor、image_processor、video_processor、processor各类预处理组件的覆盖选项revision模型版本分支/标签/commitdevice/device_map指定推理设备或分布式放置策略dtype推理精度如autotrust_remote_code是否允许运行仓库自定义代码其余**kwargs如batch_size、top_k会透传给具体的 Pipeline 实例。例如sentiment-analysis是text-classification的别名源码第 137 行二者指向同一个 Pipeline 类。每个任务都有对应的独立实现文件例如 audio_classification.py、automatic_speech_recognition.py、image_segmentation.py、document_question_answering.py 等均位于src/transformers/pipelines/目录下。这意味着同一套pipeline抽象统一了不同模态的预处理、模型推理与结果后处理流程。下面按模态逐一展开各类任务。音频与语音任务音频任务与其他模态最本质的差异在于音频输入是连续信号。与文本不同原始音频波形无法像句子切分为单词那样被整齐地分割成离散单元。解决办法是以固定时间间隔对原始信号进行采样——每个间隔内采样的样本越多采样率越高音频就越接近原始声源。早期做法是先预处理音频、人工提取有用特征现在更常见的做法是把原始音频波形直接送入特征编码器提取音频表示从而简化预处理步骤并让模型自行学习最核心的特征。音频分类Audio Classification音频分类是从预定义类别集合中为音频数据打标签的任务属于覆盖极广的类别典型应用包括声学场景分类用场景标签办公室、海滩、体育场标记音频声学事件检测用声音事件标签汽车喇叭声、鲸鱼叫声、玻璃破碎声标记音频标记tagging为包含多种声音的音频打标签如鸟鸣、会议中的说话人识别音乐分类用流派标签金属、嘻哈、乡村标记音乐。三行代码示例来自原文档模型为superb/hubert-base-superb-er输出按置信度排序的标签列表 from transformers import pipeline classifier pipeline(taskaudio-classification, modelsuperb/hubert-base-superb-er) preds classifier(https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac) preds [{score: round(pred[score], 4), label: pred[label]} for pred in preds] preds [{score: 0.4532, label: hap}, {score: 0.3622, label: sad}, {score: 0.0943, label: neu}, {score: 0.0903, label: ang}]从源码结构看该任务由 audio_classification.py 中的AudioClassificationPipeline实现它负责对输入音频路径、URL 或波形数组调用特征编码器预处理再由分类头输出各类别得分最后格式化为{score, label}结构。示例中的hubert-base-superb-er是经过 SUPERB 基准微调的情感识别模型因此输出haphappy、sad、neuneutral、angangry等情感标签。自动语音识别ASR自动语音识别Automatic Speech RecognitionASR将语音转录为文本是最常见的音频任务之一——语音本就是人类自然的交流方式。如今 ASR 已嵌入音箱、手机、汽车等智能产品用户可以要求虚拟助手播放音乐、设置提醒、播报天气。Transformer 架构帮助攻克的关键挑战之一是低资源语言通过在大量语音数据上预训练即便只用一小时低资源语言的标注语音数据微调仍能取得与以往用 100 倍标注数据训练的传统 ASR 系统相当的高质量结果。 from transformers import pipeline transcriber pipeline(taskautomatic-speech-recognition, modelopenai/whisper-small) transcriber(https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac) {text: I have a dream that one day this nation will rise up and live out the true meaning of its creed.}该任务由 automatic_speech_recognition.py 中的AutomaticSpeechRecognitionPipeline实现输出为包含转录文本的{text: ...}字典。示例使用openai/whisper-small模型输入是马丁·路德·金演讲音频模型直接输出对应英文文本。计算机视觉任务计算机视觉最早的成功案例之一是用卷积神经网络CNN识别邮政编码数字图像。图像由像素组成每个像素都有数值因此图像可以表示为像素值矩阵每个像素值组合描述了图像的颜色。视觉任务大体有两条解决路径用卷积学习图像的层次化特征从低级特征逐步到高级抽象特征把图像切成块patch用 Transformer 逐步学习每个图像块之间的关联以构成整幅图像——与 CNN 自底向上的方式不同这更像是从一张模糊图像开始、逐步聚焦变清晰。图像分类Image Classification图像分类将整幅图像标记为预定义类别集合中的某个类应用场景广泛医疗健康标记医学影像以检测疾病或监测患者状况环境标记卫星图像以监测森林砍伐、辅助野外管理或检测野火农业标记作物图像以监测植物健康或用卫星图像做土地利用监测生态学标记动植物物种图像以监测野生种群、追踪濒危物种。 from transformers import pipeline classifier pipeline(taskimage-classification) preds classifier( ... https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg ... ) preds [{score: round(pred[score], 4), label: pred[label]} for pred in preds] print(*preds, sep\n) {score: 0.4335, label: lynx, catamount} {score: 0.0348, label: cougar, puma, catamount, mountain lion, painter, panther, Felis concolor} {score: 0.0324, label: snow leopard, ounce, Panthera uncia} {score: 0.0239, label: Egyptian cat} {score: 0.0229, label: tiger cat}示例未显式指定modelpipeline会自动加载该任务的默认模型从源码SUPPORTED_TASKS映射可见image-classification有默认模型与对应的 image_classification.py 实现类。输入一张猫的图片输出按得分排序的多组{score, label}其中得分最高的是 lynx, catamount猞猁/山猫。目标检测Object Detection与图像分类不同目标检测要在图像中识别多个对象并给出每个对象在图像中的位置由边界框bounding box 定义。典型应用自动驾驶检测日常交通对象如其他车辆、行人、红绿灯遥感灾害监测、城市规划、天气预报缺陷检测检测建筑物裂缝或结构损伤以及制造业产品缺陷。 from transformers import pipeline detector pipeline(taskobject-detection) preds detector( ... https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg ... ) preds [{score: round(pred[score], 4), label: pred[label], box: pred[box]} for pred in preds] preds [{score: 0.9865, label: cat, box: {xmin: 178, ymin: 154, xmax: 882, ymax: 598}}]输出中的box字段xmin/ymin/xmax/ymax即边界框的像素坐标。该能力由 object_detection.py 中的ObjectDetectionPipeline提供推理时对输入图像执行目标检测并过滤低置信度结果。图像分割Image Segmentation图像分割是像素级任务将图像中每个像素分配到某个类别。相比用边界框标记对象的检测任务分割粒度更细能在像素级别勾勒对象轮廓。常见分割类型实例分割除标记对象类别外还区分同一类别的不同实例dog-1、dog-2全景分割语义分割与实例分割的结合——既为每个像素标记语义类别又区分每个对象的不同实例。分割在自动驾驶中用于构建周围世界的像素级地图以便安全绕开行人与车辆在医学影像中更细的粒度有助于识别异常细胞或器官特征在电商中还可用于虚拟试衣或通过摄像头把虚拟物体叠加到现实世界打造增强现实体验。 from transformers import pipeline segmenter pipeline(taskimage-segmentation) preds segmenter( ... https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg ... ) preds [{score: round(pred[score], 4), label: pred[label]} for pred in preds] print(*preds, sep\n) {score: 0.9879, label: LABEL_184} {score: 0.9973, label: snow} {score: 0.9972, label: cat}输出中除类别标签snow、cat外还可能包含LABEL_184这类需要结合模型标签映射表解释的类别编号。实现位于 image_segmentation.py。深度估计Depth Estimation深度估计预测图像中每个像素到相机的距离对场景理解与重建尤为重要。例如自动驾驶车辆需要知道行人、交通标志、其他车辆的距离以避障防撞深度信息也有助于从 2D 图像构建 3D 表示可生成生物结构或建筑物的高质量 3D 模型。两种主流方法立体stereo通过比较同一场景两张角度略有不同的图像来估计深度单目monocular从单张图像直接估计深度。 from transformers import pipeline depth_estimator pipeline(taskdepth-estimation) preds depth_estimator( ... https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg ... )该任务由 depth_estimation.py 中的DepthEstimationPipeline实现输出通常包含深度图predicted_depth与对应的深度彩色化图像depth。自然语言处理任务NLP 任务是最常见的任务类型之一因为文本是人类最自然的交流方式。要让文本变成模型可识别的格式必须先分词tokenize把文本序列切分成独立的单词或子词tokens再把 tokens 转换为数字。于是文本序列变成数字序列即可输入模型解决各类 NLP 任务。分词细节可参考 docs/source/en/tokenizer_summary.md 与 docs/source/en/glossary.md。文本分类Text Classification与任何模态的分类任务一样文本分类为一段文本句子、段落或文档级别从预定义类别集合中打标签。常见应用情感分析按极性如positive/negative标记文本支撑政治、金融、营销等领域的决策内容分类按主题如天气、体育、金融组织与过滤新闻、社交媒体信息流。 from transformers import pipeline classifier pipeline(tasksentiment-analysis) preds classifier(Hugging Face is the best thing since sliced bread!) preds [{score: round(pred[score], 4), label: pred[label]} for pred in preds] preds [{score: 0.9991, label: POSITIVE}]如前所述sentiment-analysis是text-classification的别名见 src/transformers/pipelines/init.py 中SUPPORTED_TASKS映射两者都指向 text_classification.py 中的TextClassificationPipeline。Token 分类Token Classification任何 NLP 任务中文本都会被切分为单词或子词这些单元即tokens。Token 分类为每个 token分配一个预定义类别集合中的标签。两种常见子任务命名实体识别NER按实体类别组织、人物、地点、日期标记 token。NER 在生物医学领域尤其流行可标记基因、蛋白质和药物名称词性标注POS按词性名词、动词、形容词标记 token帮助翻译系统理解两个相同单词在语法上的差异如作为名词的 bank 与作为动词的 bank。 from transformers import pipeline classifier pipeline(taskner) preds classifier(Hugging Face is a French company based in New York City.) preds [ ... { ... entity: pred[entity], ... score: round(pred[score], 4), ... index: pred[index], ... word: pred[word], ... start: pred[start], ... end: pred[end], ... } ... for pred in preds ... ] print(*preds, sep\n) {entity: I-ORG, score: 0.9968, index: 1, word: Hu, start: 0, end: 2} {entity: I-ORG, score: 0.9293, index: 2, word: ##gging, start: 2, end: 7} {entity: I-ORG, score: 0.9763, index: 3, word: Face, start: 8, end: 12} {entity: I-MISC, score: 0.9983, index: 6, word: French, start: 18, end: 24} {entity: I-LOC, score: 0.999, index: 10, word: New, start: 42, end: 45} {entity: I-LOC, score: 0.9987, index: 11, word: York, start: 46, end: 50} {entity: I-LOC, score: 0.9992, index: 12, word: City, start: 51, end: 55}示例输出中I-ORG表示组织实体Hugging Face、I-MISC表示其他实体French、I-LOC表示地点New York Cityword字段保留子词切分如Hu##ggingstart/end是实体在原始文本中的字符偏移。实现见 token_classification.py。问答Question Answering问答是另一个 token 级任务返回问题的答案有时带上下文开放领域有时不带封闭领域。虚拟助手回答餐厅是否营业、客服技术支持、搜索引擎检索相关信息都属于问答的落地场景。两种常见类型提取式extractive给定问题与上下文答案是从上下文中提取出的一段文本抽象式abstractive给定问题与上下文答案由模型从上下文中生成。该任务在仓库中由 question-answering 示例与 pipeline 实现共同支撑示例目录包含完整的训练/推理脚本与说明文档examples/pytorch/question-answering/README.md。摘要Summarization摘要从较长文本生成较短版本同时尽量保留原文核心含义。摘要是**序列到序列sequence-to-sequence**任务输出比输入更短的文本序列。立法草案、法律与财务文件、专利、科学论文等长文档都可以摘要帮助读者快速抓住要点。与问答类似摘要有两种类型提取式extractive从原文中识别并抽取最重要的句子抽象式abstractive从原文生成目标摘要可能包含输入文档中不存在的新词。翻译Translation翻译把一种语言的文本序列转换为另一种语言帮助不同背景的人交流、让内容触达更广受众也可作为语言学习工具。与摘要一样翻译是序列到序列任务模型接收输入序列返回目标输出序列。早期翻译模型大多是单语的而近期业界越来越关注可在多种语言组合间互译的多语言模型。语言模型Language Modeling语言模型预测文本序列中的一个词是非常流行的 NLP 任务——因为预训练语言模型可被微调用于众多下游任务。近年来大语言模型LLMs展示了**零样本zero-shot与少样本few-shot**学习能力即模型可以解决未被显式训练过的任务。语言模型可生成流畅且有说服力的文本但需注意生成内容并不总是准确的。两种类型因果causal模型目标是预测序列中的下一个 token未来 tokens 被掩蔽 from transformers import pipeline prompt Hugging Face is a community-based open-source platform for machine learning. generator pipeline(tasktext-generation) generator(prompt) # doctest: SKIP掩蔽masked模型目标是预测序列中被掩蔽的 token同时对序列中所有 tokens 拥有完全访问权 text Hugging Face is a community-based open-source mask for machine learning. fill_mask pipeline(taskfill-mask) preds fill_mask(text, top_k1) preds [ ... { ... score: round(pred[score], 4), ... token: pred[token], ... token_str: pred[token_str], ... sequence: pred[sequence], ... } ... for pred in preds ... ] preds [{score: 0.2236, token: 1761, token_str: platform, sequence: Hugging Face is a community-based open-source platform for machine learning.}]两段示例分别对应 text_generation.py 与 fill_mask.py 中的实现fill_mask通过top_k1只返回得分最高的补全结果输出中token是预测 token 的 IDtoken_str是其文本形式sequence是补全后的完整句子。多模态任务多模态任务要求模型同时处理多种数据模态文本、图像、音频、视频以解决特定问题。图像描述image captioning就是典型例子模型接收图像输入输出描述图像或其属性的文本序列。尽管多模态模型处理的数据类型各异内部预处理步骤会帮助模型把各类数据统一转换为embeddings包含数据有意义信息的向量/数字列表。以图像描述为例模型学习的是图像 embedding 与文本 embedding 之间的关系。文档问答Document Question Answering文档问答是从文档中回答自然语言问题的任务。与输入纯文本的 token 级问答不同文档问答把文档图像连同问题一起作为输入返回答案。它可用于解析结构化文档并抽取关键信息——下面的例子中从一张收据图像中抽取了总金额 from transformers import pipeline from PIL import Image import requests url https://huggingface.co/datasets/hf-internal-testing/example-documents/resolve/main/jpeg_images/2.jpg image Image.open(requests.get(url, streamTrue).raw) doc_question_answerer pipeline(document-question-answering, modelmagorshunov/layoutlm-invoices) preds doc_question_answerer( ... questionWhat is the total amount?, ... imageimage, ... ) preds [{score: 0.8531, answer: 17,000, start: 4, end: 4}]示例中用requests拉取收据图片并用 PIL 打开随后用magorshunov/layoutlm-invoices模型回答总金额是多少得到答案17,000。该任务实现位于 document_question_answering.py仓库对应的模型族包括 layoutlm 系列tests/models/layoutlm、tests/models/layoutlmv2 等测试目录可佐证。结语从任务概览到动手实践至此本文沿原文档脉络覆盖了四大模态的十余类任务音频音频分类、ASR、视觉图像分类、目标检测、图像分割、深度估计、NLP文本分类、Token 分类、问答、摘要、翻译、语言模型以及多模态文档问答每一类都给出了可直接运行的三行代码示例并指出了仓库中对应的 pipeline 实现文件方便你继续深入阅读源码。需要指出的是pipeline只是 Transformers 的高层入口若要进一步了解 pipeline 的组装细节预处理、推理、后处理的完整流程可继续阅读 docs/source/en/pipeline_tutorial.md若想从任务视角快速体验完整 API可参考 docs/source/en/quicktour.md安装与环境配置请参阅 docs/source/en/installation.md。原文档提到的任务机制详解Transformers 如何解决这些任务对应内容可结合上述文档与src/transformers/pipelines/下的源码逐步深入。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价