本页目录

  • 如何放置
  • 输入和输出
  • 使用方法
  • 功能示例
  • 参考

BenchmarkIn

Supported on:RVC2RVC4
BenchmarkIn 节点设计用于接收消息并测量传入流的帧率(FPS)和延迟。它会定期生成性能报告,从而有助于对您的 DepthAI 流水线进行基准测试和性能分析。

如何放置

Python

Python
1import depthai as dai
2
3pipeline = dai.Pipeline()
4benchmarkIn = pipeline.create(dai.node.BenchmarkIn)
5
6# 配置为每100条消息发送一次性能报告,并选择是否将报告作为警告记录。
7benchmarkIn.sendReportEveryNMessages(100)
8benchmarkIn.logReportsAsWarnings(False)
9
10# 例如,将 NeuralNetwork 的输出连接到 BenchmarkIn:
11neuralNetwork = pipeline.create(dai.node.NeuralNetwork)
12neuralNetwork.out.link(benchmarkIn.input)

C++

C++
1#include "depthai/depthai.hpp"
2
3dai::Pipeline pipeline;
4auto benchmarkIn = pipeline.create<dai::node::BenchmarkIn>();
5
6// 配置 BenchmarkIn 每100条消息发送一次报告,并决定是否将报告作为警告记录。
7benchmarkIn->sendReportEveryNMessages(100);
8benchmarkIn->logReportsAsWarnings(false);
9
10// 例如,将 NeuralNetwork 的输出连接到 BenchmarkIn:
11auto neuralNetwork = pipeline.create<dai::node::NeuralNetwork>();
12neuralNetwork->out.link(benchmarkIn->input);

输入和输出

使用方法

BenchmarkIn 通常连接到另一个节点(例如,神经网络或相机节点)的输出,以便监控数据流的性能。该节点周期性地发出包含性能指标(如FPS和延迟)的 BenchmarkReport。

Python

Python
1pipeline = dai.Pipeline()
2
3# 创建 BenchmarkIn 节点并进行配置:
4benchmarkIn = pipeline.create(dai.node.BenchmarkIn)
5benchmarkIn.sendReportEveryNMessages(100)
6benchmarkIn.logReportsAsWarnings(False)
7
8# 示例:将 BenchmarkIn 连接到 NeuralNetwork 节点
9neuralNetwork = pipeline.create(dai.node.NeuralNetwork)
10neuralNetwork.out.link(benchmarkIn.input)
11
12# 创建用于接收基准测试报告的输出队列
13outputQueue = benchmarkIn.report.createOutputQueue()
14
15while pipeline.isRunning():
16    benchmarkReport = outputQueue.get()
17    print(f"FPS 是 {benchmarkReport.fps}")

C++

C++
1dai::Pipeline pipeline;
2auto benchmarkIn = pipeline.create<dai::node::BenchmarkIn>();
3benchmarkIn->sendReportEveryNMessages(100);
4benchmarkIn->logReportsAsWarnings(false);
5
6auto neuralNetwork = pipeline.create<dai::node::NeuralNetwork>();
7neuralNetwork->out.link(benchmarkIn->input);
8
9auto outputQueue = benchmarkIn->report.createOutputQueue();
10while(pipeline.isRunning()) {
11    auto benchmarkReport = outputQueue->get<dai::BenchmarkReport>();
12    std::cout << "FPS 是 " << benchmarkReport.fps << std::endl;
13}

功能示例

参考

class

dai::node::BenchmarkIn

variable
Input input
Receive messages as fast as possible
variable
Output passthrough
Passthrough for input messages (so the node can be placed between other nodes)
variable
Output report
Send a benchmark report when the set number of messages are received
function
void sendReportEveryNMessages(uint32_t n)
Specify how many messages to measure for each report
function
void setRunOnHost(bool runOnHost)
Specify whether to run on host or device By default, the node will run on device.
function
bool runOnHost()
Check if the node is set to run on host
function
void logReportsAsWarnings(bool logReportsAsWarnings)
Log the reports as warnings
function
void measureIndividualLatencies(bool attachLatencies)
Attach latencies to the report
function
void run()
inline function
DeviceNodeCRTP()
inline function
DeviceNodeCRTP(const std::shared_ptr< Device > & device)
inline function
DeviceNodeCRTP(std::unique_ptr< Properties > props)
inline function
DeviceNodeCRTP(std::unique_ptr< Properties > props, bool confMode)
inline function
DeviceNodeCRTP(const std::shared_ptr< Device > & device, std::unique_ptr< Properties > props, bool confMode)

需要帮助?

请前往 OAKChina 官网 获取技术支持或解答您的任何疑问。