YOLO!如果你对机器学习感兴趣,这个术语一定不陌生。确实,You Only Look Once已经成为过去几年中目标检测的默认方法之一。受到卷积神经网络取得的进展推动,许多版本的目标检测方法已经被创建。然而,近年来,一个竞争对手出现在了视野中——那就是在计算机视觉中使用基于Transformer的模型。更具体地说,是使用Transformer进行目标检测。
在今天的教程中,你将了解到这种类型的Transformer模型。你还将学会使用Python、一个默认的Transformer模型和HuggingFace Transformers库创建自己的目标检测流程。本文将按照下列步骤讲解:
环顾四周,很可能你会看到很多东西——可能是一台电脑显示器、一个键盘和鼠标,或者当你在移动浏览器中浏览时,是一部智能手机。这些都是物体,是特定类别的实例。例如,在下面的图像中,我们看到一个人类类别的实例。我们还看到了许多瓶子类别的实例。虽然类别是蓝图,但物体是真实存在的,具有许多独特的特征,同时因为共享的特征而属于类别的成员。
在图片和视频中,我们看到了许多这样的物体。例如,当你拍摄交通视频时,很可能会看到许多行人、汽车、自行车等实例。知道它们在图像中存在是非常有益的。为什么呢?因为你可以计数它们,举一个例子。这可以让你对社区的拥挤程度有所了解。另一个例子是在繁忙地区检测到一个停车位,让你可以停车。
然后,我们将数据分配给一些变量,并遍历每个结果,绘制边界框。
# 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!")
如果你创建了自己的模型,或者想要使用不同的模型,那么很容易使用它来代替基于ResNet-50的DeTr Transformer。这将需要你添加以下导入:
from transformers import DetrFeatureExtractor, DetrForObjectDetection
然后,你可以初始化特征提取器和模型,并使用它们初始化object_detector,而不是默认的一个。例如,如果你想将ResNet-101用作你的骨干,那么你可以这样做:
# 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)
以下是我们在输入图像上运行目标检测流程后得到的结果:
当放大时:
本文链接:http://www.28at.com/showinfo-26-98871-0.html基于 Python 和 HuggingFace Transformers 的目标检测
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 你应该知道的主要软件设计原则