当前位置:首页 > 科技  > 软件

基于 Python 和 HuggingFace Transformers 的目标检测

来源: 责编: 时间:2024-07-05 09:07:44 111观看
导读YOLO!如果你对机器学习感兴趣,这个术语一定不陌生。确实,You Only Look Once已经成为过去几年中目标检测的默认方法之一。受到卷积神经网络取得的进展推动,许多版本的目标检测方法已经被创建。然而,近年来,一个竞争对手出现

YOLO!如果你对机器学习感兴趣,这个术语一定不陌生。确实,You Only Look Once已经成为过去几年中目标检测的默认方法之一。受到卷积神经网络取得的进展推动,许多版本的目标检测方法已经被创建。然而,近年来,一个竞争对手出现在了视野中——那就是在计算机视觉中使用基于Transformer的模型。更具体地说,是使用Transformer进行目标检测。vfU28资讯网——每日最新资讯28at.com

vfU28资讯网——每日最新资讯28at.com

在今天的教程中,你将了解到这种类型的Transformer模型。你还将学会使用Python、一个默认的Transformer模型和HuggingFace Transformers库创建自己的目标检测流程。本文将按照下列步骤讲解:vfU28资讯网——每日最新资讯28at.com

  • 了解目标检测可以用来做什么
  • 了解当Transformer用于目标检测时它们是如何工作的
  • 已经使用Python和HuggingFace Transformers实现了基于Transformer模型的(图像)目标检测流程

vfU28资讯网——每日最新资讯28at.com

vfU28资讯网——每日最新资讯28at.com

什么是目标检测?

环顾四周,很可能你会看到很多东西——可能是一台电脑显示器、一个键盘和鼠标,或者当你在移动浏览器中浏览时,是一部智能手机。这些都是物体,是特定类别的实例。例如,在下面的图像中,我们看到一个人类类别的实例。我们还看到了许多瓶子类别的实例。虽然类别是蓝图,但物体是真实存在的,具有许多独特的特征,同时因为共享的特征而属于类别的成员。vfU28资讯网——每日最新资讯28at.com

vfU28资讯网——每日最新资讯28at.com

在图片和视频中,我们看到了许多这样的物体。例如,当你拍摄交通视频时,很可能会看到许多行人、汽车、自行车等实例。知道它们在图像中存在是非常有益的。为什么呢?因为你可以计数它们,举一个例子。这可以让你对社区的拥挤程度有所了解。另一个例子是在繁忙地区检测到一个停车位,让你可以停车。vfU28资讯网——每日最新资讯28at.com

然后,我们将数据分配给一些变量,并遍历每个结果,绘制边界框。

  • 最后,我们将图像保存到street_bboxes.jpg中。
  • # Open the imagewith Image.open("street.jpg") as im: # Perform object detection bounding_boxes = object_detector(im) # Iteration elements num_boxes = len(bounding_boxes) index = 0 # Draw bounding box for each result for bounding_box in bounding_boxes:  # Get actual box  box = bounding_box["box"]  # Draw the bounding box  im = draw_bounding_box(im, bounding_box["score"], bounding_box["label"],/   box["xmin"], box["ymin"], box["xmax"], box["ymax"], index, num_boxes)  # Increase index by one  index += 1 # Save image im.save("street_bboxes.jpg") # Done print("Done!")

    vfU28资讯网——每日最新资讯28at.com

    使用不同的模型/使用自己的模型进行目标检测

    如果你创建了自己的模型,或者想要使用不同的模型,那么很容易使用它来代替基于ResNet-50的DeTr Transformer。这将需要你添加以下导入:vfU28资讯网——每日最新资讯28at.com

    from transformers import DetrFeatureExtractor, DetrForObjectDetection

    然后,你可以初始化特征提取器和模型,并使用它们初始化object_detector,而不是默认的一个。例如,如果你想将ResNet-101用作你的骨干,那么你可以这样做:vfU28资讯网——每日最新资讯28at.com

    # Initialize another model and feature extractorfeature_extractor = DetrFeatureExtractor.from_pretrained('facebook/detr-resnet-101')model = DetrForObjectDetection.from_pretrained('facebook/detr-resnet-101')# Initialize the object detection pipelineobject_detector = pipeline("object-detection", model = model, feature_extractor = feature_extractor)

    vfU28资讯网——每日最新资讯28at.com

    结果

    以下是我们在输入图像上运行目标检测流程后得到的结果:vfU28资讯网——每日最新资讯28at.com

    vfU28资讯网——每日最新资讯28at.com

    vfU28资讯网——每日最新资讯28at.com

    当放大时:vfU28资讯网——每日最新资讯28at.com

    vfU28资讯网——每日最新资讯28at.com

    本文链接:http://www.28at.com/showinfo-26-98871-0.html基于 Python 和 HuggingFace Transformers 的目标检测

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

    上一篇: 你应该知道的主要软件设计原则

    下一篇: ESLint排坑指南:解决开发中常见的代码规范错误

    标签:
    • 热门焦点
    Top