From 0efe8892f33ddc1c557dd9114d291cce15bcb34a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BA=86=E5=88=9A?= Date: Fri, 28 Feb 2025 17:55:40 +0800 Subject: [PATCH] 1:n modified --- __pycache__/track_reid.cpython-39.pyc | Bin 16300 -> 16272 bytes .../__pycache__/config.cpython-39.pyc | Bin 1626 -> 1615 bytes contrast/feat_extract/config.py | 4 +- contrast/feat_infer.py | 58 ++++++ contrast/one2n_contrast.py | 178 +++++++++--------- contrast/onsite_contrast_pr.py | 2 +- pipeline.py | 6 +- track_reid.py | 2 +- tracking/tracking_test.py | 36 +++- .../__pycache__/read_data.cpython-39.pyc | Bin 15930 -> 16023 bytes tracking/utils/read_data.py | 24 ++- 11 files changed, 198 insertions(+), 112 deletions(-) create mode 100644 contrast/feat_infer.py diff --git a/__pycache__/track_reid.cpython-39.pyc b/__pycache__/track_reid.cpython-39.pyc index 6407f77cf8c3b40c67573da0ced4ece46b74c96f..91b4a0640b1d93e82f19a7e0372a26217ffb4f90 100644 GIT binary patch delta 1744 zcmZA1drVtZ90%}w`W&r{0pnTZAwnt7F&JZ5&p8y&bmHwwzub;(XOLfbWyT^|r(Vt|Amn@g*P2e!rM72I64J%r%DO1} z@$4V(m@y6C&8ic%Nomr>j5B6>OmQ%SQpZZ;Bv9{=;$*Uu6$WzTk|BfWPOwh7G*6oB z3at@QHmjVIz_3HRk~Cbz0D-Fibgjc*%MGhvTSWwV59-Y9h<(xuQ}VS>fMRPLK({(>c)SBJ_Ps zFbFDv3pjxv1i%mog8TTd&Y#H;|Dx(!GQ}5M+jc*O@*#m{@s0bVN>npPs6V98EHpj` z`M?CaL2Ac{(t#C3z%a0bW>5~|d{=c*>;S?^KtU8JpdH)>M!+Z-1LGhYFz|ptvkv+c zkD^doh*A!Sfgz9Gu{m+S}`&M3?}*U^~z+WCc+YJO!QxBYdiMbNxKRXTWujr5?3s z!E@kwFw3vho`{`9_#$`-YzCi!Q{WYFTA+~#eHDp*1J9sh2+8y;N-B5_ybSum>tIpP zXBBr*_KPch1En{?0(cv|qp!Dw@LjMIoCi3=eQ8n8sINcbQSPM|M6MZeyFWntLvRsX z;@j)n?B5_<4=$^Z*H;i?Ru>y`jP_MTl+u7r{c?Riv7}=Dds8#9sWr{n#BN1bA7|q| z8;+8X_}3e%$;aH%GHTaHU+e8}DNp4$=+p6qmaodDu%do!a85N_#6zRLeh(dtrXJ@Q zKfQ6DFc5?Xw#(nF$zp@1}NAtRCD%46%POv8bkw3#}5- z4wsE)ppuT!xgZN*-qeva`=hd-(qdH20?p!&?(qkGE(^^;Y7Ive{ZWYjPDwMP71hX4 zYI*(U=`=|ax4D~01@CZ|*;iw%(HkA5S9!o)mh(53+Y930Pe6IX-Ddw3p}x5(^#}Jf eAxnIuqq;=AZP#A^WklFmYWMm+EBI2!m45-T+P}yE delta 1785 zcmZA1Uu;uV90%}w`q#D04Ys*%t!`tmuKQC4`@_cmfSYAta6ZU`PLta8maSdaZl~96 z;F(1W5vRb&c@ei^i+@K@fh!6Df{2PZObF44H&Mfji9GNizQ}`mzPD%$OZLg{_dDmF zfA`$ZB#$O@1G%|2N&MYhI5229p6kdXcX(CaDY8NRC9i~#-}#^UJ!Grexpazon_;D~hG5M`HORDqvN!l3X!wL`7*xuU5SLbfGi(-MwST%S8`gtXgsY zJ93Jo*T@AKB3nx&y>%m=VH@=seay++B@*)u8)q!^7}N6(Noiy*)Rl%vQ_3J(8nSu1 zIU^B?Rf>wtD$^}>qQlw@nd((mA{AL{hKP-9`Y&(O^UX1rT*;F~4<^0LCl<6$Uar@D zVk=Ed7-^SR?2}k8+r&0+Gh|Gdu0y&zX$SLUh&Vtpc17t-cd-?-lCq3dr-)d_b-5&F zkXO!1>>=4$B1P8ARfUr5o;AtU^Cmnsc7l~XA$dG~3ntAXtIh{jlbi*jnS=3YoboNj z-Qq>=FLn}J&Om(99}NtIqUwSpLaHXjJEvWs7pxa(=8?D@ic%j6qhO4;mDZCvb+FV( z%ydYU_?R8!cSKJM0RrS*<_hPc^|*wadclt=l~}0zr`WV1y(>o0@y(ls06!tdyOmk zD#9dCz;j?6bb<{)KaxpA+rbV{0A2u70?j%YQUZ!XX(>uY;6>m9FM$-;1)c{C?2#m| zL|+l1W)H?=!GIEqiGTVs8mEC1yax7yi`-W0BKvtut-JJf6b^zn06tba3+DJxZGZJV z!b1YhI!fb_P*9;4QK|=lDitq#QA?OA_fRDg&a6+JwQK}-*&*)=R3^AFWMClXoDL4lF z;50ZR=(mcyEQiHT&!Th=oC4>;XZm~>5PlAx0bc^#-~OCLU_9g>4JbqOE0Jr)(4;~y zq4{fY8GOT6d)L{2Mz{vtP{+M139+hktBQd6Cr>{3GX}E&6K`niB;{(XjTn-Dqlc(w zuM4dfQJ=>~^H9k{ZwDv@7*`)rGlvs$n9_1otpd#wPHYQDLmmq)Mrw_ZD*CH1ATy&W zp^@S2^!nlHG>Tu2TkVbYZuGj(?;i<-V}8HK(5ElM^SEa9`{j7h@2C0bVGJh5>22QE zQBm|4mZE=DyAj<13g6YS&VCJ{zVMyu<&OP?T;NZ2)s*c)S^xSM5n<8Uo#}gU^TS=Y F{sAqq$58+P diff --git a/contrast/feat_extract/__pycache__/config.cpython-39.pyc b/contrast/feat_extract/__pycache__/config.cpython-39.pyc index d04ca1396a17b1d0dca54409854bfddbf9b7ddce..f61f73a7b88262ed56f8b703cd4686fc83f010d0 100644 GIT binary patch delta 74 zcmcb`bDoDck(ZZ?0SKnm98BN5k#_}?lx%WFYI1f#er8@tv3^o&aY?+9fsv_!k&(sb dTTHb~>@KM#smUcFljB&6n3-AFCSPW42LNl57kB^w delta 85 zcmX@lbBl*Jk(ZZ?0SFd4^rvs%$h(3`RUc=2 and evt[-1].isdigit() and len(evt[-1])>=10 if not cont: continue + # event = ShoppingEvent(source_path, stype) try: event = ShoppingEvent(source_path, stype) - with open(pickpath, 'wb') as f: pickle.dump(event, f) print(bname) except Exception as e: errEvents.append(source_path) - print(e) + print(f"Error: {bname}, {e}") # k += 1 # if k==1: # break - # errfile = os.path.join(resultPath, 'error_events.txt') - # with open(errfile, 'a', encoding='utf-8') as f: - # for line in errEvents: - # f.write(line + '\n') + errfile = os.path.join(resultPath, 'error_events.txt') + with open(errfile, 'a', encoding='utf-8') as f: + for line in errEvents: + f.write(line + '\n') def read_eventdict(eventDataPath): evtDict = {} @@ -70,38 +74,38 @@ def read_eventdict(eventDataPath): return evtDict -def simi_calc(event, o2nevt, typee=None): - if typee == "11": - boxes1 = event.front_boxes - boxes2 = o2nevt.front_boxes - - feat1 = event.front_feats - feat2 = o2nevt.front_feats - if typee == "10": - boxes1 = event.front_boxes - boxes2 = o2nevt.back_boxes - - feat1 = event.front_feats - feat2 = o2nevt.back_feats - if typee == "00": - boxes1 = event.back_boxes - boxes2 = o2nevt.back_boxes - - feat1 = event.back_feats - feat2 = o2nevt.back_feats - if typee == "01": - boxes1 = event.back_boxes - boxes2 = o2nevt.front_boxes - - feat1 = event.back_feats - feat2 = o2nevt.front_feats +def simi_calc(event, o2nevt, pattern, typee=None): + if pattern==1 or pattern==2: + if typee == "11": + boxes1 = event.front_boxes + boxes2 = o2nevt.front_boxes + + feat1 = event.front_feats + feat2 = o2nevt.front_feats + if typee == "10": + boxes1 = event.front_boxes + boxes2 = o2nevt.back_boxes + + feat1 = event.front_feats + feat2 = o2nevt.back_feats + if typee == "00": + boxes1 = event.back_boxes + boxes2 = o2nevt.back_boxes + + feat1 = event.back_feats + feat2 = o2nevt.back_feats + if typee == "01": + boxes1 = event.back_boxes + boxes2 = o2nevt.front_boxes + + feat1 = event.back_feats + feat2 = o2nevt.front_feats '''自定义事件特征选择''' - if typee==3 and len(event.feats_compose) and len(o2nevt.feats_compose): + if pattern==3 and len(event.feats_compose) and len(o2nevt.feats_compose): feat1 = [event.feats_compose] feat2 = [o2nevt.feats_compose] - - + if len(feat1) and len(feat2): matrix = 1 - cdist(feat1[0], feat2[0], 'cosine') simi = np.mean(matrix) @@ -114,64 +118,64 @@ def one2n_pr(evtDicts, pattern=1): ''' pattern: 1: process.data 中记录的相似度 - 2: 根据 process.data 中标记的 type 选择特征计算相似度 - 3: 以其它方式选择特征计算相似度 + 2: 根据 process.data 中标记的 type 选择特征组合方式计算相似度 + 3: 利用 process.data 中的轨迹特征,以其它方式计算相似度 ''' - tpevents, fnevents, fpevents, tnevents = [], [], [], [] tpsimi, fnsimi, tnsimi, fpsimi = [], [], [], [] one2nFile, errorFile_one2n = [], [] + errorFile_one2n_ = [] + evts_output = [] for evtname, event in evtDicts.items(): - evt_names, evt_barcodes, evt_similars, evt_types = [], [], [], [] - - if len(event.barcode)==0: + evt_names, evt_barcodes, evt_similars, evt_types = [], [], [], [] + + if len(event.one2n)==0 or len(event.barcode)==0: continue + evts_output.append(evtname) + for ndict in event.one2n: nname = ndict["event"] barcode = ndict["barcode"] similar = ndict["similar"] typee = ndict["type"].strip() - + + if len(barcode)==0: + continue + if typee.find(",") >=0: + typee = typee.split(",")[-1] + + if pattern==1: + evt_similars.append(similar) + if pattern==2 or pattern==3: + o2n_evt = [evt for name, evt in evtDicts.items() if name.find(nname[:15])==0] + if len(o2n_evt)!=1: + continue + + simival = simi_calc(event, o2n_evt[0], pattern, typee) + if simival==None: + continue + evt_similars.append(simival) + evt_names.append(nname) evt_barcodes.append(barcode) evt_types.append(typee) - if pattern==1: - evt_similars.append(similar) - - if pattern==2 or pattern==3: - o2n_evt = [evt for name, evt in evtDicts.items() if name.find(nname[:15])==0] - if len(o2n_evt)==1: - o2nevt = o2n_evt[0] - else: - continue - - if pattern==2: - simival = simi_calc(event, o2nevt, typee) - - if pattern==3: - simival = simi_calc(event, o2nevt, typee=pattern) + # if evtname == "20250226-170321-327_6903244678377": + # print("evtname") - if simival==None: - continue - evt_similars.append(simival) - ## process.data的oneTon的各项中,均不包括当前事件的barcode if event.barcode not in evt_barcodes: errorFile_one2n.append(evtname) continue else: one2nFile.append(evtname) - - if len(evt_names)==len(evt_barcodes) and len(evt_barcodes)==len(evt_similars) \ - and len(evt_similars)==len(evt_types) and len(evt_names)>0: - + + if len(evt_names)==len(evt_barcodes)==len(evt_similars)==len(evt_types) and len(evt_names)>0: # maxsim = evt_similars[evt_similars.index(max(evt_similars))] maxsim = max(evt_similars) for i in range(len(evt_names)): bcd, simi = evt_barcodes[i], evt_similars[i] - if bcd==event.barcode and simi==maxsim: tpsimi.append(simi) tpevents.append(evtname) @@ -185,14 +189,11 @@ def one2n_pr(evtDicts, pattern=1): fpsimi.append(simi) fpevents.append(evtname) else: - errorFile_one2n.append(evtname) - - - + errorFile_one2n_.append(evtname) + ''' 1:n 数据存储,需根据相似度排序''' PPrecise, PRecall = [], [] NPrecise, NRecall = [], [] - Thresh = np.linspace(-0.2, 1, 100) for th in Thresh: '''============================= 1:n 计算''' @@ -202,9 +203,9 @@ def one2n_pr(evtDicts, pattern=1): TN = sum(np.array(tnsimi) < th) PPrecise.append(TP/(TP+FP+1e-6)) - PRecall.append(TP/(len(one2nFile)+1e-6)) + PRecall.append(TP/(TP+FN+1e-6)) NPrecise.append(TN/(TN+FN+1e-6)) - NRecall.append(TN/(len(tnsimi)+len(fpsimi)+1e-6)) + NRecall.append(TN/(TN+FP+1e-6)) '''4. ============================= 1:n 曲线,''' @@ -238,25 +239,22 @@ def one2n_pr(evtDicts, pattern=1): return fpevents -def main(): - +def main(): '''1. 生成事件字典并保存至 eventDataPath, 只需运行一次 ''' - init_eventdict(eventSourcePath, stype="source") # 'source', 'data', 'realtime' - + init_eventdict(eventSourcePath, stype="realtime") # 'source', 'data', 'realtime' # for pfile in os.listdir(eventDataPath): # evt = os.path.splitext(pfile)[0].split('_') # cont = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10 # if not cont: # continue - - + '''2. 读取事件字典 ''' evtDicts = read_eventdict(eventDataPath) '''3. 1:n 比对事件评估 ''' - fpevents = one2n_pr(evtDicts, pattern=2) + fpevents = one2n_pr(evtDicts, pattern=1) fpErrFile = str(Path(resultPath).joinpath("one2n_fp_Error.txt")) with open(fpErrFile, "w") as file: @@ -266,10 +264,10 @@ def main(): if __name__ == '__main__': - eventSourcePath = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\result_V12\ShoppingDict_pkfile" + eventSourcePath = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-2-27" resultPath = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\testing" - eventDataPath = os.path.join(resultPath, "evtobjs_data") + eventDataPath = os.path.join(resultPath, "evtobjs_wang") if not os.path.exists(eventDataPath): os.makedirs(eventDataPath) diff --git a/contrast/onsite_contrast_pr.py b/contrast/onsite_contrast_pr.py index e6e727d..691a5ee 100644 --- a/contrast/onsite_contrast_pr.py +++ b/contrast/onsite_contrast_pr.py @@ -507,7 +507,7 @@ def contrast_pr(paths): if __name__ == "__main__": - evtpaths = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-2-21\比对\video" + evtpaths = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-2-26_2" contrast_pr(evtpaths) diff --git a/pipeline.py b/pipeline.py index 68e61dd..99acf22 100644 --- a/pipeline.py +++ b/pipeline.py @@ -266,16 +266,16 @@ def main(): 函数:pipeline(),遍历事件文件夹,选择类型 image 或 video, ''' parmDict = {} - evtdir = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-2-21\比对\video" + evtdir = r"D:\全实时\202502" parmDict["SourceType"] = "video" # video, image - parmDict["savepath"] = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\result_V12" + parmDict["savepath"] = r"D:\全实时\202502\result" parmDict["weights"] = r'D:\DetectTracking\ckpts\best_cls10_0906.pt' evtdir = Path(evtdir) k, errEvents = 0, [] for item in evtdir.iterdir(): if item.is_dir(): - item = evtdir/Path("20250221-160936-893_6942506204855_6942506204855") + item = evtdir/Path("20250228-160049-188_6921168558018_6921168558018") parmDict["eventpath"] = item # pipeline(**parmDict) diff --git a/track_reid.py b/track_reid.py index 0c1843a..536c53c 100644 --- a/track_reid.py +++ b/track_reid.py @@ -279,7 +279,7 @@ def yolo_resnet_tracker( color = colors(int(id), True) else: color = colors(19, True) # 19为调色板的最后一个元素 - annotator.box_label(xyxy, label, color=color) + # annotator.box_label(xyxy, label, color=color) '''====== Save results (image and video) ======''' # save_path = str(save_dir / Path(path).name) # 带有后缀名 diff --git a/tracking/tracking_test.py b/tracking/tracking_test.py index 0122d6a..a55b0b3 100644 --- a/tracking/tracking_test.py +++ b/tracking/tracking_test.py @@ -24,6 +24,8 @@ from dotrack.dotracks_back import doBackTracks from dotrack.dotracks_front import doFrontTracks from utils.drawtracks import draw5points, drawTrack, drawtracefeat, plot_frameID_y2, drawFeatures, draw_all_trajectories +from utils.read_data import extract_data_realtime, read_tracking_output_realtime + # from datetime import datetime # from utils.proBoxes import boxes_add_fid # from utils.plotting import boxing_img #, Annotator, colors, @@ -80,20 +82,38 @@ def save_subimgs(vts, file, TracksDict): cv2.imwrite(str(imgdir) + f"/{tid}_{fid}_{bid}.png", img) def have_tracked(): - trackdict = r'./data/trackdicts' - alltracks = [] + # trackdict = r'./data/trackdicts' + trackdict = r'D:\全实时\202502\20250228-152846-438_6901668934727_6901668934727' + + bboxes, alltracks = [], [] k = 0 gt = Profile() for filename in os.listdir(trackdict): - filename = '153112511_0_seek_105.pkl' - + # filename = '153112511_0_seek_105.pkl' + file, ext = os.path.splitext(filename) filepath = os.path.join(trackdict, filename) - TracksDict = np.load(filepath, allow_pickle=True) + + if file.split('_')[0]=='0' or file.find("back") >= 0: + CamerType = "back" + if file.split('_')[0]=='1' or file.find("front") >= 0: + CamerType = "front" + + ## 1. 加载 tracker 输出的 pickle 文件 + if ext in ['.pkl', '.pickle']: + filepath = os.path.join(trackdict, filename) + TracksDict = np.load(filepath, allow_pickle=True) + bboxes = TracksDict['TrackBoxes'] + + ## 2. 加载 data 文件 + if filename.find('tracker.data')>0: + bboxes, TracksDict = extract_data_realtime(filepath) + + if len(bboxes)==0: + continue - bboxes = TracksDict['TrackBoxes'] with gt: - if filename.find("front") >= 0: + if CamerType == "front": vts = doFrontTracks(bboxes, TracksDict) Intrude = vts.isintrude() @@ -112,7 +132,7 @@ def have_tracked(): edgeline = cv2.imread("./shopcart/cart_tempt/board_ftmp_line.png") img_tracking = draw_all_trajectories(vts, edgeline, save_dir, file, draw5p=True) - else: + if CamerType == "back": vts = doBackTracks(bboxes, TracksDict) Intrude = vts.isintrude() diff --git a/tracking/utils/__pycache__/read_data.cpython-39.pyc b/tracking/utils/__pycache__/read_data.cpython-39.pyc index b29252f4dae2689f6e0e8171ec865b5122047819..4c463e0a0ec3a93b11c86e1551e516402d608962 100644 GIT binary patch delta 1503 zcmZXUT})eL7{||ZdfFcP0Tht0t_8{p95&blhjg?H#QDLLxkL=J*-{xjK>29l?EwT2 zEVGlbF&5k-Lm6%`HQ9w1TdFrk6EzwnCTtp`v0k{{xl3<0GrjPA%4VkYCPO@3VXGk^!r7T*9n z9&tVngUNHw1%P_o?)n{eq20X$#?a?>iIM>iyKCSpoOU-E#G}p0uiZ=VLby=3hx7e{ zp1ooU7p+1#vtODQ*#VxL)48okm~?1H-I0KBalbJ==2)?;3Y*cxr}@7V&y+fko5I`v zbvdhNaTm(D3$Jkbg=kJ%vplNl=9LWHz6u}=ck`Ky3E!;zkd zrsS|u{LV84<9MLF-t-IzLR`m0`LPn-=WNJ?LXagH^2Kb(6LY}EZ{BZ_O(*{@?}IHX zxrC>^3r2RF&xDl~Uib*xD#i+~aaU&Nnqp%jE#kpSeyw=Y*T?ger9+MM^lJMfT^j44 zf)@!V2>FCVgp(X8bH6%17Gq(Sz~?I)U$gBKEb(aA7FB=+97V)%WwGC&K7|Q+jMHKErMS#Slb4dlUHl|4O^US*ihH}*f`DoHbEy$5f*T^u5{NT4}(^w zY9lQAY%CUzvkNr%4o5p{q;Qf$$#{5f%O2OBGLo}McCb;3|95Unq`gbHNLVJkht>7o z>`N4GE}x<|H&3HJUo?t%roJ1lB>$*CD8gxMZg4_B9%&dTdY=kEAQ%Z&f{kMUZ#Ud} zYKBJ&YBhG+{t5`}6vu?6sy#BO?kydRD?vkR+sjHWn?Ron0hUn{KPl<#Q|Qr#MdBBe6ABLiw^ zs8j1@kD5~3|Mc0jX8E$>5-%0_3(nS)d3*h!bn`T29*D%XaD=fQ%A~$nB+7bu$o3JA z64r6NsRX{IQ>&5&J0sC~ax3IR0{<{d+))xUp%`S5Zu(rZjpUC_05FX|`FA^3soeCS zoDbf_f`9_u*b-=hBu)lgjVetuNEjnb6Xpr&EncSR3V}Au)(IPgoA^VZ&FPi5%O1Hv UZkL@r+9^LL?~{$PLpI6q4}Bzg1poj5 delta 1418 zcmZXUT}&KR6vyWb3p?zxz*5QrD_;u~23X2Ri+n7kP3s2_v^Juxn08&*0S1=c<<0<0 z9a<|0q()17iqzUxFe%pPi*9Tp>4PuYq>|KzsL2=;eW}DZlO`tWgZIpXU+iRld+z_7 zd(OG{B(pNJVPu9}E{DK>6^HK(ojdh$=1OkqK3anVY>*8Se{3L%4##2r&7QzLi!ji~*jbr$%}gpq1M7y<%U?3QxguyZBFQqnBtnvup8F(4cl!cLoD6J}FDh~_l%%GxIl z0$9%roCZ8A$d65Q^Q&uYkK#z#lMd4!iz-e0HF2ZtC1;$wm`<3)uPZ&!gPp$lk~R`r zIm}dLQiu!KKU`QZ}&lv|Xn zu09H|hza>+IB%W%3(TlFY-O#63wXL_zmrn1CBhtT)cD~;+^%VZ<)p9HE$%qQH~75& zAis$#{u4aOuYMU4=&kRr_-|XLOVgPek1OF|M2#v|mpuDoeI4A#PwRVNEt#@+G-XG2 z5id3!*gZqNyhS)mc!jWn51UH;Z*#NH$rOEpMW2er!Wz3m&Z``~));?>PC5Ob;T7#K zBYzf$>}CnFj}wj(td_5l^$y`W;RfMdTxhP$UM17In>n)P@lLZW{sH)N^B~+z9@%$9 zgxB$Uix)!pSxcl~or2ycq!OHj432*6di+Oz_a&_ba$Mx1i;KOCk6K`h9H$-Cz3Q0K zUOJ}9eJR~N&&j*k8yIR`bY7qkBwWTvt(7o`g>8LBw@9GuraK;q=|N42YB3fZm|&C2 zA-veu4fpW-wkM7)Q`|ic*=D8>su3j^59!0~Ur8yz>hR zJWAkS9=4erZx4Vx%$KG;qH20rWlW`&Z6u~f*$6jT7vUsf6Tj^!Dg27e|JAUKh1BRg zW(CUNL9#Ib01MdM+2CHGa%p^nz(08sur1U(Wf;aAogHu+&Ca6MA<7mbOcNFemk8Eb r*T}j_pi{F=!UMt1nA;N|oGFngo9VmWpsa diff --git a/tracking/utils/read_data.py b/tracking/utils/read_data.py index 80a8ed0..45880df 100644 --- a/tracking/utils/read_data.py +++ b/tracking/utils/read_data.py @@ -205,10 +205,13 @@ def extract_data_realtime(datapath): if line.endswith(','): line = line[:-1] ftlist = [float(x) for x in line.split()] - if len(ftlist) != 265: continue + + if len(ftlist) != 265: + continue boxes.append(ftlist[:9]) feats.append(ftlist[9:]) + trackerboxes = np.array(boxes) trackerfeats = np.array(feats) @@ -381,14 +384,21 @@ def read_similar(filePath): if Flag_1ton: label = line.split(':')[0].strip() value = line.split(':')[1].strip() - - bcd = label.split('_')[-1] - if len(bcd)<8: continue - + Dict['barcode'] = '' + if label.find("_") > 0: + bcd = label.split('_')[-1] + if len(bcd)>=10 and bcd.isdigit(): + Dict['barcode'] = bcd + + + Dict['event'] = label - Dict['barcode'] = bcd Dict['similar'] = float(value.split(',')[0]) - Dict['type'] = value.split(',')[1] + + if value.find("=")>0: + Dict['type'] = value.split('=')[-1] + else: + Dict['type'] = value.split(',')[-1] one2n_list.append(Dict) if len(one2one_list): SimiDict['one2one'] = one2one_list