油耗是衡量汽车燃油经济性的一个重要指标,而想要算出一辆车多少钱一公里,最简单的方法就是在加满油时,用油钱除以行驶的便可以得出每公里油钱。这个计算方法相对比较笼统,更为正确的每公里燃油费用计算公式如下:
百公里油耗×÷100=每公里燃油费用
假设一辆车的百公里油耗为7升,当前广东的92号汽油价格为每升5.53,则该车行驶100公里需要的油钱(7升x5.53元/升)大概为38.71元。然后再将得出的百公里油钱除以100公里,四舍五入就是0.39元,也就是说当前这辆车每行驶一公里的燃油费用大概是3毛9左右。具体每公里燃油费用随着油价的变化而变化。
消耗掉的油量÷行驶里程×100=百公里油耗
消耗掉的油量数据相对比较难取得,一般采用满油箱为初始数据,行驶一段距离后再次加满油箱,以加油站提供的加油量数据为准。
车辆先加满油,然后将里程表清零,之后上路行驶。在行驶200公里后进入加油站加油,加满后加油机显示15升。按照公式得出(15÷200×100=7.5),该车的百公里油耗为7.5L。
需要注意的是,个人开车习惯、行驶路段、车辆负载、轮胎气压以及天气的不同,油耗也不尽相同。更为科学的油耗计算方法是需要计算平均值,车辆行驶10000公里,计算期间多次加油后的数据,再取最高油耗和最低油耗得平均值,这样得出的数据相对比较科学。
油价调整最新消息:2022年10月10日24时开启新一轮成品油调价窗口。本次油价上涨,但上涨幅度没超过标维线(50元/吨),国内汽、柴油价格不作调整,未调金额纳入下次调价时累加或冲抵。对应全国最新油价平均值参考:92号汽油:8.15元/升;95号汽油:8.66元/升;98号汽油:9.68元/升;0号柴油:7.86元/升。
下一轮油价调整为2022年10月24日24时。因为全国各地具体油价不同,如需查询所在地油价,请点击
关注公众号“车主指南”,回复“油价”,实时数据,更快更准
2022年油价调整日历表 |
汽、柴油分别上涨1305、1225元/吨(约为1.05元/升) |
汽、柴油上调没超过标维线(50元/吨)、不作调整 |
汽、柴油分别下降290、280元/吨(约0.23元/升) |
汽、柴油分别上调190、185元/吨(约0.15元/升) |
汽、柴油分别下降205、200元/吨(约0.16元/升) |
汽、柴油分别下降130、125元/吨(约0.1元/升) |
汽、柴油分别下降300、290元/吨(约0.24元/升) |
汽、柴油分别下降360、345元/吨(约0.29元/升) |
汽、柴油分别下降320、310元/吨(约0.25元/升) |
汽、柴油分别上调390、375元/吨(约0.31元/升) |
汽、柴油分别上调400、390元/吨(约0.32元/升) |
汽、柴油分别上调285、270元/吨(约0.23元/升) |
汽、柴油分别上调205、200元/吨(约0.16元/升) |
汽、柴油分别下降545、530元/吨(约0.44元/升) |
汽、柴油分别上调110、110元/吨(约0.09元/升) |
汽、柴油分别上调750、720元/吨(约0.60元/升) |
汽、柴油分别上调260、255元/吨(约0.21元/升) |
汽、柴油分别上调210、200元/吨(约0.17元/升) |
汽、柴油分别上调310、300元/吨(约0.25元/升) |
汽、柴油分别上调345、330元/吨(约0.27元/升) |
以上代码对应公式,注意余弦距离=1-余弦相似度。
Tracker类是最核心的类,Tracker中保存了所有的轨迹信息,负责初始化第一帧的轨迹、卡尔曼滤波的预测和更新、负责级联匹配、IOU匹配等等核心工作。
然后来看最核心的update函数和match函数,可以对照下面的流程图一起看:
以上两部分结合注释和以下流程图可以更容易理解。
下边是论文中给出的级联匹配的伪代码:
以下代码是伪代码对应的实现
门控矩阵的作用就是通过计算卡尔曼滤波的状态分布和测量值之间的距离对代价矩阵进行限制。
代价矩阵中的距离是Track和Detection之间的表观相似度,假如一个轨迹要去匹配两个表观特征非常相似的Detection,这样就很容易出错,但是这个时候分别让两个Detection计算与这个轨迹的马氏距离,并使用一个阈值gating_threshold进行限制,所以就可以将马氏距离较远的那个Detection区分开,可以降低错误的匹配。
下图代表卡尔曼滤波器主要过程:
如果对卡尔曼滤波算法有较为深入的了解,可以结合卡尔曼滤波算法和代码进行理解。
其中F是状态转移矩阵,如下图:
P是当前帧(time=t)的协方差,Q是卡尔曼滤波器的运动估计误差,代表不确定程度。
这个公式中,z是Detection的mean,不包含变化值,状态为[cx,cy,a,h]。H是测量矩阵,将Track的均值向量$x'$映射到检测空间。计算的y是Detection和Track的均值误差。 $$ S=HP'H^T+R $$ R是目标检测器的噪声矩阵,是一个4x4的对角矩阵。 对角线上的值分别为中心点两个坐标以及宽高的噪声。 $$ K=P'H^TS^{-1} $$ 计算的是卡尔曼增益,是作用于衡量估计误差的权重。 $$ x=x'+Ky $$ 更新后的均值向量x。 $$ P=(I-KH)P' $$ 更新后的协方差矩阵。
卡尔曼滤波笔者理解也不是很深入,没有推导过公式,对这部分感兴趣的推荐几个博客:
流程部分主要按照以下流程图来走一遍:
感谢知乎@猫弟总结的流程图,讲解非常地清晰,如果单纯看代码,非常容易混淆。比如说代价矩阵的计算这部分,连续套了三个函数,才被真正调用。上图将整体流程总结地非常棒。笔者将参考以上流程结合代码进行梳理:
初始化DeepSORT对象,更新部分接收目标检测得到的框的位置,置信度和图片:
从这里开始对照以上流程图会更加清晰。在Deep SORT初始化的过程中有一个核心metric,NearestNeighborDistanceMetric类会在匹配和特征集更新的时候用到。
构建detections的列表,列表中的内容就是Detection类,在此处限制了bbox的最小置信度。
使用非极大抑制算法,由于默认nms_thres=1,实际上并没有用。
Tracker类进行一次预测,然后将detections传入,进行更新。
最后将Tracker中保存的轨迹中状态属于确认态的轨迹返回。
Tracker是一个多目标跟踪器,保存了很多个track轨迹,负责调用卡尔曼滤波来预测track的新状态+进行匹配工作+初始化第一帧。Tracker调用update或predict的时候,其中的每个track也会各自调用自己的update或predict
predict主要是对轨迹列表中所有的轨迹使用卡尔曼滤波算法进行状态的预测。
Tracker的更新属于最核心的部分。
这部分注释已经很详细了,主要是一些后处理代码,需要关注的是对匹配上的,未匹配的Detection,未匹配的Track三者进行的处理以及最后进行特征集更新部分,可以对照流程图梳理。
Tracker的update函数的核心函数是match函数,描述如何进行匹配的流程:
对照下图来看会顺畅很多:
可以看到,匹配函数的核心是级联匹配+IOU匹配,先来看看级联匹配:
可以看到和伪代码是一致的,文章上半部分也有提到这部分代码。这部分代码中还有一个核心的函数min_cost_matching,这个函数可以接收不同的distance_metric,在级联匹配和IoU匹配中都有用到。
对应下图进行理解(下图上半部分就是对应的gated_metric函数):
以上就是Deep SORT算法代码部分的解析,核心在于类图和流程图,理解Deep SORT实现的过程。
如果第一次接触到多目标跟踪算法领域的,可以到知乎上看这篇文章以及其系列,对新手非常友好:
笔者也收集了一些多目标跟踪领域中认可度比较高、常见的库,在这里分享给大家:
笔者也是最近一段时间接触目标跟踪领域,数学水平非常有限(卡尔曼滤波只能肤浅了解大概过程,但是还不会推导)。本文目标就是帮助新入门多目标跟踪的新人快速了解Deep SORT流程,由于自身水平有限,也欢迎大佬对文中不足之处进行指点一二。
我们都知道,dB的中文名字是分贝,我们日常在音响设备上见的较多,最为人熟悉的就是表示音量的大小,毕竟这从初中物理就已经给大家科普了。但除了表达“音量”以外,dB在单位意义上,还有更多的意思。
dB 有时候是一个纯粹的计数单位:功率,dB = 10*lg(A/B)。不管是电压还是电流,dB = 20*lg(A/B).dB的意义就是把一个很大(后面跟一长串0的)或者很小(前面有一长串0的)的数比较简短地表示出来。如:
dB在缺省情况下定义为功率单位,以 10lg 为计。当然某些情况下可以用信号强度(Amplitude)来描述功和功率,这时候就用 20lg 为计,比如有时候大家可以看到 dBmV 的表达。
声学常用的dB(们)的详细解释
dB和dB之间只有加减
在工程中,dB和dB之间只有加减,没有乘除。而用得最多的是减法:dBm 减 dBm 实际上是两个功率相除,信号功率和噪声功率相除就是信噪比(SNR)。dBm 加 dBm 实际上是两个功率相乘,这个已经不多见。dBm 乘 dBm 是什么,1mW 的 1mW
次方?这样几乎可以和歌德巴赫猜想并驾齐驱的表达式,我活了这么多年也没见过哪个工程领域这样玩。
dB,表示一个相对值。当计算A的功率相比于B大或小多少个dB时,可按公式10 lg A/B计算。例如:A功率比B功率大一倍,那么10 lg A/B = 10 lg 2 = 3dB,也就是说,A的功率比B的功率大3dB;如果A的功率为46dBm,B的功率为40dBm,则可以说,A比B大6dB;如果A天线为
那dB后面再跟个小尾巴那些又表示啥呢?
dBm是一个考征功率绝对值的值,计算公式为:10lg(功率值/1mw)。
[例2] 对于40W的功率,按dBm单位进行折算后的值应为:
dBi和dBd是考征增益的值(功率增益),两者都是一个相对值,但参考基准不一样。dBi的参考基准为全方向性天线,dBd的参考基准为偶极子,所以两者略有不同。一般认为,表示同一个增益,用dBi表示出来比用dBd表示出来要大2.15。
【例3】 对于一面增益为16dBd的天线,其增益折算成单位为dBi时,则为18.15dBi (一般忽略小数位,为18dBi)。
有时也会看到dBc,它也是一个表示功率相对值的单位,与dB的计算方法完全一样。一般来说,dBc 是相对于载波(Carrier)功率而言,在许多情况下,用来度量与载波功率的相对值,如用来度量干扰(同频干扰、互调干扰、交调干扰、带外干扰等)以及耦合、杂散等的相对量值。在采用dBc的地方,原则上也可以使用dB替代。
还有左边加3=右边乘2,如40+3dBM=10*2W,即43dBm=20W,这些是经验公式,蛮好用的。
一般坊间贩售的802.11x无线网路AP上头,常会有规格说明,里头总会有一项说明到这个AP(或是无线网路卡),它的传输功率 (transmission POWER)有20dBm,或者有些产品,是以mW(milliWatts)为单位,例如某款很有名的长距离网卡,就说他们的网卡具有高达100mW的发 射功率。
这些单位是怎么回事呢?
dBm是dB-milliWatt,即是这个读数是在与一个milliWatt作比较而得出的数字。在仪器中如果显示着0dBm的意思即表示这个讯号与 1mW的讯号没有分别,也就是说这个讯号的强度就是1mW了。至于Watt(瓦特)是功率的单位我想大家都知道,就不赘述了。
我们又回头看看dB ,dB到是怎么来的? dB的全写是decibel,拉丁语中deci即十分一的的意思。这个单位原本是Bel 。但因为要达到一个bel的数值比较所需之能量差通常都较为大而在电路学上并不常用,故此才引用十分之一bel,亦即decibel这个单位了。
或许大家会有疑问:「既然dB只是表示两个讯号间的能量差别的话,为何不干脆用”倍数”来做表示呢?」
当然不是啦!不过这个问题倒也问得相当好。用”倍数”不是来得简单易懂而不致于有这么多的人搞错了观念吗?某程度上这个说法没错,譬如一台线性放大器,它的输入功率是10W而输出则可达40W的话,的确是用”四倍”这个说法来得干脆俐落。
但,看看另一个同类情况:
一套发射设备由初级振荡的能量以至最后级的输出功率之间的增益,假设在初级振荡时的功率是0.5mW,而在最后的LINEAR Amp.输出是2kW,2kW就是2000W亦即2,000,000mW用2,000,000mW除以 0.5mW便得出倍数,即4,000,000倍了。至此大家或许已经明白在各类电子及无线电电路中(尤其是接收方面)这类倍数之差别比比皆是(即如一台发射机的抗干扰能力是优于一百万倍就标示成better than 60dB)。如果每次都要在各个层面(例如说明书,规格表)内都标示出数百万以至千万甚至亿倍的数字将会是何等的不方便啊!
那么dB又是如何运算出来的呢?
我们用下面这个实际例子来让大家更容易明白:
【例10】:第一个讯号功率是4W,第二个讯号功率是24W,那增益就是:
OK,我们回到dBm来看,因此换算dBm与mW的公式就应该是长成这样:
所以底下这些例子大家可以验算一下:
如果大家都很聪明,一定可以从log的基本性质中,发现到底下的规则:
这样一来,你便可以用你的脑袋直接进行快速运算来求得概略值: