Files
detecttracking/说明文档.txt
2024-12-05 10:23:03 +08:00

297 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

五个功能模块
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:11: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, 该模块重新定义了类 LoadImages, 对图像进行了旋转。
后续工作:
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
seqfeat_compare.py
similarity_compare_sequence(root_dir)
inputs:
root_dir文件夹包含"subimgs"字段,对该文件夹中的相邻图像进行相似度比较
silimarity_compare()
功能对imgpaths文件夹中的图像进行相似度比较
input_getout_compare.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 中的数据,进行相似度比较
stdfeat_analys()
genfeats.py
get_std_barcodeDict(bcdpath, savepath)
功能: 生成并保存只有一个key值的字典 {barcode: [imgpath1, imgpath1, ...]}
stdfeat_infer(imgPath, featPath, bcdSet=None)
功能: 对 imgPath 中图像进行特征提取生成只有一个key值的字典。
{barcode: features}features.shape=(nsample, 256),并保存至 featPath 中
one2n_contrast.py
test_one2n()
1:n 现场测试性能评估,输出 PR 曲线
兼容 2 种 txt 文件格式returnGoods.txt, deletedBarcode.txt,
分别对应不同的文件读取函数:
- read_deletedBarcode_file()
- read_returnGoods_file()
one2n_return(all_list)
输入从returnGoods.txt读取的数据
输出:
corrpairs(取出事件, 正确匹配的放入事件)
errpairs(取出事件, 放入事件, 错误匹配的放入事件)
corr_similarity: (正确匹配时的相似度)
err_similarity: (错误匹配时的相似度)
one2n_deleted(all_list)
输入: 从deletedBarcode.txt读取的数据
输出:
corrpairs(取出事件, 取出的barcode)
errpairs(取出事件, 取出的barcode, 错误匹配的barcode)
corr_similarity: (正确匹配时的相似度)
err_similarity: (错误匹配时的相似度)
save_tracking_imgpairs(pairs, savepath)
输入:
pairs匹配时间对len(2)=2 or 3, 对应正确匹配与错误匹配
savepath结果保存地址其中图像文件的命名为取出事件 + 放入事件 + 错误匹配时间
子函数 get_event_path(), 扫码放入的对齐名
对于 returnGoods.txt, 放入事件的事件名和对应的文件夹名不一致,需要对齐
test_rpath_deleted()
功能:
针对 eletedBarcode.txt 格式的 1:n 数据结果文件
获得 1:n 情况下正确或匹配事件对(取出事件、放入事件、错误匹配事件)
匹配事件分析, 实现函数save_tracking_imgpairs()
重要参数:
del_barcode_file:
basepath: 对应事件路径
savepath: 存储路径, 是函数 save_tracking_imgpairs() 的输入
saveimgs: Ture, False, 是否保存错误匹配的事件对
get_contrast_paths()
针对 eletedBarcode.txt 格式的 1:n 数据结果文件,返回三元时间元组getoutpath, inputpath, errorpath
test_rpath_return()
针对 returnGoods.txt 格式 1:n 数据文件不需要调用函数get_contrast_paths()
获得 1:n 情况下正确或匹配事件对(取出事件、放入事件、错误匹配事件)
匹配事件分析, 实现函数save_tracking_imgpairs()
one2one_contrast.py
已修改,未更新。
共6个地址
(1) stdSamplePath: 用于生成比对标准特征集的原始图像地址
(2) stdBarcodePath: 比对标准特征集原始图像地址的pickle文件存储{barcode: [imgpath1, imgpath1, ...]}
(3) stdFeaturePath: 比对标准特征集特征存储地址
(4) eventFeatPath: 用于1:1比对的购物事件特征存储地址、对应子图存储地址
(5) subimgPath: 1:1比对购物事件轨迹、标准barcode所对应的 subimgs 存储地址
(6) resultPath: 1:1比对结果存储地址
(1), (2), (3): 保存标准特征集向量,只需运行一次
(4): 保存测试的事件字典,只需运行一次
test_one2one()
(1) 生成标准特征集, 只需运行一次
genfeatures()
(2) 生成事件字典, 只需运行一次
gen_eventdict(eventDatePath, saveimg)
参数:
eventDatePath: 事件集列表,其中每个元素均为事件的集合;
saveimg: 是否保存事件子图
(3) 1:1性能评估
(4) 计算PR曲线
creat_shopping_event(eventPath, subimgPath=False)
构造一次购物事件字典, 共12个关键字。
save_event_subimg(event, savepath)
保存一次购物事件的子图
one2one_eval()
compute_precise_recall()
int8_to_ft16()
ft16_to_uint8()
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)
功能:生成标准特征向量的字典, 并保存为: barcode.pickle
keys: barcode, imgpaths, feats_ft32, feats_ft16, feats_uint8
参数:
(1) imgpath图像样本的存储地址
(2) bcdpath对 imgpath 中文件列表进行遍历,形成{barcode: 图像样本地址}形式字典并进行存储
(3) featpath调用 inference_image(), 对每一个barcode生成字典并进行存储
time_devide.py
runyolo()
执行 imgs_inference.py 中的 run_yolo()模块,该模块重新定义了类 LoadImages, 对图像进行了旋转。
show_seri()