From 2999f9c26dba9fd883b98f600348d8814c490b60 Mon Sep 17 00:00:00 2001 From: wangying Date: Thu, 2 Nov 2023 16:46:42 +0800 Subject: [PATCH] 1102-wangying-update --- __pycache__/add_xml.cpython-310.pyc | Bin 0 -> 1543 bytes __pycache__/add_xml.cpython-38.pyc | Bin 0 -> 1513 bytes __pycache__/create_xml.cpython-310.pyc | Bin 0 -> 1458 bytes __pycache__/create_xml.cpython-38.pyc | Bin 0 -> 1448 bytes __pycache__/main_process.cpython-310.pyc | Bin 0 -> 8694 bytes __pycache__/main_process.cpython-311.pyc | Bin 0 -> 17010 bytes __pycache__/main_process.cpython-38.pyc | Bin 0 -> 9290 bytes __pycache__/main_process_copy.cpython-38.pyc | Bin 0 -> 8485 bytes add_xml.py | 95 ++++ .../__pycache__/change_video.cpython-310.pyc | Bin 0 -> 1885 bytes .../__pycache__/change_video.cpython-38.pyc | Bin 0 -> 1910 bytes .../__pycache__/config_load.cpython-310.pyc | Bin 0 -> 506 bytes .../__pycache__/config_load.cpython-38.pyc | Bin 0 -> 480 bytes .../__pycache__/data_dir_file.cpython-310.pyc | Bin 0 -> 769 bytes .../__pycache__/data_dir_file.cpython-38.pyc | Bin 0 -> 753 bytes .../__pycache__/data_load.cpython-310.pyc | Bin 0 -> 821 bytes .../__pycache__/data_load.cpython-38.pyc | Bin 0 -> 805 bytes .../__pycache__/data_rtsp.cpython-310.pyc | Bin 0 -> 313 bytes .../__pycache__/data_rtsp.cpython-38.pyc | Bin 0 -> 305 bytes analysis_data/change_video.py | 43 ++ analysis_data/config_load.py | 7 + analysis_data/data_dir_file.py | 25 + analysis_data/data_rtsp.py | 9 + .../get_model_result.cpython-310.pyc | Bin 0 -> 600 bytes .../get_model_result.cpython-311.pyc | Bin 0 -> 925 bytes .../get_model_result.cpython-38.pyc | Bin 0 -> 560 bytes .../same_model_img.cpython-310.pyc | Bin 0 -> 1580 bytes .../same_model_img.cpython-311.pyc | Bin 0 -> 2322 bytes .../__pycache__/same_model_img.cpython-38.pyc | Bin 0 -> 1572 bytes .../tools_analysis.cpython-310.pyc | Bin 0 -> 1721 bytes .../tools_analysis.cpython-311.pyc | Bin 0 -> 3284 bytes .../__pycache__/tools_analysis.cpython-38.pyc | Bin 0 -> 1703 bytes analysis_result/get_model_result.py | 23 + analysis_result/same_model_img.py | 48 ++ analysis_result/tools_analysis.py | 74 +++ config_det.yaml | 32 ++ config_person.yaml | 30 + config_phone.yaml | 30 + config_sleep.yaml | 29 + create_xml.py | 53 ++ .../__pycache__/drawing_img.cpython-310.pyc | Bin 0 -> 979 bytes .../__pycache__/drawing_img.cpython-38.pyc | Bin 0 -> 967 bytes drawing_img/drawing_img.py | 36 ++ main.py | 61 ++ main_process.py | 536 ++++++++++++++++++ .../__pycache__/model_load.cpython-310.pyc | Bin 0 -> 1054 bytes .../__pycache__/model_load.cpython-311.pyc | Bin 0 -> 2113 bytes .../__pycache__/model_load.cpython-38.pyc | Bin 0 -> 1279 bytes model_load/model_load.py | 50 ++ 49 files changed, 1181 insertions(+) create mode 100644 __pycache__/add_xml.cpython-310.pyc create mode 100644 __pycache__/add_xml.cpython-38.pyc create mode 100644 __pycache__/create_xml.cpython-310.pyc create mode 100644 __pycache__/create_xml.cpython-38.pyc create mode 100644 __pycache__/main_process.cpython-310.pyc create mode 100644 __pycache__/main_process.cpython-311.pyc create mode 100644 __pycache__/main_process.cpython-38.pyc create mode 100644 __pycache__/main_process_copy.cpython-38.pyc create mode 100644 add_xml.py create mode 100644 analysis_data/__pycache__/change_video.cpython-310.pyc create mode 100644 analysis_data/__pycache__/change_video.cpython-38.pyc create mode 100644 analysis_data/__pycache__/config_load.cpython-310.pyc create mode 100644 analysis_data/__pycache__/config_load.cpython-38.pyc create mode 100644 analysis_data/__pycache__/data_dir_file.cpython-310.pyc create mode 100644 analysis_data/__pycache__/data_dir_file.cpython-38.pyc create mode 100644 analysis_data/__pycache__/data_load.cpython-310.pyc create mode 100644 analysis_data/__pycache__/data_load.cpython-38.pyc create mode 100644 analysis_data/__pycache__/data_rtsp.cpython-310.pyc create mode 100644 analysis_data/__pycache__/data_rtsp.cpython-38.pyc create mode 100644 analysis_data/change_video.py create mode 100644 analysis_data/config_load.py create mode 100644 analysis_data/data_dir_file.py create mode 100644 analysis_data/data_rtsp.py create mode 100644 analysis_result/__pycache__/get_model_result.cpython-310.pyc create mode 100644 analysis_result/__pycache__/get_model_result.cpython-311.pyc create mode 100644 analysis_result/__pycache__/get_model_result.cpython-38.pyc create mode 100644 analysis_result/__pycache__/same_model_img.cpython-310.pyc create mode 100644 analysis_result/__pycache__/same_model_img.cpython-311.pyc create mode 100644 analysis_result/__pycache__/same_model_img.cpython-38.pyc create mode 100644 analysis_result/__pycache__/tools_analysis.cpython-310.pyc create mode 100644 analysis_result/__pycache__/tools_analysis.cpython-311.pyc create mode 100644 analysis_result/__pycache__/tools_analysis.cpython-38.pyc create mode 100644 analysis_result/get_model_result.py create mode 100644 analysis_result/same_model_img.py create mode 100644 analysis_result/tools_analysis.py create mode 100644 config_det.yaml create mode 100644 config_person.yaml create mode 100644 config_phone.yaml create mode 100644 config_sleep.yaml create mode 100644 create_xml.py create mode 100644 drawing_img/__pycache__/drawing_img.cpython-310.pyc create mode 100644 drawing_img/__pycache__/drawing_img.cpython-38.pyc create mode 100644 drawing_img/drawing_img.py create mode 100644 main.py create mode 100644 main_process.py create mode 100644 model_load/__pycache__/model_load.cpython-310.pyc create mode 100644 model_load/__pycache__/model_load.cpython-311.pyc create mode 100644 model_load/__pycache__/model_load.cpython-38.pyc create mode 100644 model_load/model_load.py diff --git a/__pycache__/add_xml.cpython-310.pyc b/__pycache__/add_xml.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..359f6653369b4a587a813ae46ba9dfcc31ab5c41 GIT binary patch literal 1543 zcmZWp&2Hm15GF-RmL)rO9H-d@3KS@c0!Gor0t>W7|4?kV?WM>TNcJM6Fl3WX(7H)#L3 zk2fENk8d!l4XH(*piWF0 zQrcGYG4&kVJZ^g*<6Des3n8eX!W)tUvhg%A(beA~iV zjrgIZ(JR`%rigarTb9ehaxK@|`juAM5+7-n+aN0hjy__ROJu?NxjdJ-rP&`u^|18S zBl-Es7_S%kgXM*au`HBHNY&pPhE%gHy+XPLy-zk=yX3Pi`wwyG zCEfUUaIeOLJ2l=DSDS;MTkxisq!iS$2bAY*nxrMoFxap2V z6K~t5>+FGtz;{I3>@@gJgGa!7A~wAS?=^S_cprGb!TSx~1-`2z1HWb$Tn9dO8*T^O z032d4gN7S4To2qHIK*l88g8%Q`rwA(5ThA3+|Y6L2|BeF!B1S<$0ojXXNnDCbh(&! zP`0~bAohM|C|q6_-tbVll2h&sm{t`)U`a%Ds1vxUR0K4g|@+Yny+M~T#VLVrV5d?PNi05sg;Xa zxeB&Hx?IXaSca~ttJV51RHo%<-$q$6D^>L*n`#@wyoclQ8NDdmIaI(2tzo$8y^x(lLS^hUVux>0q^;g^e2 StaACatE9?R67Gzk)BhLBK6M=c literal 0 HcmV?d00001 diff --git a/__pycache__/add_xml.cpython-38.pyc b/__pycache__/add_xml.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..082915650acd1a55d893294747fb119d0d3fb3eb GIT binary patch literal 1513 zcmZuxL2uhO6edMUmL)rOY-eeA9tLHp*e`I7yY2Vzx>No_fdTtSYem;g0v{j0?}_j6={-K{c4K0nzlY*yXn(oIJAy&~ z0;B#If)h>)vZN_pdZ|YVZ*h;aS2ShZ=fNwI`aJxBjH5f)lCfu!uM4phrFtrbFs)`W z^DNsucKZP1D~$Sg2u?NS-iRENt*3}4H&iN37F2#@<<7e$^@;YlcMNVqfid~mO2?dO z4=B^*j65G~iSjkUZtR%cAlM(jb=JjO>(_hh@{-B4|2 z#H*1;?VXX|==0r{A)#zXZ;@0^ACj%FY>L^A{fk)ihHiswPIhhGwf4Xx;0L^|4;uWS!DHY( zp6FhK_ZqwdybrwJ;Qa>g0zXu-hF^UMt^*&34R-);01h$eLBkCit_N-i4sq&X!wnm* z4{ihwG3rsnjV$L*&~aJ}KZ&zXbaG?QlxW0gbFt{4I1l-N4}WDS&&U+|llCv( z*-p8$En>oIx)3v!hSQQytBvu?Y$;NIRn;O*o|W}V%<_3Ic-mHSUCuHkxS^k>ZJy8P z`D|S%<8PKZ%67BN@b$IRuc7}GtkwL{XHU_sktk;s&&!Lnhbo+KF)K2esk|!3UE>#d zjZI#N>)NoqR3^O2inXYvjnM?FOd^ujg;27pl(aERTfZjERx43*!_XnU8XKgC`D~U_9V7^GF_bGtnvf9rR@fJY{f%})K~Um@vX}= zwmpaTd$O3m)xSihSXBzc)XORj)FsSQe_pL6WPT-5R_B{EsL`io8i@SjQn^mui#}YK zR@0Q$bNxL8@q91#`}D#74MQ5Uh(#U-nltwPPsR>^PqO_w^5iGj^?Xd-j~@r=k-YFN2{?`S;89vu%75EK@XU=++HmncHB()3K#?6lh-V|R@^BfVhQ ztgE0mQ8Wq}P*E@{2qH!{e}{E-XOlU3_vEjtdnbF?f~tP+_kQoas$W&7t(L1{wBCG? z{q1PlKhilrbU0Tr^Gz&Nqa@N|;*nVQ^w{tWqEVe1w>8hC=1r|*&B4+-hN!(3v6v-X zxHm`LGuz>5&a*Jt=^2t%jSYNl%xjqW4@A>Ax*U*wgOkFb`hmW0Qll_^UHK+_iyH-@ z)@AL06jp`Xz-=&WT7y+n3`a3)ieb|_a7W>;!kr3l0Iw^&sqi{*vp{X?>{{7zp}nfT z&G%i^y#;OqR)e--HMzm9!o6!xCA+NJR8<>v3Go(PE?Skp0>6#SHeH3agv^@Cb!5-1=qQ_EV!@acAx(#_Xdzv-^LJIy9GXba5($+Xm~V4&bLsBk9k?+jCS;^8Wol296CN=R~6;Z-e zDWxz~KnWuZbgZJKI#mTJk=Irg7CKeDQmKk3<*H1n*#Zs53ltg}IEEnoAGPcm9R9x- z*w*$dL9*-1tISLD%JbXfuEd6E&*v=X{wQbLy^IB%`AC0mI1%n+*Fv5ADi){a5}UZB zjajbJYLlk!DCCk=#$EC>{Ij`FJ#9o$fEteO&PMXI5mQS~@ literal 0 HcmV?d00001 diff --git a/__pycache__/create_xml.cpython-38.pyc b/__pycache__/create_xml.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..163d0f541f1fc9e8978a9c4d10fe8b1d8d1e611b GIT binary patch literal 1448 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 literal 0 HcmV?d00001 diff --git a/__pycache__/main_process.cpython-311.pyc b/__pycache__/main_process.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..21fc6929df3a3cd94114f95c597349b057c29633 GIT binary patch literal 17010 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 P7L^Bwt(dzV5Tg9w?Rp$L literal 0 HcmV?d00001 diff --git a/__pycache__/main_process.cpython-38.pyc b/__pycache__/main_process.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6ac8fdc0b38acb7c4f021847b9205a9fb7eb1a7 GIT binary patch literal 9290 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 literal 0 HcmV?d00001 diff --git a/__pycache__/main_process_copy.cpython-38.pyc b/__pycache__/main_process_copy.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29912daf014cc4d9980390153a58369a55a055f0 GIT binary patch literal 8485 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 literal 0 HcmV?d00001 diff --git a/add_xml.py b/add_xml.py new file mode 100644 index 0000000..754da18 --- /dev/null +++ b/add_xml.py @@ -0,0 +1,95 @@ + +from xml.etree.ElementTree import ElementTree, Element + + +# xml换行 + + +def indent(elem, level=0): + i = "\n" + level*"\t" + if len(elem): + if not elem.text or not elem.text.strip(): + elem.text = i + "\t" + if not elem.tail or not elem.tail.strip(): + elem.tail = i + for elem in elem: + indent(elem, level+1) + if not elem.tail or not elem.tail.strip(): + elem.tail = i + else: + if level and (not elem.tail or not elem.tail.strip()): + elem.tail = i + + +def add_xml(inforsDict,xmlFilePath): + + result = inforsDict + + for re in result: + # if re['score'] > 0.5: + + # 获得标注信息 + ObjName = list(re.keys())[0] + xmin = int(list(re.values())[0][0]) + ymin = int(list(re.values())[0][1]) + xmax = int(list(re.values())[0][2]) + ymax = int(list(re.values())[0][3]) + # xmax = xmin + r + # ymax = ymin + z + + #if ObjName == 'person': + + tree = ElementTree() + tree.parse(xmlFilePath) + + # 得到根目录 + root = tree.getroot() + + # 创建一级目录 + elementOjb = Element('object') + + elementBox = Element('bndbox') + + # 创建二级目录 + one = Element('name') + one.text = ObjName # 二级目录的值 #结果展示:1 + elementOjb.append(one) # 将二级目录加到一级目录里 + + two = Element('pose') + two.text = "Unspecified" + elementOjb.append(two) + + three = Element('truncated') + three.text = "0" + elementOjb.append(three) + + four = Element('difficult') + four.text = "0" + elementOjb.append(four) + + five = Element('xmin') + five.text = str(xmin) + elementBox.append(five) + + six = Element('xmax') + six.text = str(xmax) + elementBox.append(six) + + seven = Element('ymin') + seven.text = str(ymin) + elementBox.append(seven) + + eight = Element('ymax') + eight.text = str(ymax) + elementBox.append(eight) + + # 将一级目录加到根目录里 + elementOjb.append(elementBox) + root.append(elementOjb) + # 换行缩进 + indent(elementOjb) + indent(elementBox) + # 让结果保存进文件就可以了 + tree.write(xmlFilePath, encoding='utf-8', xml_declaration=True) + + diff --git a/analysis_data/__pycache__/change_video.cpython-310.pyc b/analysis_data/__pycache__/change_video.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c7decebada057f7011935fdcf924b61bf32a952c GIT binary patch literal 1885 zcmaJ?OK%%D5GMDf)x(bKxK10i$-;*M0;-@$g9HfrLQ}Lo>0+M*0mOPq*&AzjRgzL9 zWp%QzKJ*`0NB<>Wd+Is29*WLzEn7C6QsC^69L{|6kwX<58w~>O^5B*Dvqs2YI9P8k z41R*H_CRpL>5%lQFYVFa2zR)9M!0+G^c+t2N!$Ay>_|63x!$h*`~tIr^e88|gF9!W z=kf>KI>m4X_XSCPdmY&2037>4N?K{N;;;u0=x~ z`y1%W1HlPwpxsLl##3TAkch{Me|{CO`#;C|2^*wCp(^#8Z~N0joEsGh(?V%BR-zy0 z@o=V6#dxgaesUb=M}kdKE{bQPnF$$7^HekDV^jx(N9Q|h5TC6KOfVQ^BXN`B2Al3wKEtK^Z_+Zg>9u`^w)U>dc}}8tuJL zb4+Hj7j=@?lW3S8PJyDRqqIyD9d(|ANio)yP1}_i+XU4nQ@dJedw{c$S*(pyDC3Wc zk;qLbMa+k3F4{GT@J%DlM`LZtGfmifGpIl@F%?M_few1DYElX{9_pJzkeIn?CPh9G zQnPrHhA^QvK?Kx+U+{0k4XNkPAFUI*W`B!I1h(Sx!xjum0$d`KaN*9~eRAn`Eu=P; zxO_?FHhw&tlEkp`0Sa8ai}K-GRJ?uf#9_7rb|3J_x9I%oM-Z-TKZ;a7#AxVBeu`oj z#q~X{DB8Xg9AZ5}v(G@xpZrf`Sh^J$=~+=^Yg?1I6lijgrqUg_oSr)iuk`S$QDO_o z>9!pc=vW>JZ9MoWxFdCaj8`Jfk4$i2Rm-LE6&UKae;=jB7g?MR?^o+JSI zF`%>syh~ej{^fo7UE3x|)vDd9rYX!~dQd-fNmWBba;KDD&Dj;Nbe6dG6h{8d3_fq? z&Xr|=yZg=pYZ1NGuo_|PF9PuBmGl%WOL7q+g-g&aX?}P9<9;FK?CWS&jH7IfzVw%D;RGiG4Z>lN*#-ny!HX%9VjbeRl z0&9b%D$`t>8u-rROqei>PXr8LMU953Hlh89sg|F^?o}n%2eQZ*dg|4HRqL{TjnC8( z5krT)P{!}9X6oQX9D~4vwG#JYYJ_anzv>5wi91p7%8Gxz1eA3ng<|ZQ)9TYc}WHr3}(!SE5*q0_G nA#J#g7Ie4e*)@0@kze`6%J@DnCj71f^aK9qC`5s-ww?a~B5HwLMs~xf*yh-Esz53Nf)OVp#ZU7Qr5=%P)SOW zl-0?;>d=2+9sQSh?WupEhoUpPmMj};fl}DvkQ@%b`8Y%Uva{15(2f@`#P2mi{=mUz zvtjT9eCh}UC!8jvSM{_va0j=p zNYCbvxWnBm+H?3G_jnC7mp|q{uY>0Cecs?r&}zKJcfj7~yKvHhX{N(hOy}(9m*2gL z=*DTNHqh=32;(S`^d;gc#b0ku26-w@CTC%GQAsw;Bc_GYY^20Vn1#ty z#ftGzhbPe>%+3WH$6Vyc!>REZi?diW=Hgiv2tsFv8^DfN2FC06)1f$z5YVatNr4?5GJ69-41FTo@q>B^>UOFY|n)h1KBU1>XjGnZ+ojg>3o4)dYN zj4wsVlQ#8cMAZqj-)mKqQm9d)@2Hm;xoJjuHWpH| za2)$Ep>{zK>QReYe|vU=`tI!MCZQYl_qar0YcBU-P!Qk}nS?Z3*r(*i?v{|+RO0dt zmHXH^Wk?c_m5)&1;zN`N8>eEzZKEnxN^fPu50 zZeV%-A6Q`N9uy>OO&Zp?CLbvfXCZNg-M2YiSaYXvF!?Ac3(4xXE#v7>o(pXp=oDm4 zT@Nrx;_TdbA4;`k*SHD{b=%!WvT;Qk#>qpjAFsj#p2Kkjke^|6W!=yxboS-8_|~=& zmiDUMtFH;nVt7zdbV=2rhTtwKy`3vpoWfe-+B+DzcQg3REv#Eh4|o4+&9OSsTMg?I z#_rq$k4`}^!LlINK2o>@y(G=;&b~j*rJQ~nO!HBYj+71}U`&fZ4@AIYDI%TAX#mw% z&Qw(uV2LS^Qt1!ydii1!!^4zc%$o13x&g+6c3n0hIO7aMJuqHrgT*W3Oq&|`&caj} zKMgMg3}8hKlUN(S?8HP%OrKS4*ZVS08G7o~fYs7veT~o55fMX&Jzs{OO3l>4iO5u( zXAduPcXgR(Q{4C*4pLZPgtn+p58*!d;MbtDXWMSI+SG-L#hcvT)$tKVJdBwJV`@PD?K0yrwmIy|EgJS)6P-$2Z5+8HSIn@H;Q{Qg18aDi#as?hx aq+DWZmJ{2282?QL=NmyXjzX|0E(ClOB@VGXe(=pRmuyun3Ph#y-_hOhqs3wfV># z?^nhFtBSv{OJH;>r}Y#eoWlm#xxuSEUBD&EFUUE*InJF7Gj-sa+PL1+E-6< zsdSmt$}o_Rh3KY63*oDUEOq8Q&kLP-K9U3DxgoNz9}kWBON)GcG>~SJWLq=4_3jTM=ZM$X6h4{{+oyFv@X!|O9TUkypkDRzz!_Qg3NG+q|#f__uVBm zY*tw~tV*_`4?y7vZs86-U|8}azQQREEXiIfg$WLhQMRsPKapWP!MJ*z2&uAOEptoQ zI_E*C73a2^icH1EvLscpWpfc}%QP0-=2fBff178U^GN8jDIYal6;E*~OM*|xIymz8 zq(4m})qfs~_-TziO?+-tZg`QazKDgM=V8vJFrx1#aS%?p6FN-ic59*xU!Ud7{Ye!8 sNQZPu*2SpDvIdf^IZ+*s%Pq>AQhWopU0MA!N@Stcnfvo{V4bw+AE-2Qga7~l literal 0 HcmV?d00001 diff --git a/analysis_data/__pycache__/data_dir_file.cpython-310.pyc b/analysis_data/__pycache__/data_dir_file.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..318630b6a9bd8c96f219643303162bb943fb1ed6 GIT binary patch literal 769 zcmYjOJ#Q2-5cSvYZ7z35kkUYjDA)!?P#__M5J93#0|i_c#hC|Z-E z-)TV=Q~WC_m=Y?1oh$l|Lcsjj2Myy@VN~f(W zS5{ADBkL<$*-}X-r|3$!E%rTbufk}q-3=gs+U|oBY@cRyLifNADf`0yh{TNHV1^QG z4X4AFsQm#1pgrggI^X^G2W&$-?wN=G`^Gxq>6&>FRfRZenzJZUNKOoln)ASC7f(W3 zEsU1RWI&oH#kg9`OVps35z|=S3&kPD4msC0{6ACG%tf(!Hv+1D+HLn8KrF(7!IW%B rM^rF_fjN5cNlrb+@}q54|Augb-3LEJ7RsA<=U$2nj`?$X&bJbdzjqd!dz_8$W}? z?h$^Hublc9I5Fd}r6c*-^E~scdCAA=bW9+gjVJmSBjh(G4+A*z4wiiipopS1DTbXE zR58WBlY*&4rLc2FKaf1TgGzF?z|MUfz#)V69+v$Cup~WmWJ^8S(Npr}^fT{ypY*9u zA$!$lj$E-V_uOYY){kPA_|c9k`k3^>3r|;>Iq__pB1_5j$@R=Lc%7ZyQP9t`z}7Y- z-(i8%z#KX2xj>qgIS&SkqAuz@hhn^I&;&`vn}pZEzZ# zee%zBwxd1w%)=M^!TQA0E%QnA5uA-K<}BJ0(hCE_7O|9ReF&6(l0b1hlFJLyb1^@s6 literal 0 HcmV?d00001 diff --git a/analysis_data/__pycache__/data_load.cpython-310.pyc b/analysis_data/__pycache__/data_load.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e150cfef5a5c195be13a62a5f24a9b52c1acfab8 GIT binary patch literal 821 zcmZuv&2H2%5cXdZC%Y>laVUrvAP06U)B_R-QE@;*qN)U^Tq1YvrYXrLvfb4#N)S>J zPr;#ZXxFV~Zh4-U2`~=KMckLb4o3A| z*qm}5fzj^C4txI`H20;QD5J3V{;{P4Jm?tn?T6lkPM`(^tluHvQfH^ zCJ(;0u}&0gXSAmq(bu7PDf}VmsFSs}Uy+$YJHH;!kNZx~&kyD4`!!ZWzo?wHZZ1z{ zdtn<}De2@qK-KnA&4!CH|HC*`vD*NMa6G{i!Wbh3F5+f{N6tv_O{lpG_eyRuI81n? z;{HD$nZ>d}iYTXe_@C(JZT;0WR*mD_f;&)sY5S`uIOQI%?o&JMs62U?UB4WTYO;Uw}WxZYD$eCMq_P~f$$Pdv@|I)Ro z{0mmjBnTOJZ{Ezj{j3LrQ=s^o-?$Cs9T&$TskkR#pU8q0TUdaVGsu!cQ0qTfCxi(B zFNxmagWR9O$_uc`Qie0DW?)lV*_pm2H4x?_+#y#3Ix+Y=Vrn_&2w k*daQXN+=mvPBXF3`vZ?CrCHm%eW`6zxjTL&@{jc89~MYMiU0rr literal 0 HcmV?d00001 diff --git a/analysis_data/__pycache__/data_rtsp.cpython-38.pyc b/analysis_data/__pycache__/data_rtsp.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a450c2e2f9b06e171bd7207e4634414bf8ff73d GIT binary patch literal 305 zcmYjLu}T9$5S`t-iyD%~La?zEuF2MhAcA0-CZ?rggkg}-t4~F+4*qT2gYT8;9t0YN^=O!%?*RYc61qGl3io%V>Iw?=DwS$+L{-zq%6~x2 zIr4L5md(bS#|O7v|EUd4Ws|35Tk^(jUA?0fS#-%65i5_5!mc|JV}pxMK1e-TsZUj| cqu6Pw_I1DJKnlL=jwhQ2+uC2tfjN5Vf7e$!2$1PN@6<4tqgJ9FQnN2zo@laEpSXY&;v8W}RSXQ7btT(sJyN zXpj6QU-=iD7{{vUMDyZ#^ZY#d=-2C-={=od8-Jryg2*P07)@zQrfiJI#PSn8(F^kR#k8=gT|6h2 zUB&u*P6x6%I&Y7?)KbjodZm)iWEQu6(o&2Tn)xy_1n&>&hZ?r~~C9sYb`^VE`qzOSd`n!mHIDG^hsLN*?MKOtshb z0bJhnYA?my*#u*SeAP*VF6e#i#$vIY+i2Ze4i(I1W&N%vUg~H?BG51UjBz!v41K^ BqkRAX literal 0 HcmV?d00001 diff --git a/analysis_result/__pycache__/get_model_result.cpython-311.pyc b/analysis_result/__pycache__/get_model_result.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cceac413adaba0e7132a8ac7dc1dc0cce85b9f60 GIT binary patch literal 925 zcmZWnO=uHA6rRb?=4W@QB$Cv&1P?K7j2dV!9;9HEN{v*+n<&dBJBe#In{;ObEpBKI z9(w4Zhe`_~-CToutL`^N-WRTpnv18 zaX`aoLD~gk?7l}di0%3w$mP>?6 zMMEwV7A{ouqN)sbW?W$%cu7+!sDO4&Gg&APC%crJL!HxIf_GaO0=K{gSY`YWJMB~F zS6m<4`C9gMrA)Frd0F3by;Q9fB$H56s!@`aby?e`DwSN3Y>AkXdl{FwQ{80&1xU4A zGU6cayaW0HTmyB*g;O!v5tGfAZE@KammBNdE3qS?v2hk#uw$vl)3eCz(d|aA8@bxZ z{S_ncR}S~u(M3DD*cO*;ajAzm|E+=B$6Y>lxP7pC^0>pNT70TIfAjmwm%Sg`cJ_Wd zvu4AXfADkTxBTl#Ywp>8t}Db(g+xb4oV;xd8C%G-gv`GlhlF^`7wbcNXfurm4Sz+( mEI=a$?mT!8E?3jYsxb%9dG9m)q{!(nI?IJuHMS^jtz{a?U06VkpLI&AMuA*|oHgfPC7#Mj$!n zm2}M`^wv|yD*_oYpETb{-;AUm%Vh>+5AQ!?$N^ra;H?n{=j3`pAV9Et$U*RHSO--| z)T_;D5s_bzYe8V)5iEORV`#(QY>Wu`7!w9#Qp1><&_p&qumihm)h>NC`WMgL2$HZn&jKQB%n^F(#YMtguKcJA6$)jy|i#ne*IT#<8cJ283mQ}|kjl8Y?0ZyVJ$I|N6VqjD)MyHS2Ty$I?_45?lx-bMzwvxJIcBA8wu|lJezd>lEZ)I2bj|U literal 0 HcmV?d00001 diff --git a/analysis_result/__pycache__/same_model_img.cpython-310.pyc b/analysis_result/__pycache__/same_model_img.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3903ed0abd4f74a3ed53870d26890da3829a121 GIT binary patch literal 1580 zcmaJ>&u<$=6rPz~uQ#q^(g0PFs;Y-l$x^Y}^nesa5kiOqhhEHSNwr$&_yteu>C=RkOGW@8!BcI0_G^XARG_r3Q$ z2a}Tp0;B)_oBYolA%Ed!d@$I&1yh^_;SrDeq(Lp(U>2jqW1iL{mgebR4!*i)R7p9% z50<3Nl2--yxf|KFTCif*I=1iBxG$1YJ!sn@7i~YXqicbyqj@$=_-fe{AHl+-9_x{q zzC&)&b>eAVeU)6L;E(mpn4q?si*w_HKTie%~A3 zxjp=*H{ASru(b-m;lrK%&D-gnHF-0`<<;FtWY^O_?xyQsq?UcYxRFaQBA#rE4ZLnEp@r3YfZx{BRuhGJeGg5VCu*r%lz6OPKiu2+E#0}N8ZKSCxA)+u=aXI*|17*Ei(mRb>46Ajj0lJ?#9qmWkQ^IJBecd# zc#aJqvnA{Q2JA!$M1dHT9WXhI2iMOjj%UQdf4=BhlvT9Td)b$Zk?>fK5d1ilzGlBA?$qpXv>rhG|+BbbRf2Oir#pT~a& MVStz-Q0&+L1;72cBme*a literal 0 HcmV?d00001 diff --git a/analysis_result/__pycache__/same_model_img.cpython-311.pyc b/analysis_result/__pycache__/same_model_img.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a971021ad7c4b6742c2edcffc555a5c4abdbc9d GIT binary patch literal 2322 zcmb_d?N1y<7@ygDVS$6=r6{lMf=8PZxT8d4Z3w9eX<8zU3Exn%9(P-MVegLY?g6KJ z2~DtoR>V{TEvOh3X-KV!HZ~Ud4>SuQ@v@(q$Z_z=Yp99glh4fVoySZ1!8qCZ?aaFDz zAh&Io2)G%&LKZ~9ukii-kx{-s#*4mwL6r64U?j>*f*chUUKxq_t>*dUMaCBBd%pop zuy7k5M=I__OE6!7ZnXE=028-PvR5(O%c|(`dfcYkBt`{o6r7PkNQIM@z?zkeMJR4p znSgbW&ZS0$+-x=#ErH}pRytracaZ70ekK5O(%o$I0mv0_ z(1cN6Xh;-zF(@nNx!r}aou%u^_kP&9{z>xd@zl(X)SdCv{CC@n6Y!+&t?ka=NX|@B zNz-qEpkI+q@#HVJl2ach=hsqG6Wd>nZ9n)R_2}02=L>(X-rQbXO|E{l_3-C6-!+_n z_PlYx*?6=0rOo`(cFY%#$J0k|^=JJ67TBSeL*IJ~U=|I4U;Er~e8AIqF;@ci8SP*c z4|y0>WwxP@nVT>6pu1Qik-5w0R^lk#Iw-_s$ScOvsxx2*S>(9=3*Kvykl-Ed_k{-y zJSenC4q-yaDLb-dGdaGB3a z8xHieixIz1lsjOMktqZ{o=>Lv+H}X z9bG)&SCaeGueC7v6q}x9<5o^w^WzR3atexx9n#eP0Gv0ub6GZg9$gm)Z zzM)+bEIlt6rfhHpbSJv$7EuUG#Bg`M?#QhQz4S-iG!$*?c%kLktPAwT4ke0q^T z5>|rYs9;P>Ni5;JK{+&eDvzAU`>*-J1A^`_RirMHNCf1304P)1E>Q33C!d`c5(gs0 z5ScI+@l-LY?!qMAuUrCLue!VmW9xHi7FAS_b*Gubjx?N_s5z6ikfkTo(@!aC){3+p zu~lhQZYxbVYc;m^FBZ98O*ksG>ZT_a>}r9Ht`?2uV4tI6E`Ou2UMs9mI?HC-*PYy^ zlUsak!`Y}g8QIbKFOj7edZcl%+^=R6N$kxMqJJUZU z*JcgIOHR)2e7XD#*0~DjWUHg)|K%O1GjzX+)|saVNqKOU!~$eWtuQBvq)J#grov7e z)MAz)`2{M+kwy!V?gKEZs+GjwfaRKBI}>dA?`-7;Te;3wZ?e@8u5Mfl@d8ZL);%TD zQ;7x-cHEP;H{jAV%0d^;!*ywN6zDzw0J(>Cr2qf` literal 0 HcmV?d00001 diff --git a/analysis_result/__pycache__/same_model_img.cpython-38.pyc b/analysis_result/__pycache__/same_model_img.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e6c33ce1a454258a7121c480e4e4ed35981549d GIT binary patch literal 1572 zcmaJ>&u`pB6rLH+dfn|NN<#~+R8>8cij~?8&9RE29uUV~A|zx~8LvI0t9aMj8E?rJ zuhgnblL!b!MXE$9l!_lBhjM|6iiZ3ZoO~tTO-|gog!jhYWoZf{&zte{oA>5>?|Xh{ zVxmM~oG+Ed?*&5sz?bpC;N=QTbq<72d>W7jwP}Odj1r&uMvvHr&;0_d+&33UrMM54 zq{5ODN(91-oLVhhc4{3baBCt^$z(ljJ5s225INC@p~ulY9~P`eK9vs}pZcsvV)_=j zOV@~RbomPTfI>XhvtokUZXqtn3o&0H5sAU_F6){x^9xH%z8ldPEPPY%S!~7zd@aVs z1p*dD(7x|maN{HGrx2=i7KT`M8?8V%L0v_c&+b3Ez4!f{^y8oQ?tGbk+Z)`!H~6YI z*!Z!(xdPAN$t3YtGtQl&whRHqbx0#E@uudbuZ+a*<3UG5>2&Qy{4mj6mC8oSSzR@S%9fdgII)& zTsz*SkQus3A7d`aDe?uo0omH363=e2gd^C5FNuzVsHzS7xq<4KcG^ zbDK+{EDS9wKel-m$aBlJb!)EkS{RwpUVp?@!IwC0cE#jxHc zVdU2Azipk7t1Khcxghl1K+VHu=-}-`c+uM{==LNCjd!X`W4cO~ijv1P!>XZZQDG7} zW*2mfEox8ab<1Mv!e!QYS6K!z1yh+IOv;Ew>|%IR$iQvwW4i5Py{QR)wPHwABt{^b z5;jysg?>$rVFE#)brB}SK6%KW z<6U=~i^4AFR~&;g0XLF}DLM21X~%@BH$af$BuIg0~x@WPIt*n!~EN0MmM!O0hHID}yKlj(a+kL*CVcLE6WN-bKbmw8# zZ0YL5y~jWNH{mq_&VesYfYUD$9>`#hkpU4(?30`f$p vV4oSaPUg27g<+sZ4W)^xIjL)#LObeH+&o8Nxl%(wgf z_UA7wml3t(L2YFChjTxocos)zaVMC55%n?xzmGnDxtA3L<`;WL zNJLf`mvJvAazfjn{3Ag{wyE_@p$h}%yvX#aF!wbLDK9U*OXW*zLcRgHFor_WSOZhi zW9l`7FwT7Cco7R?y1}|ZywGsGM&vmmvzvYtXPkDMwcJu6ewMQ!@)zZ>i+KqMX4)X)7^-ovcEdp!P4HT2<~ME}QuD zL$+Rf*J*9oUo<@yq;C23TBk0tw%@Qr7KC;bu$t3yyl&78?6k64==)w^Ptn)f-S`<< z{iN>jYhQknpa^COFKP0o*nrzq*3e9BYIqAjp#?4*e~Jlt0A@^h1dC~hg<=78YsLdW zfDM3>uVvuQIRqTbh}LX$f;NBwJ$ z4|h71wPF`WrwViR@!|DpMs+Tu`rjF8X@A~Ie)tj2PtSxNuNVKPQ29n&wx7%2d#nrr zuY_Z=>2$y}Tcx~3W&O%lEesy+!svkCty*WAt&s76HNvLfvK`JGD<{KG+-mBYQEM8( zbMi<@>(odV@eG(%7{L;l#r&cs?^noqa$YMCgHWs@PO&cwk#Z;E2m=a;q7t%u3ZL2`3g^&uC4Y8-h`S|m#A)NR5L&^&VoW1xB$w* o&%)CSC8D%KwM-#%JFC9SmdD0ho4y-)>}{n$k^lxWo-Y*t0pZN#c>n+a literal 0 HcmV?d00001 diff --git a/analysis_result/__pycache__/tools_analysis.cpython-311.pyc b/analysis_result/__pycache__/tools_analysis.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d32139d99a91e021b55bba37a257d6aed9c26c0e GIT binary patch literal 3284 zcmb_e>u=Lm6u(ZKXVWH4(g$mSKDKsIA#I`xL|_wTh>hpQ#sqAdqO|c!*EDJEWVD^j zqKQWsl~$&rmTgS##G@Mn1&I$~LhN6ND@%oAeNQKwV+HPKRSs%L4E=x;a7oF`PCmG2ic>_ zIlx^Dmm03e)nJ`M;am(bvEaJ~?(*OiD>)lNS3$j=pI!yb^*m1LJ*Fy&toq*~t4ks) zYgRsKp~}_POqN7e*8FObHN9v|%c^#w&)y%?v1+*Q8PkV#`4SPUWA#@d$Mt-kF#~I0 ziGC7eXg5o;x;|pe$ZA+U+{;)kC#@7B$Qo-b{!a+>LS$Jfa(wUj2doy}81;cA9Bm2z zvkr|&2Ktz=sQuCxh)|43_ERH_Sl;6c^h5%_Fy-wFMMSM{aF7c69VXF2Q%ocf_WJvJ z!d}Ty4*>6=kM@cB<+YBy<`Q)QUpE!-cH|V7Xrifbgbqs1kdCHc5lfe-#;HuQgA~7` zXy#%}P;i4{Jlo!WEHps14|n^5{j&59hI+hViV1ro4At%n`T`?NALErPYY&G)0mhrN zItNF@3S9ki-QnXQx&~6p~VV|$vd!r^O?sWwU0Jcivt&*z-KVb5O1IV_>%kdpK85=H?( z#aS)!Q-?9%Ef3&0b%BY%PcbX;BTM|qB0t5f#80DS5kCPZS2YS8?pKXM4aL|Jq=r?$ z2sx@jm_drGFXHQhC!iG7!A!9?1(Xy~SG)to`(MC9Deo|J8SAfN| ztYNeaG$U&SZqY>MVbO>W>BE~d4{lB^BrY!`etUTD&Vvi%i!-Me?wnhiy8YmXle#ae zzuZGE?a#@~k3U0xIVW&{r{P};#ZN@zH;u-`yo7mt2~Qm=Q9a-r2GJLEl!+v+Uy^Q7 z1)6FEu3^we++t;4Fig=5)f4Uu1-(9+@`(lvFQ{%=HAaFt1Z{&H4D2t$1uPG`8s;># z3$m!g5Ua#jPpXlzJa%ZJas2Rvf7&(K%Ny1ShIP>$_YJ03H$Ty$HTBb7(=@l^;_=za zi(m1zZ9;9^jh=X8{KG`kt;30-Tc7gIF2UKw*LEezs;m}St0#PuHPf9O@zZ9$vWYv$ zSGLS{#);oI#}6eMZy)B{wk3x6w(Y#7E4n*XS@j>#IC|amQ3#lHc=$?BbPrg{>ZiZp zjc-QZNtabb_t3a?Dk3YqYf^)>P9iJ#aI07ZAM7(@YS2lR0KIpt=#aA-4zMf7YMUii z-7kIiX%9`0O8J)hr231vDtn&(3OB_{3Nh9A;JI2;`TK zX#BMNmCVGZ9?r}zByPYlqlSG0g8@o5Wlo<0Q#ZWOi{s~)qGvN_{#d+pWy9j+y-X~g znHXP4L^C(0GN%#?iE~m&=`=Y=8mJG^xL2YLSl|xUp%YEZ!R02Sa`_XD+X6;5)hJAo z#oKet7wn}(jnqNF(SlNBs8)uGR;7!KW^iKVu@b8oDgZ~+E4g=%c%^6z-2u3*a4{T+ zD9Req`o<(#m#SQwMLNw^NyIcMdv(l^s&369l>uxZV!NO}nAkP7_xru)_fPKU%}s*2 ziG%jxjoGR>vomRSrYvjbEe&&)hAVdN^J@dY49tWshxo=#LgS|RkkGh=w|E4LCu#9K zO|NU_jwaW(C-twT^y}yKEpz&oWa}1Q?-BH#r1VRdH6_U=>9s%LP)qHMOcc2OUy-yR z(Z@6WwtY4zdI7`3+R9&{)rf)HCex}^k~OE12ZKv-HfEA5a7ueHkTZY#kE zOp`bcF*Jn)LraQWT4)OiKJ=gzll~Kh!d|PDtyAtj_05bV%RRKS%$qmAeecbi{k?tH z7Z&me#(Vi9TeT4SOK#=|fz4Hz;X5Ea`Z=qgBkZb6(YrU+Xux|9Mh>EPR z?vh?k<9{<`@!1V+^8VCWhY( zqa^dW>&Glij4jp;lZA%sH)7w7n9~g6B;&T*tmRdT$s3%7u^%~Jvk^Jc(YCV#3hM;UtPN$ zY_qja-ED1Y>9m7}6R|LI;*hPmE!Xdc&Ct>LtVKcKht3qe((Wb~WX_Xpqb~yaAr$e5 zl(2e;K`eOkQes%~1;QoO=eREbFysCY*i1PUig(~=#ylXvKOi*1P#<&!0Rj>bLm`Gj zKmuY$P(i>bS%wN+0z~aiL8tqYtO*@O)tbfukx{^B1!)BAvicmI(ZmkwS)Dd-XUU3M zf@)btP*oX`TSZV!d8igM{u8d2FT*%}ad`6LU^w_;IQZrC)ytEo`=i6%;mb$kgI`a+ zx%Y8!J>5CZE6en&FGo+0Hk4iuI@OKx%)Sby>9fb9{)5-Yd!6d#au;T&25as0@x!S{ zZO)_i-yS-(-=C!4eh264GlAcY^8X|%Z^R|_T>j8wB`9bWlF)6p1ESfg6l_E0uVl?8 zpph=j4(Q#QeX-e!7!O$^Y6dOG<;=Bn()>)VX*D0WrWQOWkCcV1g{&f;0kH}*EP+6U zMXVnBF1>^=(IT~ovN%_LSum7Sb)HW_flfgLf)26Sqo5lCgMLL;lQ7S^k)T_ImxR%m zwQ2V0wEL(IQ4&-b&_AH#^ohtQ%n}5ufW$Z82+i%$uKsn>y@S)kpN50yzz^%V+ijm| zDBZmeP#wO+X#eZ+&cpP9D-bC5!u#%;HCizTLNCP_}FqP;WP)Lxu-(boUs zBzZGrJ}~Pj=X%#svBLKur*IJjG7W5DIZJpMx confidence: + + if int(labels_ids_list[i]) in range(len(label_name_list)): + + result_dict = {label_name_list[int(labels_ids_list[i])]:bbox_list[i]} + result_list.append(result_dict) + + + return result_list \ No newline at end of file diff --git a/analysis_result/same_model_img.py b/analysis_result/same_model_img.py new file mode 100644 index 0000000..4ec2766 --- /dev/null +++ b/analysis_result/same_model_img.py @@ -0,0 +1,48 @@ +from analysis_result.tools_analysis import select_bbox_by_labels, iou_result_two + + +def same_model_img_analysis_labels(example_list, result_dicts_list, relevancy, relevancy_para): + ''' + example_list: 需要关联处理的目标标签集合 + result_dicts_list: 当前图片检测结果,格式为[{labels1:result1},{labels2:result2},{labels2:result2}...] + ''' + + # 获得当前结果的标签集 + result_labels_list = [list(re.keys())[0] for re in result_dicts_list] + # print('result_labels_list:',result_labels_list) + + # 判断是否存在example_list中的所有标签 + continue_para = False + compara_labellist = [ + label for label in example_list if label not in result_labels_list] + + if compara_labellist: + return continue_para + + else: + + result_dicts_list_change = select_bbox_by_labels( + example_list, result_dicts_list) + + if relevancy == 'overlap': + + if len(example_list) == 2: + + overlap_list = iou_result_two( + result_dicts_list_change, relevancy_para) + + return overlap_list + + if relevancy == 'in_bbox': + + pass + + +def model_labels_selet(example_list, result_dict_list): + ''' + 直接从result中获得目标列表 + ''' + compara_labellist = [result_dict for result_dict in result_dict_list if list( + result_dict.keys())[0] in example_list] + + return compara_labellist diff --git a/analysis_result/tools_analysis.py b/analysis_result/tools_analysis.py new file mode 100644 index 0000000..7cdcbd1 --- /dev/null +++ b/analysis_result/tools_analysis.py @@ -0,0 +1,74 @@ +def iou_result_two(result_dict_list,iou_para): + + result_0 = list(result_dict_list[0].values())[0] + result_1 = list(result_dict_list[1].values())[0] + label_0 = list(result_dict_list[0].keys())[0] + label_1 = list(result_dict_list[1].keys())[0] + + return_lists = [] + + for re_0 in result_0: + + for re_1 in result_1: + + iou = calculate_iou(re_0, re_1) + + if iou > iou_para: + + label_dict_0 = {label_0: re_0} + label_dict_1 = {label_1: re_1} + + return_lists.append(label_dict_0) + return_lists.append(label_dict_1) + + return return_lists + + +def calculate_iou(box1, box2): + """ + 计算两个边界框之间的IoU值 + + 参数: + box1: 边界框1的坐标(x1, y1, x2, y2) + box2: 边界框2的坐标(x1, y1, x2, y2) + + 返回值: + iou: 两个边界框之间的IoU值 + """ + x1 = max(box1[0], box2[0]) + y1 = max(box1[1], box2[1]) + x2 = min(box1[2], box2[2]) + y2 = min(box1[3], box2[3]) + + # 计算交集区域面积 + intersection_area = max(0, x2 - x1 + 1) * max(0, y2 - y1 + 1) + + # 计算边界框1和边界框2的面积 + box1_area = (box1[2] - box1[0] + 1) * (box1[3] - box1[1] + 1) + box2_area = (box2[2] - box2[0] + 1) * (box2[3] - box2[1] + 1) + + # 计算并集区域面积 + union_area = box1_area + box2_area - intersection_area + + # 计算IoU值 + iou = intersection_area / union_area + + return iou + + +def select_bbox_by_labels(example_list, result_dicts_list): + ''' + 将result列表中的example列表内的bbox挑选出来,放到同一字典下 + ''' + + result_dict_list_change = [] + for label in example_list: + bbox_list = [] + for result in result_dicts_list: + if list(result.keys())[0] == label: + bbox_list.append(list(result.values())[0]) + + result_dict_change = {label: bbox_list} + result_dict_list_change.append(result_dict_change) + + return result_dict_list_change diff --git a/config_det.yaml b/config_det.yaml new file mode 100644 index 0000000..59fd899 --- /dev/null +++ b/config_det.yaml @@ -0,0 +1,32 @@ +# detect_0: +# source : rtsp://admin:@192.168.10.203 +# model: ../config_phone.yaml + +detect_1: + source : rtsp://admin:@192.168.10.203 + model: ../config_phone.yaml + +# detect_2: +# source : E:/Bank_files/Bank_03/dataset/dataset_now/phone/4/images +# model: ../config_sleep.yaml + +# detect_3: +# source : rtsp://admin:@192.168.10.11 +# model: /home/yaxin/xbank/xbank_poc_test/config_sleep.yaml + +# detect_4: +# source : rtsp://admin:@192.168.10.11 +# model: /home/yaxin/xbank/xbank_poc_test/config_phone.yaml + +# detect_5: +# source : rtsp://admin:@192.168.10.18 +# model: /home/yaxin/xbank/xbank_poc_test/config_phone.yaml + +# detect_6: +# source : /home/yaxin/xbank/xbank_poc_test/images_test/images_del +# model: /home/yaxin/xbank/xbank_poc_test/config_phone.yaml + +# detect_7: +# source : /home/xbank/xbank_poc_test_use/images_test/images_del + + diff --git a/config_person.yaml b/config_person.yaml new file mode 100644 index 0000000..e1a91e5 --- /dev/null +++ b/config_person.yaml @@ -0,0 +1,30 @@ +# load model file +model: ./model_file/yolov8_person.onnx +model_cache: ./tensort_cache/yolov8_person.trt + +# label and bbox message set +model_parameter: + device : cpu + label_names: ["person","bicycle","car",motorcycle,airplane,bus,train,truck,boat,traffic light,fire hydrant,stop sign,parking meter,bench,bird,cat, dog,horse,sheep, cow,elephant, bear,zebra,giraffe, backpack,umbrella,handbag,tie,suitcase,frisbee,skis,snowboard,sports ball,kite,baseball bat,baseball glove,skateboard,surfboard,tennis racket, bottle, wine glass,cup,fork,knife,spoon, bowl,banana,apple,sandwich,orange,broccoli,carrot,hot dog, pizza,donut,cake,chair,couch,potted plant,bed,dining table,toilet,tv,laptop,mouse,remote,keyboard,cell phone,microwave, oven,toaster,sink,refrigerator,book,clock,vase,scissors,teddy bear,hair drier,toothbrush] # model labels + # label_names: ["person"] + compara_label_names: ["person"] # + compara_relevancy: False # 'object_num' + relevancy_para : False + object_num_min : False # 视频中最低人数 + confidence : 0.2 + + +save_path_original : False +test_path : False +save_annotations : False +save_path : False + +# save videos +save_videos : False + +# detect time set +detect_time : 30 +detect_time_small : 10 +detect_ratio : 0.5 + + diff --git a/config_phone.yaml b/config_phone.yaml new file mode 100644 index 0000000..006ee04 --- /dev/null +++ b/config_phone.yaml @@ -0,0 +1,30 @@ +# load model file +model: E:/Bank_files/Bank_03/xbank_poc_test_use/model_file/yolov5_4best.onnx +model_cache: E:/Bank_files/Bank_03/xbank_poc_test_use/tensort_cache/yolov5_4best.trt + +# label and bbox message set +model_parameter: + device : cpu + label_names: ["Keypad","hands","keyboard", "mouse","phone"] # model labels + compara_label_names: ["hands","phone"] # + compara_relevancy: overlap # 'in_bbox','overlap' + relevancy_para : 0.01 + object_num_min : False + confidence : 0.2 + +save_path : False +test_path : False +save_path_original : False +save_annotations : False + + +# save videos +save_videos : E:/Bank_files/Bank_03/xbank_poc_test_use/video_save_path/sleep + +# detect time set +detect_time : 30 +detect_time_small : 10 +detect_ratio : 0.5 + + + diff --git a/config_sleep.yaml b/config_sleep.yaml new file mode 100644 index 0000000..e490cc3 --- /dev/null +++ b/config_sleep.yaml @@ -0,0 +1,29 @@ +# load model file +model: ./model_file/yolov5_640_sleep.onnx +model_cache: ./tensort_cache/yolov5_640_sleep.trt + +# label and bbox message set +model_parameter: + device : cpu + label_names: ["person","sleep"] # model labels + compara_label_names: ["sleep","person"] # + compara_relevancy: False # 'in_bbox' + relevancy_para : False + object_num_min : False + confidence : 0.2 + + +save_path_original : False +test_path : False +save_annotations : False +save_path : False + +# save videos +save_videos : ./video_save_path/sleep + +# detect time set +detect_time : 30 +detect_time_small : 10 +detect_ratio : 0.5 + + diff --git a/create_xml.py b/create_xml.py new file mode 100644 index 0000000..873b424 --- /dev/null +++ b/create_xml.py @@ -0,0 +1,53 @@ + +from lxml.etree import Element, SubElement, tostring + + +def create_xml(boxs, img_shape, xml_path): + """ + 创建xml文件,依次写入xml文件必备关键字 + :param boxs: txt文件中的box + :param img_shape: 图片信息,xml中需要写入WHC + :return: + """ + node_root = Element('annotation') + node_folder = SubElement(node_root, 'folder') + node_folder.text = 'Images' + node_filename = SubElement(node_root, 'filename') + node_filename.text = str(img_shape[3]) + node_size = SubElement(node_root, 'size') + node_width = SubElement(node_size, 'width') + node_width.text = str(img_shape[1]) + node_height = SubElement(node_size, 'height') + node_height.text = str(img_shape[0]) + node_depth = SubElement(node_size, 'depth') + node_depth.text = str(img_shape[2]) + + if len(boxs) >= 1: # 循环写入box + for box in boxs: + node_object = SubElement(node_root, 'object') + node_name = SubElement(node_object, 'name') + # if str(list_[4]) == "person": # 根据条件筛选需要标注的标签,例如这里只标记person这类,不符合则直接跳过 + # node_name.text = str(list_[4]) + # else: + # continue + node_name.text = str(list(box.keys())[0]) + node_difficult = SubElement(node_object, 'difficult') + node_difficult.text = '0' + node_bndbox = SubElement(node_object, 'bndbox') + node_xmin = SubElement(node_bndbox, 'xmin') + node_xmin.text = str(int(list(box.values())[0][0])) + node_ymin = SubElement(node_bndbox, 'ymin') + node_ymin.text = str(int(list(box.values())[0][1])) + node_xmax = SubElement(node_bndbox, 'xmax') + node_xmax.text = str(int(list(box.values())[0][2])) + node_ymax = SubElement(node_bndbox, 'ymax') + node_ymax.text = str(int(list(box.values())[0][3])) + + xml = tostring(node_root, pretty_print=True) # 格式化显示,该换行的换行 + + # file_name = img_shape[3].split(".")[0] + # filename = xml_path+"/{}.xml".format(file_name) + + f = open(xml_path, "wb") + f.write(xml) + f.close() diff --git a/drawing_img/__pycache__/drawing_img.cpython-310.pyc b/drawing_img/__pycache__/drawing_img.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c47114b341b2febf883fbe63b7b36de1f2d2b22f GIT binary patch literal 979 zcmZuw&2AGh5VpPlo3<(vqAf_M;uZ--G~6o0Uujh&D2Vm|q1Cdy;Z-7vrfd}xF-#h{cDU7{o$pNqY`J2x(fZioR+ET$I&!_kD`XjQ`x zm@t0cS!?(OH8=&R-)#jZ{|q4U1GH1`V*%_4AEN=BxPbb;vB|j|2ulV7jFI$MS>l9% zPbh5ZgTFP0fQ17*hx(=5F4TTWI7hBT!jpl{IKYP4n(Y$9opaSKRB20c>|g|uzC^P0 zFE;V!i%ce7Tad$f9Y|L?(mM7qdP5|FPWjzeP*k`GgHhhiM3kfr!J{nYVtMiV(doC- z4_`lidigGk>ons_%Z1lc|N2;|j+N?vluD(tQ>50-S0&zPL%7MUNE9)1Jp{IxhN13r zIaIbjTiJW`fGc-D&bpKK1yaM3Q%#vB`6Px(>60BE= zi^(X2X=8gdZ!7{V#O}zp*cAvVyQb;p4wz2FTn!$;TA8p5+R%RHiDnO}ba$h7$P literal 0 HcmV?d00001 diff --git a/drawing_img/__pycache__/drawing_img.cpython-38.pyc b/drawing_img/__pycache__/drawing_img.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7cc8e32b7fe2766e1124ff4b06063baa49aefba7 GIT binary patch literal 967 zcmZuw%We}f6t(A_$pjS%wdEny6;dRWs#zdWAwVjviUb9NoHK-tx>Rz@}VJLYoC1`S{#p-)rCN@v~aZN6>Eg0bQ{W`l^lT=74b@ zI-doIQH)d6La`rvapePU;TUhBdUXVIXk%mojxfNn$@Ead=yXc3wW{GKbZEcstwr9L zmRJMS=UIWyzW_)yKtt5`Bz}N)PWo72i3i3I9l_3*QNL2!=9%qFmu*TM8!%TDmaM=! za}EKk9^pCE4>E78_5)!L9O(&H`a04PE}5m-u2FLPOm)Vpw4^b#F#=CddNMfojoo>4 z?yoI~VZW(JN7~XHx){9;qz9GqidT@7zW|LGR9? zY1pPIUs@ioTI%1ND9wq|{EyOTG)8cv6VpxE3e0ZDW+kh>s;X8K;&p zU)sR1g+Kw#G1)cntUG1d%UfVNAk$Baxd3Z*gI&~yURNG{3a)~tygS`IE>e0|-z>iX L;MoYDeZT(#S6}tk literal 0 HcmV?d00001 diff --git a/drawing_img/drawing_img.py b/drawing_img/drawing_img.py new file mode 100644 index 0000000..c0f3040 --- /dev/null +++ b/drawing_img/drawing_img.py @@ -0,0 +1,36 @@ +import cv2 + + +def drawing_frame(images_frame, + result_list, + line_1=3, + line_2=1, + color_1=(0, 0, 255), + color_2=(0, 255, 255), + txt_num=0.75, + scores_list_id=False): + ''' + result_dicts_list: 格式为[{labels1:result1},{labels2:result2},{labels2:result2}...] + ''' + + # img = images_frame.copy() + + for result_list in result_list: + + label_name = list(result_list.keys())[0] + bbox_list = list(result_list.values())[0] + + print(bbox_list) + + if scores_list_id: + scores_list = result_list['scores_list'] + lables = str(label_name) + "__" + str(scores_list) + else: + lables = str(label_name) + + cv2.rectangle(images_frame, (int(bbox_list[0]), int(bbox_list[1])), (int( + bbox_list[2]), int(bbox_list[3])), color_1, line_1) + cv2.putText(images_frame, lables, (int(bbox_list[0]) - 10, int( + bbox_list[1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, txt_num, color_2, line_2) + + return images_frame diff --git a/main.py b/main.py new file mode 100644 index 0000000..dfb7739 --- /dev/null +++ b/main.py @@ -0,0 +1,61 @@ +#coding: utf-8 +from main_process import data_load +from analysis_data.config_load import get_configs +from multiprocessing import Pool +from loguru import logger +import os + +# 日志配置 +log_path = os.path.join(__file__, "../logs/xbank.log") +logger.add( + log_path, rotation="60 MB", enqueue=True, backtrace=True, diagnose=True, retention=30 +) +logger.info("*************************** xbank start ***************************") + + +def get_args_list(args_data): + + args_list = [] + + for args in args_data: + + args_det = args_data[args] + det_config = args_det['model'] + det_source = args_det['source'] + det_list = [det_source, det_config] + args_list.append(det_list) + + return args_list + +def start_worker(args_list_n): + while True: + try: + logger.info(f" process {args_list_n} crashed. Starting...") + + data_load(args_list_n) + + except Exception as e: + + logger.info(f" process {args_list_n} crashed. Restarting...") + logger.debug(e) + + +def main(): + + # 加载配置文件 + args = '../config_det.yaml' + args_data = get_configs(ymal_files=args) + args_list = get_args_list(args_data) + + process_num = len(args_list) + + with Pool(process_num) as pool: + pool.map(start_worker, args_list) + + +if __name__ == "__main__": + + main() + + + diff --git a/main_process.py b/main_process.py new file mode 100644 index 0000000..6ef1673 --- /dev/null +++ b/main_process.py @@ -0,0 +1,536 @@ +from analysis_result.get_model_result import det_img +from analysis_result.same_model_img import same_model_img_analysis_labels, model_labels_selet +from model_load.model_load import Load_model +from drawing_img.drawing_img import drawing_frame +from analysis_data.data_rtsp import rtsp_para +from analysis_data.data_dir_file import get_dir_file +from analysis_data.config_load import get_configs +from add_xml import add_xml +from create_xml import create_xml +from analysis_data.change_video import mp4_to_H264 + +import cv2 +import os +import time +from datetime import datetime +import json +from loguru import logger + +import logging +import logstash + +host = '192.168.10.96' + +xbank_logger = logging.getLogger('python-logstash-logger') +xbank_logger.setLevel(logging.INFO) +xbank_logger.addHandler(logstash.LogstashHandler(host, 5959, version=1)) + + +def data_load(args): + + source = args[0] + model_ymal = args[1] + + # 数据加载 + rtsp_source = rtsp_para(source) + dir_source = os.path.isdir(source) + file_source = os.path.isfile(source) + + # # 模型加载 + model_data = get_configs(model_ymal) + model_inference = Load_model(model_file=model_data["model"], + device=model_data["model_parameter"]['device'], + cache_file=model_data["model_cache"]) + + if rtsp_source: + + rtsp_detect_process(source=source, model_data=model_data, + model_inference=model_inference) + + if dir_source: + dir_source_process(source, model_inference, model_data) + + if file_source: + + file_source_process(source, model_inference, model_data) + + +def rtsp_detect_process(source, model_data, model_inference): + + cap = cv2.VideoCapture(source) + logger.info(f"视频流{source}读取中...") + + # 视频流信息 + fps = int(cap.get(cv2.CAP_PROP_FPS)) + fps_num = fps*model_data['detect_time'] + fps_num_small = fps*model_data['detect_time_small'] + size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + + i = 0 + j = 0 + n = 0 + + det_t_num = 0 + nodet_t_num = 0 + + det_img = [] + + video_name_time = 0 + det_fps_time = [] + + while True: + + try: + ret, frame = cap.read() + + i += 1 + j += 1 + + # 读取到当前视频帧时间 + data_now = datetime.now() + get_time = str(data_now.strftime("%H")) + \ + str(data_now.strftime("%M")) + str(data_now.strftime("%S")) + \ + str(data_now.strftime("%f")) + + imgframe_dict = {"path": source, 'frame': frame, + 'get_fps': j, 'get_time': get_time} + + # 视频暂时保存路径 + if video_name_time == 0: + + video_name_time = get_time + video_path = video_name( + video_name_base=video_name_time, save_path=model_data['save_videos'], save_file='temp') + + out_video = cv2.VideoWriter( + video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, size) + + logger.info(f"视频{video_path}已经暂时保存...") + + # 模型推理 + images_det_result = img_process( + imgframe_dict, model_inference, model_data) + + images_update = save_process( + imgframe_dict, images_det_result, model_data) + + # 结果判断,t + if images_det_result: + + det_t_num += 1 + + if len(det_img) == 0: + img_dict = images_update.copy() + det_img.append(img_dict) + + if not images_det_result and len(det_img) > 0: + + nodet_t_num += 1 + + if (det_t_num + nodet_t_num) >= fps_num_small: + + para = determine_time( + det_num=det_t_num, nodet_num=nodet_t_num, ratio_set=model_data['detect_ratio']) + + if para: + + first_fps_time = det_img[0] + first_fps_time.update( + {"dert_fps": (j-int(first_fps_time['get_fps'])+1)}) + + det_fps_time.append(first_fps_time) + + det_img.clear() + det_t_num = 0 + nodet_t_num = 0 + + # 视频保存 + out_video.write(images_update['frame']) + + # 结果判断 ,T + if j >= fps_num: + + try: + out_video.release() + + except Exception: + logger.exception(f"视频release失败") + else: + logger.info("视频release成功") + + # T时间截至,判断t时间结果。 + if det_img: + + para = determine_time( + det_num=det_t_num, nodet_num=nodet_t_num, ratio_set=model_data['detect_ratio']) + + first_fps_time = det_img[0] + time_1 = (j-int(first_fps_time['get_fps'])+1) + + if para and time_1 >= (fps_num_small/2): + + first_fps_time.update( + {"dert_fps": (j-int(first_fps_time['get_fps'])+1)}) + det_fps_time.append(first_fps_time) + + if det_fps_time: + + det_fps_time = determine_duration(result_list=det_fps_time) + + # 转换后视频保存路径 + save_video_name = os.path.basename(video_path) + only_video_name = save_video_name.split('.')[0] + save_video_path = os.path.join(model_data['save_videos'], (str(data_now.strftime( + "%Y")) + str(data_now.strftime("%m")) + str(data_now.strftime("%d")))) + save_video_path = os.path.join( + save_video_path, only_video_name) + + # 路径 + save_video = os.path.join(save_video_path, save_video_name) + json_path = os.path.join( + save_video_path, only_video_name + '.json') + images_path = os.path.join(save_video_path, 'images') + + # 转换视频、保存视频 + change_video = mp4_to_H264() + change_video.convert_byfile(video_path, save_video) + + # 保存图片 + update_det_fps = video_cut_images_save( + det_list=det_fps_time, images_path=images_path) + + # print(update_det_fps) + + # 保存json文件 + re_list, result_lables = json_get( + time_list=update_det_fps, video_path=save_video, fps=fps) + result_path = json_save(re_list, json_path) + + # send_message(update_det_fps=update_det_fps, result_path=result_path, + # source=source, result_lables=result_lables) + + else: + # print(video_path) + os.remove(video_path) + logger.info(f"未检测到目标信息的视频{video_path}删除成功") + + logger.info('开始信息重置') + det_img.clear() + det_fps_time.clear() + det_t_num = 0 + nodet_t_num = 0 + video_name_time = 0 + j = 0 + + # print('det_fps_time:', det_fps_time,'det_img:',det_img) + + # t2 = time.time() + # tx = t2 - t1 + # logger.info(f'检测一张图片的时间为:{tx}.') + except Exception as e: + + logger.debug(f"读帧率失败{source}未读到...") + logger.debug(e) + cap.release() + cap = cv2.VideoCapture(source) + logger.info(f"摄像头{source}重新读取") + + # break + + +def video_name(video_name_base, save_path, save_file): + + video_name_base = video_name_base + + savePath = os.path.join(save_path, save_file) + + if not os.path.exists(savePath): + os.makedirs(savePath) + + video_path = os.path.join( + savePath, video_name_base + '.mp4') + + return video_path + + +def dir_source_process(source, model_inference, model_data): + + img_ext = [".jpg", ".JPG", ".bmp"] + video_ext = [".mp4", ".avi", ".MP4"] + + img_list = get_dir_file(source, img_ext) + video_list = get_dir_file(source, video_ext) + + if img_list: + + for img in img_list: + + t1 = time.time() + images = cv2.imread(img) + + imgframe_dict = {"path": img, 'frame': images} + + images_update = img_process( + imgframe_dict, model_inference, model_data) + + t2 = time.time() + tx = t2 - t1 + print('检测一张图片的时间为:', tx) + + if video_list: + + pass + + +def file_source_process(source, model_inference, model_data): + + img_para = True + + if img_para: + images = cv2.imread(source) + imgframe_dict = {"path": source, 'frame': images} + + images_update = img_process( + imgframe_dict, model_inference, model_data) + + +def img_process(images, model_inference, model_data): + + # t1 = time.time() + # 检测每帧图片,返回推理结果 + results = det_img(model_inference=model_inference, + images_frame=images['frame'], + confidence=model_data["model_parameter"]['confidence'], + label_name_list=model_data["model_parameter"]['label_names']) + + # print(results) + + # print(images['path']) + + # 根据需要挑选标注框信息 + select_labels_list = model_labels_selet(example_list=model_data["model_parameter"]['compara_label_names'], + result_dict_list=results) + + if model_data["model_parameter"]['compara_relevancy']: + + # 需要根据的逻辑判断标注框信息 + determine_bbox = same_model_img_analysis_labels(example_list=model_data["model_parameter"]['compara_label_names'], + result_dicts_list=select_labels_list, + relevancy=model_data["model_parameter"]['compara_relevancy'], + relevancy_para=model_data["model_parameter"]['relevancy_para']) + else: + + determine_bbox = select_labels_list + + # print(determine_bbox) + + if model_data['model_parameter']['object_num_min']: + if len(determine_bbox) >= model_data["model_parameter"]['object_num_min']: + + determine_bbox.clear() + + # logger.debug(f"正确获得检测后的信息{determine_bbox}...") + + # 返回检测后结果 + return determine_bbox + + +def save_process(images, determine_bbox, model_data): + + if determine_bbox: + + images.update({"results": determine_bbox}) + + if model_data['save_path_original']: + imgname_original = images_save(images=images, + save_path=model_data["save_path_original"]) + + img_save = drawing_frame( + images_frame=images['frame'], result_list=determine_bbox) + + images.update({"img_save": img_save}) + + if model_data["save_path"]: + + imgname = images_save( + images=images, save_path=model_data["save_path"]) + + if model_data["save_annotations"]: + + if not os.path.exists(model_data["save_annotations"]): + + os.makedirs(model_data["save_annotations"]) + save_annotations_xml( + xml_save_file=model_data["save_annotations"], save_infors=determine_bbox, images=images['path']) + + else: + pass + + else: + # 没检测出来的图片是否保存 + if model_data["test_path"]: + imgname = images_save( + images=images, save_path=model_data["test_path"]) + # print('no:',images['path'],imgname) + + # 展示显示 + # if images['path'] == 'rtsp://admin:@192.168.10.11': + # cv2.namedWindow('11', cv2.WINDOW_NORMAL) + # cv2.imshow('11',images['frame']) + # cv2.waitKey(1) + # cv2.destroyAllWindows() + + # t2 = time.time() + + return images + + +def images_save(images, save_path): + + # 保存时候时间为图片名 + images_name = images['get_time'] + '.jpg' + + if not os.path.exists(save_path): + os.makedirs(save_path) + + full_name = os.path.join(save_path, images_name) + + cv2.imwrite(full_name, images['img_save']) + + return full_name + + +def save_annotations_xml(xml_save_file, save_infors, images): + + results = save_infors + img = os.path.basename(images) + img_frame = cv2.imread(images) + xml_save_path = os.path.join(xml_save_file, img.split('.')[0] + '.xml') + w, h, d = img_frame.shape + img_shape = (w, h, d, img) + + if os.path.isfile(xml_save_path): + + add_xml(inforsDict=results, + xmlFilePath=xml_save_path) + else: + create_xml(boxs=results, + img_shape=img_shape, + xml_path=xml_save_path) + + +def determine_time(det_num, nodet_num, ratio_set): + + ratio = det_num / (det_num + nodet_num) + + if ratio >= ratio_set: + return True + else: + return False + + +def determine_duration(result_list): + i = 0 + + while i < len(result_list) - 1: + dict_i = result_list[i] + dict_j = result_list[i + 1] + + if 'get_fps' in dict_i and 'dert_fps' in dict_i and 'get_fps' in dict_j: + num_i = int(dict_i['get_fps']) + dura_i = int(dict_i['dert_fps']) + num_j = int(dict_j['get_fps']) + + if num_i + dura_i == num_j: + dura_j = int(dict_j['dert_fps']) + dura_update = dura_i + dura_j + + dict_i['dert_fps'] = dura_update + result_list.pop(i + 1) + else: + i += 1 + else: + i += 1 + + return result_list + + # print('2:', result_list) + + +def json_get(time_list, video_path, fps): + + result_dict = {'info': {'video_path': video_path, 'fps': fps}} + re_dict = {} + for i, det_dict in enumerate(time_list): + + list_hands = ["Keypad", "hands", "keyboard", "mouse", "phone"] + list_sleep = ["sleep"] + list_person = ["person"] + + if list(det_dict['results'][0].keys())[0] in list_hands: + + result_lables = 'playing_phone' + + if list(det_dict['results'][0].keys())[0] in list_sleep: + + result_lables = "sleep" + + if list(det_dict['results'][0].keys())[0] in list_person: + + result_lables = "person" + + fps_dict = {'time': det_dict['get_fps'], + 'duration': det_dict['dert_fps'], + 'images_path': det_dict['images_path']} + + re_dict.update({('id_' + str(i)): fps_dict}) + + result_dict.update({'result': re_dict}) + + return result_dict, result_lables + + +def json_save(result_dict, json_path): + + result = json.dumps(result_dict) + + f = open(json_path, 'w') + f.write(result + '\n') + f.close + + return json_path + + +def video_cut_images_save(det_list, images_path): + + for det_dict in det_list: + + images_path_full = images_save(images=det_dict, save_path=images_path) + + del det_dict['frame'] + del det_dict['get_time'] + det_dict.update({'images_path': images_path_full}) + + return det_list + + +def send_message(update_det_fps, result_path, source, result_lables): + + for det_dict in update_det_fps: + + extra = { + 'worker': 'xbank', + 'time': det_dict['get_fps'], + 'config_file': result_path, + 'source': source, + 'type': result_lables + } + + xbank_logger.info('xBank_infer', extra=extra) + logger.info(f'发送信息{extra}') + +# if __name__ == '__main__': + +# data_load(['rtsp://admin:@192.168.10.203', +# 'E:/Bank_files/Bank_03/xbank_poc_test_use/config_phone.yaml']) diff --git a/model_load/__pycache__/model_load.cpython-310.pyc b/model_load/__pycache__/model_load.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2c599859a92571ca520874a7e5cb223648a08a3 GIT binary patch literal 1054 zcmZWo&1=*^6rah*BwbrYDTudHJeW%ni%^P4wFfW7mVO)zg^Nc`dqz`Cx*HeWWEDf~CHVZo$ z1(BjAZlQ*nsZFJYFv?W;64w}nN@K<9JbK;v{AsZkrhb+6j$ZUyPx}uZ_gf#20hHB! zk9}|N_da~-yxW;wSQ(4>*qw!yV?f#UHdsifmsyxZd~vzce${>XOhzp=S1QyV8Kj?& zQ$GrAqn0qoi))salOlU=43gv}&-K=rQ}F|4lStwZ5GQcqpSRfb>TNgNkin!duTHLR zmW3~lJSSyI>Ok(*YD8J!1d&Tmm=p0*)*bMaom8MLVYcHcbg@9aT~ zyUli|{T%$`6Hyp$j?0w)^%NT3-93oYN=d|7Z-EI1rs*eih`(q-NN}< zUX09u%t2(z8p@R@&dsu$u+XitTu5ZtUmCHyj=WK`MCn-hZV+I=s`8Uq(Zjqn2czJ~&_y^W;~+*2MI)H} z(iBsH_Df3}GJpKBHGUpomSLAFZjw?K2hmpX0wYQ$VmDpOH6i&KfEDi(ADpNyW{b-U Xm^Yw!EnqhVwTT!s6Afci9lr1z3AQVC literal 0 HcmV?d00001 diff --git a/model_load/__pycache__/model_load.cpython-311.pyc b/model_load/__pycache__/model_load.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b003dbbda9932627790f71d2427fadabcce7b15 GIT binary patch literal 2113 zcmb7F|4SQZ7=JH!$z3w@I@e$N)1LS4lA38*_j32V?>+D5 z`SLz_K5xEvyIlx|ee5{yv?KI8`KSz=wb(lji?5M@1S)|BDPy*c(}N6!1luecvW|TuEt$xgyn90w@uPyQjM3_P4OHtDHA>SOy;6x^)sjUmjzXGEqerXJ zB1{FWp%pmK!BJ~3P-8|Exe?+y4x$m9a1C-?ujUC6sh9FhTb@t(Rmv&Y^+s%BsyZTcFAmE934F9=t zXXl4sO5e@Bd+|z8l7r_iUa0_vqOmb73U6G-q9VzcE|)gG+WztjV^^oICQ~vgp-!u^ zdi_KN6SRziGQO6I%QzSphp~*s7!FEe&Rab!52z`8vleT-!j3u)+HVnpy(>=2_n%t$(GsdQH?8XK|f9j0G} z^bD!hv)-N&X&m=V4n@T=Q$~_fETUpXjezf-aY?|5NJ5GV`yXD+aJS{$fr2}bIa_30bNw^@ImTaL{8`3deCYQ(mmBkJdzNi4a-K!cf@kSkj%zM(%~`Iw$a?0|GwGW*W^XJX%d>$j8z_1k7qtcL z38H+izlkWi>;IxDUqcx_Oi}codqOm1+th4vo=vVj&$Z{cV1Wx}xnS`XKJ)$_B#mnL zOU`2O_Z?uti}|L`1 zKe?0)Sc5;Mg_WJhkGJowmhRsAOn& zB#M(AhRc7^8MwZE>%K`=Dq>JoCS?lIvIi#FON0-E?wFDi(!{9{rF&%awx|%#+&L3+ z>NY8jDrmVr7x-?hny^L+T8lH*Sn_>&LcF7T%_=bv(@sRIbKoO;+&rm3brU{O;a(4?s^)4$bp zG&8Wp@=G7)*|sd(_M5N%wzJ@Sb<@|K_jMQRnpUREG~!620oM-^4T$%Hgz7MPWka5Acn=nRo^3&70slY`$! zhMiHBXWW}mkyHY|C3nLX`TJ7d0|6(bs3JO&tvp5K&(=O=hnK1^qpIj^rCQ7ApfG~{ E1N=JyP5=M^ literal 0 HcmV?d00001 diff --git a/model_load/__pycache__/model_load.cpython-38.pyc b/model_load/__pycache__/model_load.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9900bbf51864378f1faa3e7c342dab6dbace4be2 GIT binary patch literal 1279 zcmZWp&2Q936rT@!>}*Mp5E5z+)e2P=d)bIX1VRXb5cGlwqNGxNu^i8YIPrSS*bW4F zr3#Q}OVd_DT&P;Dr5?(q_m@MdNM0mhp5=6%1J`Hh!mXFCXnyZ)v4 z!bRx07WNMU!daNbF(4dqoT305P6jk^Fye&MdnjB@h;m^hz(Cc}nFqCU)smj~O_k6n3 zpso@(szixylC20OvRHIw*0m*djec*YB`Z9boi@0bmx;^*uPQ_s=T*>wtf92Zxk9KU zN|W0nTuD;Vx~aS=l=X!++PQNDcIQJ+NFQDW7%?utLRW zKoIk>{tn;{Ooqv8Jssj>^$A$tLyHFr9ca+93JZ;v8Z~%CIBqZ}p8|49T4PRY!ksNT zbgrYJTT|`=LN1ohn!Co;_w#VDQfc|J-X4$QyCglfE0~}5s zJTaCQhXzJUKe--N44Bf#pnMQk-Gt7aird(gVQ#dPZ$ zg~5#_`oGe4E&(_~V>$w|`HLX$utP9G@V#b4U%#&u9Rxz|HPb2kh%WV_2Cs{L|1vm5MX^ofi6J0fp2*^adB#ZFT?v literal 0 HcmV?d00001 diff --git a/model_load/model_load.py b/model_load/model_load.py new file mode 100644 index 0000000..565cf05 --- /dev/null +++ b/model_load/model_load.py @@ -0,0 +1,50 @@ +import fastdeploy as fd +import os.path as op + + +def build_option(device, backend, cache_file): + """ + 创建Runtime运行选项 + device:设备CPU or GPU + backend:TensorRT引擎 + """ + option = fd.RuntimeOption() + option.use_cpu() + option.trt_option.serialize_file = cache_file + if device.lower() == "gpu": + option.use_gpu(0) + if backend.lower() == "trt": + assert device.lower( + ) == "gpu", "TensorRT backend require inference on device GPU." + option.use_trt_backend() + return option + + +def Load_model(model_file, device, cache_file): + """ + 加载模型的tensorRT引擎 + model_file:模型权重 格式:".onnx" + device:设备选择 + """ + + model_name = op.basename(model_file).split('_')[0] + + # print(model_file) + + runtime_option = build_option( + device=device, backend="trt", cache_file=cache_file) + model_inference = [] + + if model_name == "yolov5": + model = fd.vision.detection.YOLOv5( + model_file, runtime_option=runtime_option) + model_inference = model + + elif model_name == "yolov8": + model = fd.vision.detection.YOLOv8( + model_file, runtime_option=runtime_option) + model_inference = model + + + # print(model_inference) + return model_inference