当前位置: 首页 > news >正文

网上做题扣分在哪个网站上做网站弹出代码

网上做题扣分在哪个网站上做,网站弹出代码,openshift 做网站,wordpress mycred这里写目录标题 1 流程1 预处理2 跟踪 2 代码 参考#xff1a;sort代码 https://github.com/abewley/sort 1 流程 1 预处理 1.1 获取离线检测数据。1.2 实例化跟踪器。2 跟踪 2.1 轨迹处理。根据上一帧的轨迹预测当前帧的轨迹#xff0c;剔除到当前轨迹中为空的轨迹得到当前… 这里写目录标题 1 流程1 预处理2 跟踪 2 代码 参考sort代码 https://github.com/abewley/sort 1 流程 1 预处理 1.1 获取离线检测数据。1.2 实例化跟踪器。2 跟踪 2.1 轨迹处理。根据上一帧的轨迹预测当前帧的轨迹剔除到当前轨迹中为空的轨迹得到当前有效轨迹。 2.2 匹配。用匈牙利算法对有效轨迹和检测框匹配得到匹配id、新检测id、未匹配ida. 如果跟踪器的个数为零即第一帧图像返回值为0的匹配id、新检测id、值为0的未匹配id。b. 如果跟踪器的个数为不为0则计算检测框与当前轨迹的iou,如果iou不为空得到iou大于阈值的掩码矩阵判断掩码矩阵每行是否跟每列是一一对应如果是则不需要匈牙利算法匹配反之用匈牙利算法得到匹配的检测框和轨迹的索引。c. 根据匹配索引得到新检测的框的id和为匹配的轨迹的id。d.根据iou再筛选一次。 2.3 更新轨迹。a. 对匹配上的轨迹根据匹配id得到当前帧的最优估计。b. 添加新的检测。对于没有被匹配上的检测框生成新的跟踪器并添加到轨迹中。c. 筛选轨迹。2 代码 sort代码 https://github.com/abewley/sortSORT: A Simple, Online and Realtime TrackerCopyright (C) 2016-2020 Alex Bewley alexbewley.aiThis program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program. If not, see http://www.gnu.org/licenses/.-i https://pypi.tuna.tsinghua.edu.cn/simple filterpy1.4.5 scikit-image0.14.0 lap0.4.0 numba0.38.1 scikit-learn0.19.1from __future__ import print_functionimport os import numpy as np import matplotlib matplotlib.use(TkAgg) import matplotlib.pyplot as plt import matplotlib.patches as patches from skimage import ioimport glob import time import argparse from filterpy.kalman import KalmanFilternp.random.seed(0)def linear_assignment(cost_matrix):try:import lap_, x, y lap.lapjv(cost_matrix, extend_costTrue)return np.array([[y[i],i] for i in x if i 0])except ImportError:from scipy.optimize import linear_sum_assignmentx, y linear_sum_assignment(cost_matrix)return np.array(list(zip(x, y)))def iou_batch(bb_test, bb_gt):From SORT: Computes IOU between two bboxes in the form [x1,y1,x2,y2]bb_gt np.expand_dims(bb_gt, 0)bb_test np.expand_dims(bb_test, 1)xx1 np.maximum(bb_test[..., 0], bb_gt[..., 0])yy1 np.maximum(bb_test[..., 1], bb_gt[..., 1])xx2 np.minimum(bb_test[..., 2], bb_gt[..., 2])yy2 np.minimum(bb_test[..., 3], bb_gt[..., 3])w np.maximum(0., xx2 - xx1)h np.maximum(0., yy2 - yy1)wh w * ho wh / ((bb_test[..., 2] - bb_test[..., 0]) * (bb_test[..., 3] - bb_test[..., 1]) (bb_gt[..., 2] - bb_gt[..., 0]) * (bb_gt[..., 3] - bb_gt[..., 1]) - wh) return(o) def convert_bbox_to_z(bbox):Takes a bounding box in the form [x1,y1,x2,y2] and returns z in the form[x,y,s,r] where x,y is the centre of the box and s is the scale/area and r isthe aspect ratiow bbox[2] - bbox[0]h bbox[3] - bbox[1]x bbox[0] w/2.y bbox[1] h/2.s w * h #scale is just arear w / float(h)return np.array([x, y, s, r]).reshape((4, 1))def convert_x_to_bbox(x,scoreNone):Takes a bounding box in the centre form [x,y,s,r] and returns it in the form[x1,y1,x2,y2] where x1,y1 is the top left and x2,y2 is the bottom rightw np.sqrt(x[2] * x[3])h x[2] / wif(scoreNone):return np.array([x[0]-w/2.,x[1]-h/2.,x[0]w/2.,x[1]h/2.]).reshape((1,4))else:return np.array([x[0]-w/2.,x[1]-h/2.,x[0]w/2.,x[1]h/2.,score]).reshape((1,5))class KalmanBoxTracker(object):This class represents the internal state of individual tracked objects observed as bbox.count 0def __init__(self,bbox):Initialises a tracker using initial bounding box.#define constant velocity modelself.kf KalmanFilter(dim_x7, dim_z4) self.kf.F np.array([[1,0,0,0,1,0,0],[0,1,0,0,0,1,0],[0,0,1,0,0,0,1],[0,0,0,1,0,0,0], [0,0,0,0,1,0,0],[0,0,0,0,0,1,0],[0,0,0,0,0,0,1]])self.kf.H np.array([[1,0,0,0,0,0,0],[0,1,0,0,0,0,0],[0,0,1,0,0,0,0],[0,0,0,1,0,0,0]])self.kf.R[2:,2:] * 10.self.kf.P[4:,4:] * 1000. #give high uncertainty to the unobservable initial velocitiesself.kf.P * 10.self.kf.Q[-1,-1] * 0.01self.kf.Q[4:,4:] * 0.01self.kf.x[:4] convert_bbox_to_z(bbox)self.time_since_update 0self.id KalmanBoxTracker.countKalmanBoxTracker.count 1self.history []self.hits 0self.hit_streak 0self.age 0def update(self,bbox):Updates the state vector with observed bbox.self.time_since_update 0self.history []self.hits 1self.hit_streak 1 # 连续匹配并更新的次数self.kf.update(convert_bbox_to_z(bbox))def predict(self):Advances the state vector and returns the predicted bounding box estimate.if((self.kf.x[6]self.kf.x[2])0):self.kf.x[6] * 0.0self.kf.predict()self.age 1if(self.time_since_update0): # 上一次更新距离现在的时间self.hit_streak 0 # 匹配次数归0self.time_since_update 1 # 轨迹只预测没有匹配的的次数➕1self.history.append(convert_x_to_bbox(self.kf.x))return self.history[-1]def get_state(self):Returns the current bounding box estimate.return convert_x_to_bbox(self.kf.x)def associate_detections_to_trackers(detections,trackers,iou_threshold 0.3):Assigns detections to tracked object (both represented as bounding boxes)Returns 3 lists of matches, unmatched_detections and unmatched_trackersif(len(trackers)0):return np.empty((0,2),dtypeint), np.arange(len(detections)), np.empty((0,5),dtypeint)iou_matrix iou_batch(detections, trackers)if min(iou_matrix.shape) 0:a (iou_matrix iou_threshold).astype(np.int32)if a.sum(1).max() 1 and a.sum(0).max() 1:matched_indices np.stack(np.where(a), axis1) # 如果正好是一个检测与一个轨迹匹配则找出匹配的索引else:matched_indices linear_assignment(-iou_matrix) # 匈牙利匹配matched_indices存储的是每个检测框对应的轨迹第一列存储的是检测框的id第二列存储的是检测框匹配的轨迹idelse:matched_indices np.empty(shape(0,2)) unmatched_detections [] # 寻找没有被匹配上的检测框for d, det in enumerate(detections): # 这一步写的麻烦不用枚举if(d not in matched_indices[:,0]):unmatched_detections.append(d)unmatched_trackers [] # 寻找没有被匹配上的轨迹for t, trk in enumerate(trackers):if(t not in matched_indices[:,1]):unmatched_trackers.append(t)#filter out matched with low IOUmatches [] # 寻找被匹配上的检测框的idfor m in matched_indices: # 根据iou再进行一次筛选if(iou_matrix[m[0], m[1]]iou_threshold):unmatched_detections.append(m[0])unmatched_trackers.append(m[1])else:matches.append(m.reshape(1,2))if(len(matches)0):matches np.empty((0,2),dtypeint)else:matches np.concatenate(matches,axis0)return matches, np.array(unmatched_detections), np.array(unmatched_trackers)class Sort(object):def __init__(self, max_age1, min_hits3, iou_threshold0.3):Sets key parameters for SORTself.max_age max_ageself.min_hits min_hitsself.iou_threshold iou_thresholdself.trackers []self.frame_count 0def update(self, detsnp.empty((0, 5))):Params:dets - a numpy array of detections in the format [[x1,y1,x2,y2,score],[x1,y1,x2,y2,score],...]Requires: this method must be called once for each frame even with empty detections (use np.empty((0, 5)) for frames without detections).Returns the a similar array, where the last column is the object ID.NOTE: The number of objects returned may differ from the number of detections provided.self.frame_count 1# get predicted locations from existing trackers.trks np.zeros((len(self.trackers), 5)) # 存储筛选后的轨迹。第一帧shape(0, 5)to_del [] # 没有匹配的轨迹ret [] # 存放检测所有合格的轨迹for t, trk in enumerate(trks):pos self.trackers[t].predict()[0] # 根据上一帧的轨迹当前帧的轨迹.trk[:] [pos[0], pos[1], pos[2], pos[3], 0]if np.any(np.isnan(pos)):to_del.append(t)trks np.ma.compress_rows(np.ma.masked_invalid(trks)) # 剔除当前无效轨迹for t in reversed(to_del):self.trackers.pop(t) # 剔除上一帧中的无效轨迹matched, unmatched_dets, unmatched_trks associate_detections_to_trackers(dets,trks, self.iou_threshold) # 第一帧没有轨迹# update matched trackers with assigned detections 对匹配的轨迹更新for m in matched: # 根据当前轨迹和检测得到当前最优估计self.trackers[m[1]].update(dets[m[0], :])# create and initialise new trackers for unmatched detectionsfor i in unmatched_dets: # 对于没有被匹配上的检测框生成新的跟踪器并添加到轨迹中trk KalmanBoxTracker(dets[i,:])self.trackers.append(trk)i len(self.trackers)for trk in reversed(self.trackers):d trk.get_state()[0]if (trk.time_since_update 1) and (trk.hit_streak self.min_hits or self.frame_count self.min_hits): #当前更新的轨迹and 连续匹配超过min_hits or 检测帧数小于min_hitsret.append(np.concatenate((d,[trk.id1])).reshape(1,-1)) # 1 as MOT benchmark requires positivei - 1# remove dead trackletif(trk.time_since_update self.max_age):self.trackers.pop(i)if(len(ret)0):return np.concatenate(ret)return np.empty((0,5))def parse_args():Parse input arguments.parser argparse.ArgumentParser(descriptionSORT demo)parser.add_argument(--display, destdisplay, helpDisplay online tracker output (slow) [False],actionstore_true)parser.add_argument(--seq_path, helpPath to detections., typestr, defaultdata)parser.add_argument(--phase, helpSubdirectory in seq_path., typestr, defaulttrain)parser.add_argument(--max_age, helpMaximum number of frames to keep alive a track without associated detections., typeint, default1)parser.add_argument(--min_hits, helpMinimum number of associated detections before track is initialised., typeint, default3)parser.add_argument(--iou_threshold, helpMinimum IOU for match., typefloat, default0.3)args parser.parse_args()return argsif __name__ __main__:# all trainargs parse_args()display args.display # 是否显示结果phase args.phase # triantotal_time 0.0 # 总时长total_frames 0 # 记录检测的帧数colours np.random.rand(32, 3) # \used only for display [32,3]if(display):if not os.path.exists(mot_benchmark):print(\n\tERROR: mot_benchmark link not found!\n\n Create a symbolic link to the MOT benchmark\n (https://motchallenge.net/data/2D_MOT_2015/#download). E.g.:\n\n $ ln -s /path/to/MOT2015_challenge/2DMOT2015 mot_benchmark\n\n)exit()plt.ion()fig plt.figure()ax1 fig.add_subplot(111, aspectequal)if not os.path.exists(output):os.makedirs(output)pattern os.path.join(args.seq_path, phase, *, det, det.txt) # 相对路径 data/train/*/det/det.txt# 1. 数据准备for seq_dets_fn in glob.glob(pattern):mot_tracker Sort(max_ageargs.max_age, # 1.1 初始化跟踪器min_hitsargs.min_hits,iou_thresholdargs.iou_threshold) # create instance of the SORT trackerseq_dets np.loadtxt(seq_dets_fn, delimiter,) # 1.2 加载数据seq seq_dets_fn[pattern.find(*):].split(os.path.sep)[0] # data/train/ETH-Bahnhof/det/det.txt -- [ETH-Bahnhof, det, det.txt] -- ETH-Bahnhofwith open(os.path.join(output, %s.txt%(seq)),w) as out_file: # output/ETH-Bahnhof.txtprint(Processing %s.%(seq))for frame in range(int(seq_dets[:,0].max())): # seq_dets[:,0]第一列为图片的序列号遍历每一帧的检测结果frame 1 # detection and frame numbers begin at 1dets seq_dets[seq_dets[:, 0]frame, 2:7] # x1,y1,w,h,cdets[:, 2:4] dets[:, 0:2] # convert to [x1,y1,w,h] to [x1,y1,x2,y2]total_frames 1if(display):fn os.path.join(mot_benchmark, phase, seq, img1, %06d.jpg%(frame))im io.imread(fn)ax1.imshow(im)plt.title(seq Tracked Targets)start_time time.time()trackers mot_tracker.update(dets) # 2. 获取跟踪结果cycle_time time.time() - start_timetotal_time cycle_timefor d in trackers: # 画的是跟踪到的轨迹print(%d,%d,%.2f,%.2f,%.2f,%.2f,1,-1,-1,-1%(frame,d[4],d[0],d[1],d[2]-d[0],d[3]-d[1]),fileout_file)if(display):d d.astype(np.int32)ax1.add_patch(patches.Rectangle((d[0],d[1]),d[2]-d[0],d[3]-d[1],fillFalse,lw3,eccolours[d[4]%32,:]))if(display):fig.canvas.flush_events()plt.draw()ax1.cla()print(Total Tracking took: %.3f seconds for %d frames or %.1f FPS % (total_time, total_frames, total_frames / total_time))if(display):print(Note: to get real runtime results run without the option: --display)
http://www.w-s-a.com/news/671510/

相关文章:

  • 阿里云服务器网站开发青岛做网站找哪家
  • 凡科做的网站为什么打不开织梦cms仿某作文网站整站源码(带采集)安装数据库
  • 免费h5模板网站模板汽车报价网址
  • 蔡甸网站建设烟台网站建设yt
  • 最流行的网站开发新开的网页游戏平台
  • 暴富建站wordpress 标签分类
  • 搞笑网站源码百度快照替代
  • 重庆网站建设哪家公司哪家好关键词是怎么排名的
  • 青县网站建设今天国际大事新闻
  • 深圳正规网站制作哪里好怎样优化网络
  • 米拓网站建设教程dw成品网站成品视频教学
  • 用jsp做的网站源代码天门网站网站建设
  • 百度如何把网站做链接地址有没有资源可以在线观看
  • 淮安做网站找哪家好电子商务网站建设规划书的内容
  • 开发网站建设用什么框架php黄页系统
  • 聊城制作网站全球十大电商平台排名
  • 用什么来网站开发好mega menu wordpress
  • 深圳制作网站有用吗wordpress的主题
  • 网站的规划与创建天津市南开区网站开发有限公司
  • 免备案网站主机建站哪个平台好
  • python做网站 不适合单页营销分享网站
  • 珠海市研发网站建设建设网站挣钱
  • 阿里巴巴国际站特点做wps的网站赚钱
  • wordpress更换域名后网站打不开宜昌建设银行网站
  • 写出网站开发的基本流程百度网页电脑版入口
  • 网站设计有限公司怎么样网站建设西班牙语
  • 网站安全解决方案宁波seo网络推广优化价格
  • 做网站带来好处wordpress可以做oa系统吗
  • 建筑设计人才招聘网站h5营销型网站suteng
  • 做app和网站怎样如何做html网站