窝牛号

NLP领域的transformer模型竟然也可以使用到计算机视觉任务上?

上期图文教程,我们分享了DETR模型,一个使用transformer模型的对象检测任务模型

此模型是Facebook发布的基于Transformer模型的端对端对象检测任务模型-- DETR(detect Transformer模型)。DETR模型首先使用CNN卷积神经网络搜集图片的核心特征点,然后把这些特征点整合起来,通过embedding方法,把特征图片转换到特征向量空间。然后根据标准Transformer模型的编码器与解码器进行注意力机制的计算,最后把计算后的数据进行图片对象的分类,并根据检测到的位置信息,提供对象box区域,方便我们画图。

上期教程,我们分享了如何使用TorchHub集成的DETR模型来进行对象检测任务,本期我们介绍一下如何使用hugging face集成的DETR模型进行对象检测任务。

hugging face中的transformers模型已经集成了DETR模型,我们可以直接使用hugging face的transformers模型来进行对象检测任务。

pip install transformers 39;&39; Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.65.0) Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.14.1->transformers) (2023.4.0) Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.14.1->transformers) (4.5.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (1.26.15) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2022.12.7) Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2.0.12) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4) Installing collected packages: tokenizers, huggingface-hub, transformers Successfully installed huggingface-hub-0.14.1 tokenizers-0.13.3 transformers-4.29.2 &39;&url = &34; 39;11.png&34;RGB&34;facebook/detr-resnet-50&34;facebook/detr-resnet-50&34;pt&34;scores&34;labels&34;boxes&34;Detected {model.config.id2label[label.item()]} with confidence &34;{round(score.item(), 3)} at location {box}" )

首先我们需要从transformers库中导入DETR模型的函数,一个是DetrImageProcessor图片处理函数,一个是DetrForObjectDetection对象检测函数,然后我们从本地输入一张照片,当然我们也可以从一个URL地址中获取一张照片,这里需要注意的是,当从本地打开一张照片时,我们需要使用convert函数,把图片转换到RGB空间。

然后我们建立processor预处理函数与model模型预测函数,然后我们的图片就可以送进processor函数进行图片的预处理操作,图片经过预处理完成后,我们可以把处理后的数据传递给model模型进行对象的预测工作,当预测完成后,结果保存在outputs中。最后我们使用processor函数从outputs中提取对象检测的分类以及置信度与对象检测的box坐标。

有了box坐标与置信度与标签等信息,我们就可以通过for循环函数,提取每个对象的标签,对象检测的box坐标与置信度,这里我们可以打印出来模型预测的结果。

Detected zebra with confidence 0.999 at location [40.16, 70.81, 175.55, 117.98] Detected giraffe with confidence 0.959 at location [333.24, 72.55, 368.33, 187.66] Detected zebra with confidence 0.999 at location [-0.02, 1.15, 639.73, 473.76] Detected zebra with confidence 0.979 at location [13.24, 52.05, 314.02, 470.93] Detected giraffe with confidence 0.999 at location [345.4, 23.85, 640.37, 368.72]

当然有了以上的label标签与置信度与box坐标位置,我们就可以进行图片的可视化工作。

hugging face的transformers模型集成了很多对象检测的模型,当然还有NLP领域的模型,本次使用的是DETR模型,由于transformers模型的高度集成,我们对DETR模型的代码并没有详细了解,下期我们会详细分享DETR模型的代码实现过程。

transformer模型是google在attention is all you need论文中提出的一个应用于NLP领域的模型,但是随着VIT模型的发布,把transformer模型应用到计算机视觉任务上成为了可能,本期介绍的DETR模型就是基于transformer模型与CNN卷积神经网络的结合打造出的一个对象检测模型,从对象检测的结果来看,其使用transformer模型的对象检测方案,也能跟CNN卷积神经网络媲美。

随着越来越多的transformer模型的变体出现,使用transformer模型进行模型大一统有望得到实现。

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1