五个功能模块 1. Yolo + Tracker + Resnet, 其中 Resnet 的实现在./contrast中 track_reid.py 2. 轨迹分析模块,目录为:./tracking (1) 基于模块(Yolo + Tracker + Resnet)的输出 tracking_test.py (2) 基于测试过程数据(track.data, tracking_output.data)的输出 module_analysis.py 3. 比对分析模块,目录为:./contrast 2个场景:1:1,1:n 1:1场景: (1) 利用现场保存数据进行比对 OneToOneCompare.txt(现场保存数据) one2one_onsite.py (2) 利用本地算法进行特征提取 one2one_contrast.py 1:n场景: (1) 直接利用 deletedBarcode.txt 中数据 one2n_contrast.py (2) 构造取出、放入事件,设计不同的特征, feat_select.py 4. 整体流程仿真 pipeline.py SourceType: "image", "video", yolo+resent+tracker模块输入数据类型 5. 全实时时间切分仿真分析 time_devide.py 需分 2 步运行模块: (1) runyolo() 该模块调用 imgs_inference.py 中模块 run_yolo 后续工作: 1). 将run_yolo模块与track_redi.yolo_resnet_tracker模块合并 2). 图像文件名标准化 (2) show_seri() 该模块调用 event_time_specify.py 中模块 devide_motion_state 具体实现: ./tracking tracking_test.py have_tracked(): 轨迹分析测试。遍历track_reid.py输出的文件夹trackdict下的所有.pkl文件。 time_test.py 统计Pipeline整体流程中各模块耗时 module_analysis.py 该模块中需要借助 try...except... 捕获data文件中的异常 main(): 遍历文件夹下的每一个子文件夹,对子文件夹执行tracking_simulate() 函数; main_loop(): (1) 根据 deletedBarcode.txt 生成事件对,并利用事件对生成存储地址 (2) 调用 tracking_simulate() 函数 tracking_simulate(eventpath, savepath): (1) 根据event_names获取事件名enent_name (2) 遍历并执行 eventpath 文件夹下的 0_track.data、1_track.data 文件,并调用do_tracking() 执行 (3) 将前后摄、本地与现场,工8幅子图合并为1幅大图。 上下子图分别显示的是前后摄,每一行4个子图,分别为: (a) tracker输出原始轨迹; (b) 本地tracking输出; (c) 现场算法轨迹选择前轨迹; (d) 现场算法轨迹选择后的轨迹 do_tracking(fpath, savedir, event_name) inputs: fpath: 0/1_track.data文件,并核验是否存在 0/1_tracking_output.data,若不存在该文件,直接返回 None, None savedir: 在该文件夹下会建立3个子文件夹及一个png轨迹图 ./savedir/event_name_images, 画boxes后的图像序列 ./savedir/event_name_subimgs, 轨迹分析后的目标子图,无 _x 为PC机结果,有 _x 为平板单摄像头轨迹选择后的输出 ./savedir/trajectory, 存储每一个轨迹图 ./savedir/event_name_tracking_select.png 或 enent_name_tracking.png 或 enent_name_select.png outputs: img_tracking:本机tracker、tracking 输出的结果比较图 abimg: 部署算法的tracking、轨迹选择分析比较图 ./utils/read_data.py 0/1_track.data 文件保存:yolo、Resnet、tracker、tracking模块的输出 函数: extract_data(datapath) 异常排除: (1) assert len(boxes)==len(feats),确保每一帧内boxes数和feats数相等 (2) assert(len(bboxes)==len(ffeats)), 确保关于bboxes的帧数和关于ffeats的帧数相等 (3) assert(len(trackerboxes)==len(trackerfeats)),确保tracker输出的boxes可以对应到相应的feats上 这里未对 len(box)!=9、len(feat)!=256, 的情况做出约束 输出: bboxes ffeats trackerboxes tracker_feat_dict[f"frame_{fid}"]["feats"]{{bid}: (256,) } trackingboxes tracking_feat_dict[f"track_{tid}"]["feats"]{f"{fid}_{bid}": tracker_feat_dict[f"frame_{fid}"]["feats"][bid]}) 0/1_tracking_output.data 文件保存用于比对的boxes、features 函数: read_tracking_output(filepath) 异常排除: (1) assert len(feats)==len(boxes) (2) box.size==9、feat.size=256 ./deprecated/contrast_one2one.py 1:1 比对评估。have Deprecated! ./enentmatch.py 1:n 模拟测试,have Deprecated! ./contrast feat_similar.py similarity_compare_sequence(root_dir) inputs: root_dir:文件夹,包含"subimgs"字段,对该文件夹中的相邻图像进行相似度比较 silimarity_compare() 功能:对imgpaths文件夹中的图像进行相似度比较 feat_select.py creatd_deletedBarcode_front(filepath) (1) 基于 deletedBarcode.txt, 构造取出事件和相应的放入事件,构成列表并更新这些列表。 MatchList = [(getout_event, InputList), ...] (2) 设计不同的特征选择方式,计算 getout 事件和各 input 事件的相似度,并保存于文件: deletedBarcodeTest.txt precision_compare(filepath, savepath) 读取 deletedBarcode.txt 和 deletedBarcodeTest.txt 中的数据,进行相似度比较 one2n_contrast.py 1:n 比对,读取 deletedBarcode.txt,实现现场测试评估。 main(): 循环读取不同文件夹中的 deletedBarcode.txt,合并评估。 main1(): 指定deletedBarcode.txt进行1:n性能评估 one2one_onsite.py 现场试验输出数据的 1:1 性能评估; 适用于202410前数据保存版本的,需调用 OneToOneCompare.txt 标准特征向量生成 std_sample_path:图像样本的存储地址 std_barcode_path:对 std_sample_path 中文件列表进行遍历,形成{barcode: 图像样本地址}形式字典并进行存储 std_feature_path:调用 inference_image(), 对每一个barcode,生成字典并进行存储 genfeats.py genfeatures(imgpath, bcdpath, featpath) 功能:生成标准特征向量 参数: (1) imgpath:图像样本的存储地址 (2) bcdpath:对 imgpath 中文件列表进行遍历,形成{barcode: 图像样本地址}形式字典并进行存储 (3) featpath:调用 inference_image(), 对每一个barcode,生成字典并进行存储