计算机视觉项目教程

在交通分析和制造过程自动化等领域,计算机视觉技术扮演着越来越重要的角色。对于任何计算机视觉工程师来说,掌握这些技术至关重要。通过本教程,将能够构建一个可复用的脚本,并成功地将其应用于项目中。还将通过两个看似不同的例子来测试它在实际应用中的表现。

教程概览

在开始之前,让为应用程序创建一个蓝图。有几个关键步骤需要完成——目标检测、跟踪和注释。对于这些步骤,将使用最先进的工具——YOLOv8、ByteTrack和Supervision。

目标检测与YOLOv8

正如前面提到的,工作从目标检测开始。有许多库可用于目标检测或图像分割;原则上,可以使用其中的任何一个。然而,对于这个项目,将使用YOLOv8。它的原生pip包支持将大大简化生活。

pip install ultralytics

YOLOv8提供了一个SDK,允许在几行Python代码中进行训练或预测。最近发表了一篇文章,详细描述了新的API,如果有兴趣深入了解,可以查看。这篇文章将只关注这个项目需要的部分。

from ultralytics import YOLO model = YOLO(MODEL_PATH) model.fuse() detections = model(frame)

将使用两个基本功能——模型加载和对单个图像的推理。在上面的例子中,MODEL_PATH是指向模型的路径。对于预训练模型,可以简单地定义想要使用的模型版本,例如yolov8x.pt。而frame是一个代表加载的照片或视频帧的numpy数组。

目标跟踪与ByteTrack

为了计算有多少独立的目标穿过了一条线,需要一个跟踪器。与检测器一样,有许多可用的选项——SORT、DeepSort、FairMOT等。那些记得足球运动员跟踪项目的人会知道ByteTrack是最爱,这次也将使用它。

pip install bytetracker

将检测器与跟踪器集成的过程相当复杂。有关详细步骤,请参考准备的笔记本,已经在其中详细解释了所有步骤。

使用Supervision进行目标计数

想象一下,在Twitter或LinkedIn上滚动时,看到了一个演示如何计算道路上行驶的汽车数量的演示。然而,尽管如此,没有可复用的开源工具可以简化这一过程。

在Roboflow,希望使使用计算机视觉构建应用程序变得更加容易,分享开源工具是使命的重要组成部分。这就是创建Supervision——一个Python库,用于解决在任何计算机视觉项目中遇到的常见问题的原因之一。

pip install supervision==0.1.0

Supervision不仅仅是计算穿过线的检测次数。如果想了解更多关于Supervision API的信息,请查看Github或文档。

from supervision.video.dataclasses import VideoInfo from supervision.video.sink import VideoSink from supervision.video.source import get_video_frames_generator video_info = VideoInfo.from_video_path(SOURCE_VIDEO_PATH) generator = get_video_frames_generator(SOURCE_VIDEO_PATH) with VideoSink(TARGET_VIDEO_PATH, video_info) as sink: for frame in tqdm(generator, total=video_info.total_frames): frame = ... sink.write_frame(frame)

不能忘记主要关键组件——LineCounter,它计算有多少独立的目标穿过了一条虚拟线。

from supervision.tools.line_counter import LineCounter from supervision.geometry.dataclasses import Point LINE_START = Point(50, 1500) LINE_END = Point(3790, 1500) line_counter = LineCounter(start=LINE_START, end=LINE_END) for frame in frames: detections = ... line_counter.update(detections=detections)

示例:计算糖果数量

正如承诺的,在完全不同的用例上测试了应用程序:计算传送带上移动的糖果数量。下面可以看到结果,代码几乎不需要任何更改。唯一调整的是模型的路径和线条的位置。

现在已经知道如何使用Supervision来启动项目,并通过跟踪和计数感兴趣的目标来释放创造力。下一步,使用开源的Roboflow Inference Server在本地或设备上部署训练的模型。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485