From 8a14b3bd95559f2c69f9154dbda6479463271b6d Mon Sep 17 00:00:00 2001 From: th Date: Wed, 25 Jun 2025 16:01:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=88=86zhi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tet | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tet diff --git a/tet b/tet new file mode 100644 index 0000000..e69de29 -- 2.25.1 From 19c51b70be9580dacb613682bf2b6e0a0aed8e87 Mon Sep 17 00:00:00 2001 From: th Date: Wed, 25 Jun 2025 16:04:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E7=E4=B8=AA=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=EF=BC=8C=E4=BC=98=E5=8C=96=E4=B8=A4=E4=B8=AA=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/__pycache__/Constant.cpython-38.pyc | Bin 3182 -> 3183 bytes common/__pycache__/YmlConstant.cpython-38.pyc | Bin 461 -> 462 bytes common/__pycache__/__init__.cpython-38.pyc | Bin 139 -> 140 bytes concurrency/FileUploadThread.py | 35 +- concurrency/PushVideoStreamProcess.py | 29 +- .../__pycache__/CommonThread.cpython-38.pyc | Bin 1101 -> 1102 bytes .../__pycache__/FeedbackThread.cpython-38.pyc | Bin 2131 -> 2132 bytes .../FileUploadThread.cpython-38.pyc | Bin 9184 -> 9478 bytes .../HeartbeatThread.cpython-38.pyc | Bin 2342 -> 2343 bytes ...telligentRecognitionProcess.cpython-38.pyc | Bin 37596 -> 37597 bytes ...elligentRecognitionProcess2.cpython-38.pyc | Bin 29259 -> 29260 bytes .../Pull2PushStreamProcess.cpython-38.pyc | Bin 5506 -> 5507 bytes .../Pull2PushStreamThread.cpython-38.pyc | Bin 2126 -> 2127 bytes .../__pycache__/PullMqttThread.cpython-38.pyc | Bin 4572 -> 4573 bytes .../PullStreamThread.cpython-38.pyc | Bin 5582 -> 5583 bytes .../PullVideoStreamProcess.cpython-38.pyc | Bin 10595 -> 10596 bytes .../PullVideoStreamProcess2.cpython-38.pyc | Bin 10071 -> 10072 bytes .../PushVideoStreamProcess.cpython-38.pyc | Bin 12343 -> 12638 bytes .../PushVideoStreamProcess2.cpython-38.pyc | Bin 8795 -> 8796 bytes .../RecordingHeartbeatThread.cpython-38.pyc | Bin 1916 -> 1917 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 144 -> 145 bytes .../__pycache__/uploadGPU.cpython-38.pyc | Bin 3542 -> 3543 bytes config/minio/dsp_test_minio.yml | 7 +- config/service/dsp_test_service.yml | 4 +- entity/__pycache__/FeedBack.cpython-38.pyc | Bin 1409 -> 1410 bytes entity/__pycache__/__init__.cpython-38.pyc | Bin 139 -> 140 bytes enums/ModelTypeEnum-jcq.py | 768 +++++++++++++++++ enums/ModelTypeEnum-raw.py | 807 ++++++++++++++++++ enums/ModelTypeEnum.py | 316 +++++-- .../AnalysisStatusEnum.cpython-38.pyc | Bin 483 -> 484 bytes .../AnalysisTypeEnum.cpython-38.pyc | Bin 460 -> 461 bytes enums/__pycache__/BaiduSdkEnum.cpython-38.pyc | Bin 7558 -> 7559 bytes .../__pycache__/ExceptionEnum.cpython-38.pyc | Bin 3517 -> 3518 bytes .../__pycache__/ModelTypeEnum.cpython-38.pyc | Bin 17040 -> 21026 bytes .../__pycache__/ModelTypeEnum2.cpython-38.pyc | Bin 16481 -> 16482 bytes .../RecordingStatusEnum.cpython-38.pyc | Bin 645 -> 646 bytes enums/__pycache__/StatusEnum.cpython-38.pyc | Bin 916 -> 917 bytes enums/__pycache__/__init__.cpython-38.pyc | Bin 138 -> 139 bytes .../CustomerException.cpython-38.pyc | Bin 760 -> 761 bytes exception/__pycache__/__init__.cpython-38.pyc | Bin 142 -> 143 bytes readme.md | 5 - service/Dispatcher-raw.py | 507 +++++++++++ service/Dispatcher.py | 133 ++- service/__pycache__/Dispatcher.cpython-38.pyc | Bin 18245 -> 18683 bytes service/__pycache__/__init__.cpython-38.pyc | Bin 140 -> 141 bytes util/Cv2Utils.py | 8 +- util/MinioSdk.py | 4 +- util/ModelUtils.py | 52 +- util/__pycache__/AliyunSdk.cpython-38.pyc | Bin 5692 -> 5693 bytes util/__pycache__/CpuUtils.cpython-38.pyc | Bin 3882 -> 3883 bytes util/__pycache__/Cv2Utils.cpython-38.pyc | Bin 26002 -> 26005 bytes util/__pycache__/FileUtils.cpython-38.pyc | Bin 494 -> 495 bytes util/__pycache__/GPUtils.cpython-38.pyc | Bin 3390 -> 3391 bytes util/__pycache__/ImageUtils.cpython-38.pyc | Bin 8331 -> 8332 bytes util/__pycache__/ImgBaiduSdk.cpython-38.pyc | Bin 6530 -> 6531 bytes util/__pycache__/KafkaUtils.cpython-38.pyc | Bin 6022 -> 6023 bytes util/__pycache__/LocationUtils.cpython-38.pyc | Bin 5203 -> 5204 bytes util/__pycache__/LogUtils.cpython-38.pyc | Bin 945 -> 946 bytes util/__pycache__/MinioSdk.cpython-38.pyc | Bin 3702 -> 3673 bytes util/__pycache__/ModelUtils.cpython-38.pyc | Bin 23165 -> 24917 bytes util/__pycache__/ModelUtils2.cpython-38.pyc | Bin 16040 -> 16041 bytes util/__pycache__/OcrBaiduSdk.cpython-38.pyc | Bin 3517 -> 3518 bytes util/__pycache__/PlotsUtils.cpython-38.pyc | Bin 5571 -> 5572 bytes .../PushStreamUtils.cpython-38.pyc | Bin 2758 -> 2759 bytes util/__pycache__/QueUtil.cpython-38.pyc | Bin 1483 -> 1484 bytes util/__pycache__/RWUtils.cpython-38.pyc | Bin 732 -> 733 bytes util/__pycache__/TimeUtils.cpython-38.pyc | Bin 596 -> 597 bytes util/__pycache__/TorchUtils.cpython-38.pyc | Bin 10835 -> 10836 bytes util/__pycache__/__init__.cpython-38.pyc | Bin 137 -> 138 bytes vodsdk/__init__.py | 3 + .../AliyunVodUploader.cpython-38.pyc | Bin 25270 -> 25271 bytes .../__pycache__/AliyunVodUtils.cpython-38.pyc | Bin 10218 -> 10219 bytes .../UploadVideoRequest.cpython-38.pyc | Bin 3355 -> 3356 bytes vodsdk/__pycache__/__init__.cpython-38.pyc | Bin 139 -> 161 bytes 74 files changed, 2560 insertions(+), 118 deletions(-) create mode 100644 enums/ModelTypeEnum-jcq.py create mode 100644 enums/ModelTypeEnum-raw.py create mode 100644 service/Dispatcher-raw.py diff --git a/common/__pycache__/Constant.cpython-38.pyc b/common/__pycache__/Constant.cpython-38.pyc index 73d6a84bd398d4431fc0be262a17d753bffc9524..71210d8e5556fe2b0d6b9ac696b33b5b775bbc1a 100644 GIT binary patch delta 40 ucmaDS@m_)_l$V!_0SK}pqcS$~WN`8t>SyHVrs|hu=vNizY;NFu#{>Z2Q4AXZ delta 39 tcmaDa@lJv#l$V!_0SJu0_oZ*-$>8KM(9g)vP1P^S&=2?8+{pQk2>{^V3;X~8 diff --git a/common/__pycache__/YmlConstant.cpython-38.pyc b/common/__pycache__/YmlConstant.cpython-38.pyc index 30975e05b76492afd193276a1b5fecfd99662122..1d8dd71e9c50f995e04d2028ff8ad4de9260aa7a 100644 GIT binary patch delta 91 zcmX@he2$qXl$V!_0SK}pqcS$~Fft0?5-3hBD$7hxjjznji7!Yj$+$IHfzd%TiZ{2g iqy#RwlA(whs0~c~GSSb-&rQ`Y$9IVPq7J5-3hBD$7hxjjznji7!Yj$%vY)!04cHi#NBh hqy#RwlA(wRs0~c~GS<(?&rQ`Y$|x{y<>lpK0D`Q@sEmm`*1U%L8Tq-X`Xw3qRmC|IgDn7=;R(S2 delta 36 qcmeBS>}KQ%<>lpK00QIhed!Z|x}!($C1xP1P^S(61`a*?fhuk_iCVw+rO} delta 39 tcmX@dah8K8l$V!_0SJu0_oZ*-*~7?Vsh^Rbo2p-up&#zG`6^>269Cy#3&sEd diff --git a/concurrency/__pycache__/FeedbackThread.cpython-38.pyc b/concurrency/__pycache__/FeedbackThread.cpython-38.pyc index ea9bb037f9cdc7d2e9cbb7dbbd08b86b77758620..9352c229699f0d2ef34966e7d26d744ab5992e42 100644 GIT binary patch delta 40 ucmcaCa7BP8l$V!_0SK}pqcS$~JYnRu(a*@wP1P^S(61`a+5CqwoDBfrw+uA^ delta 39 tcmca2a9MySl$V!_0SJu0_oZ*-dBVtJt)G#fo2p-up&#zG`7dKQ8vx-93>E+Y diff --git a/concurrency/__pycache__/FileUploadThread.cpython-38.pyc b/concurrency/__pycache__/FileUploadThread.cpython-38.pyc index e00f621391a7f4473bba521a4ba2776849b87f52..9c0cabd9729703d0d97239127d40a27900b0f67f 100644 GIT binary patch delta 1899 zcmZ{l+iw(A9LM*}%yuu`8_)_8T6#sdP`e1UP@xD&naL z+kI#E#STWJVW0RLdn27)o4FplBgJGP2IiK1`7?Q-!%V#HWX*eQG!#6LQ#-WynH8ba+M*9=;)8GIGET*p!_xGSrRPj>WW5 zs@hhOWoWM((#+AJ3B$=`-Iz{Cw4&+k&6l*}Ce>YKm=&q3ID*CXBENg*zr26t!h@Ta z?|=Kn?_Yg%_lHj(-a5As3n zlQkqks^o-!HBm^A1m&PqCGmcxk2LX1%8EpX@M0d?u}ksq6q9t68~uZlpCyHgPX$sT zwodGlHLQ)70~^R5emhV{cJoJpb)<*41{+d4h1rc5Ih2J_TU4NOrgw14GiJ5CZc^3r z=_wb3-z#Jv?})P6ZNe<>Rh`pLsuLC)r_5$uI%u|2>mI71p3bV-WshN8z) z?CNLRA?<+VV>@|$yp9~<+vCR)EzmCqB%qmp6W>dQ`QP!~q@Qm|w2@YREYU#P`02#T z>Vt4O1RUm96Wt=SUlW~Vh}SOb7xz?`b=SF)Gww=;@$|i9R?Hjx#FDS zQetgTdI@+fv6wF$@0OKkYNb*ae6|88AHyw@@?tI6erR8Ywu<#)zZd8O;y^#(HB~ix zRqWkx#wtvzBTUOtb^u1N$^&AT4(ilVjr@qkUW4Ivf#=f!&FJ-8TfF^) z@=vS&Ql2R9t-4)_BXIW;KZ;!!kJi6ryos#}Pyl@;J{*$;%8o;RvKLtfIvqY_ppvV1 zWi%oi5lE7BT+3_bq&+_ob}t)+)!^6b_qU8;yAr4cFs*DHkN~f5n|b5f6(tk$a{!9U z-U1llJ)zfNd59KZ0}c=bV!#O?C*b-;>x|M$DH6~szyyE}Os=bxeiDk4fEbI?{9Hhu z0^SCufm6UcKnZvkI1Ri9%m5z%UV%fEuS1cU>=Kk-k&$XT!f4KNL?4UV+w44y9|9<9 zdTYpH^PiM6P*g9Rqo&yV@H-2jUBoYeG4Fehk2SQ^U4WL*r&|LP86oAb8|q2szs9x+ zVG-NW93zvXPS(7%Q6vsX5kN7K&Z4y#M?Id-Q#%YNYS`z9|prLI@ph=tZ5zNPC<*e;Z*LHZj zCPYXzg%VVb3_?PHgt+B^5b_BQNaX+$NJxNk*%KgIDj_7w5edrt#|d#OY|YQ_YsNG0 zy_t>KAEzUax3>pf;xlsjhvMSWCy`&2h$7Us?O~mM(>?E7cAa&lz5IRmo$a}RW){z` z8Fs#u4)KC#ad=a4JeF=29FImtYm+$vRn424WvS|>>#w7kQnjpS>{8~*SswQu>Q0K4 z_lRN1zhyzTmqnS6@fGiMKYUL6_Vm1NnyO0sg{_GJNJD(fYqI@~Dc^$9=6F}hsM!1+ z|7gH*TQ;RTDaF6{A7qpKhCjiwJP{aV#zfGqxeHb_Z90cZo4PZC7QbHDJ zM4(3u%O~Jx9=HDhjWpUi4HoK$zj<>0QrE!3qtMR?NMa+j50J&*-6cBZ>&9?* zmr~EbJqnBgcMGK5yA`05u-*%+j~;-0Kky*X0Zai838X`GLi{+ve06nQEs$2$>0vl! zZD)j(^DpbRYE%kUnuX&LfuUTRW}KA4G9Rbl*iEcFIWqojb6S zpMaF%hk7RKix8gzQ~=%Nc8!3A=LPy{jL6c;(&Cf4%hjwU7DlJ>&Id1at#k0In?Qfb3k^!?HSI*g}98 zCsw3=W0PW)hG-D_B6`|)kh`-&JOuPmk({F8<4Pn0SYJAt1 zWcB~M!f1adY}uM^br!qWx)ZcvJEc@=_@hh(<`pF680!8xQ}2@4?6LD zwUVz9=@omVP_t{|l@!J1l~k6M_-5*#o)N4h%ZeE-f6=^`{LB6$ZNX^Wwb$SNFL&8x AzW@LL diff --git a/concurrency/__pycache__/HeartbeatThread.cpython-38.pyc b/concurrency/__pycache__/HeartbeatThread.cpython-38.pyc index 0f848db2a98848b6db8e8457045459b2cb38a11c..4a135e7bf2dfc613703559b19bdde4f5cab06110 100644 GIT binary patch delta 40 ucmZ1`v|NZMl$V!_0SK}pqcS$~yk_FH)z8S!P1P^S(61`a+04wW%mx6^3<|vf delta 39 tcmZ23v`mO6l$V!_0SJu0_oZ*-dCkOQqo0wVo2p-up&#zGnT1)I4FJ%t3Z4J} diff --git a/concurrency/__pycache__/IntelligentRecognitionProcess.cpython-38.pyc b/concurrency/__pycache__/IntelligentRecognitionProcess.cpython-38.pyc index 013cd6c1978c7a00ec0dc0ac6148ae5bd507dcd7..b76537b0c8fa2bf3d3337ab4b4339d0b878a9a5e 100644 GIT binary patch delta 42 wcmcb!lb8$cl{0*vQkv!RxJ`k)NBYUy`9;Rh+YV35P`&01iD3M*si- delta 41 vcmcb+lb82$DFFzLBSggU3rhBR@A)za&FH+-vhv4vQ`T0AviJ diff --git a/concurrency/__pycache__/IntelligentRecognitionProcess2.cpython-38.pyc b/concurrency/__pycache__/IntelligentRecognitionProcess2.cpython-38.pyc index ba056c06bfae839f89c98553cd8c499e15893fbc..d6ef3688039321dd413799ae4e78fe52fd1aec3c 100644 GIT binary patch delta 215 zcmX^8gz?N1MxIb!UM>b8$cl{0*vR9`&g-L}k)NBYUy`9;Rh+XqmVLPg_bsO6l%gX* zMMYmH8wLw+RtiXDWMtXg5?Ic{#=!^_=A6tJ=ETUh*(EHUU6dCj!VMy7Kw6**4#Y|@ z@=U%Ndx4Q_^QyRQY>bkV6H^r!*(W!pnlZ9Y-kI9WD6!c#O_EWH1*DY~M6iPhHW0xD nA|y8#q|aw&6y7Y59m~Wm4H7B_*&wsIB3Fo!QEYQ}-T`I+h66Te delta 241 zcmX@}gz@wfMxIb!UM>b8F#g_`zLCe3oyS{0BR@A)za&FH+-q|j`*IKND5m6;q9Z^x zMPDahEEL|X9FWM!$h^5Vu$+aBoe?O^F_|gMiIH`)YgjtFC=W=43q;g_v_KUcjFn*I zo_s6z0wd?<)p6U{lq5hZq<|`-xSbq5T|(o1{asvrikv`t4uA-@$<3)|j4YFPr8YB) zZ?;R5WRzkC>0tp8Y#@RaL~w!#iOq%S^O+fiHVbCQGI2|Rgo;6CNN=vp6=Gx*-Q1IR GfEfTsk~^aS diff --git a/concurrency/__pycache__/Pull2PushStreamProcess.cpython-38.pyc b/concurrency/__pycache__/Pull2PushStreamProcess.cpython-38.pyc index c312d3d1c80e7c164e18fc0add094c6ec4aa1de7..692b1f461e363d1c8ecea39864ae271181320e06 100644 GIT binary patch delta 40 ucmZqDZr0`r<>lpK0D`Q@sEmy~rlpK00QIhed!x{PBHN~>u2QWrs|hu=!bi4e$2E$2msHT3)KJs diff --git a/concurrency/__pycache__/Pull2PushStreamThread.cpython-38.pyc b/concurrency/__pycache__/Pull2PushStreamThread.cpython-38.pyc index eb13c99ec1f2004680bc815c279b510a3aa5abd6..32bad764d8df8f2a3664abe81346c57cb055f3bd 100644 GIT binary patch delta 40 ucmX>na9)5Xl$V!_0SK}pqcS$~q%-k4>u2QWrs|hu=vNizY_4ZI&k6w4fD5qz delta 39 tcmX>va87_Hl$V!_0SJu0_oZ*-NoV45($C1xP1P^S&=2?8+`x366#&z7f; diff --git a/concurrency/__pycache__/PullMqttThread.cpython-38.pyc b/concurrency/__pycache__/PullMqttThread.cpython-38.pyc index 46040b31bba0f65d3f703911996f91d37461d4b2..51ecac3e32f313cd8b91ac0db93bfc0abcde7e89 100644 GIT binary patch delta 40 ucmcbkd{>z#l$V!_0SK}pqcS$~NU-wS=x5~Trs|hu=vNizY&KwB!vg@;ISV)d delta 32 mcmcbsd`Foll$V!_0SMOcE>7RbBf-jOJvoP8cC$01X8Urs|hu=vNizY<6dE7Xkp*MhiIr delta 39 tcmX@FeNLMvl$V!_0SJu0_oZ*-(P!qd)z8S!P1P^S&=2?8?7`eF1OV3{3mO0b diff --git a/concurrency/__pycache__/PullVideoStreamProcess.cpython-38.pyc b/concurrency/__pycache__/PullVideoStreamProcess.cpython-38.pyc index 51d27cbf2934ea2cce471fd1737e73590d2350ed..f4bd497e667eb28c4402bb156ab1aab1b0673ca3 100644 GIT binary patch delta 40 ucmaDH^dyKUl$V!_0SK}pqcS$~7_jiV=x5~Trs|hu=vNizZ1!N0Rs{g)7Ykwl delta 39 tcmaD7^f-tol$V!_0SG1wu1?>`W5B}Wte=seo2p-up&#zG*^@-dB+l^cV zDps+83V6Jrs8B#lbwD5wDn(K8uBfOm&W?jGitxmPJ~+JS`KO&0$~b0be{*hMa`v3> z%R4L1HU}3K7Wy6H)4Ft7;>;t5gWay6OLPnRAG4F6aLsJD{A(Sp&fUXQNp*KQJJ{|( zmqYcmIoCPYI;qtvR0}#7bEw|64%wFqioP%3XXuL_qJ14svBJ^lhzx6}w+l>-9@b-; z?Nf|+<4WC%CG4Q8wJ2G`s!J)&hNjw56J<49vMAfGWhaRZo!iuXzU!$Ay*thy-1o=+ zEx#Y#dhuB2l|i>7=HjtUP1(wUfO9*K|JJ+rzXIwN!$icI@l{n-hMv-<-aKa7!mOEC ztgBkO(IQPr^5c@fY`2kKsgdo@ke;$4E?Y7+qs5jKiktTE z{;kPc-wX9H+b7F0LorQR?r~h2U7biLwQ4I-y~Z^7cIme3CyG6f6OUOUa4^5Kf_Yex z6k-zdGOx?)^tkx1(j_-V#WX+b4n?Mj2F(C91KcWFcCb0C8>(!i<7qid#*Exp&q>Cj z{9?h1qFOAy6U+v6T=q^04~Y*Xl$2^{vYu4p+FX9XyS@>-qdNq4z_b)gk0muLkydF5 zh6?-NET$QTEMK;pTM&gUQCKiqJSGy(%Oq!@g0J^2VKuokzObK7=YL&0md)TL#iQ9g zUQ;}+uwJaY;1u*QYR;`IzL8zE_1uw>b&TD?|1SBN&Ecm?!`D%j2(Ue7wmGR=R4zJ% z)1@paPsm6X6UfA+Wuc zVzxD{&S=C$x1MmPq=QyoI-!QO@rDVVo+JiR{Fe#kSKTll9VvB1$>Oz<$z!M;3m*j= zz+<2TJPw}V>BvnY8}>xTwQt10lK_7mGy;qQ9?%Ik0sPZZ1sDl@U^77C(bFIRkhJs+ z*b24*7r@EUb`S#30`3qSwcRa7TCwOkjLZRLU>JBFAXDiDFf>gu_9EB;UIH(JVz3kB zb2x}r5x54t0$v5L;rD45nx$Yj=mL8HQk@#WKHvqf3nKM2Pzv-0Mu#N8evI{iH^EzA zFewh8dl0lZ#tXaAL_*Np;1Gy|!{7*L;2S2DwZDtzd*CSO1;@bqU;+3590wl?>;TeA z&QLn0nI`pB6DB_bAA=L%6Y#$U#_|;=qr&J@uo!#>J_lcbufW&f8*mbQ3%gHzxK zkT0-2`6@&CRp+eAL#*Y47^qISppe*q<|>6rik delta 1814 zcmbW%TW}L)6bJBpxi+yku?cNLi!v}Zu{0F0)!Nb`^dh2VMx2UJx0_^}EZtlWVgIIb}-f)6DWpQe2aDU6Q74*VaT+*|ZWhQqkdc{DkXnf3w(ck$CGB0vq$$7ce*D zZuhl8%aK$JxmN^*T`zS=BL9)e@4HO=cyNv~Xe2 zbD6OY9`KIV-h-)Kpc|~>yS#0UW$Pdv7$7k7@=TjSb#lsr=Ws4?KI3!`nvd$rhs^4=bD;*BgLOvI-={RLlQPv z3^s!;Uo6 zx_r#4NX4WHSu>UYJe(Aks9-A?7qn6uVHV`THb6iJ1~9<{*bXKE-xO)Io6Y>RzlooX z)QEDs6j`)5kD(m^r9|^U2)Myc@FcIfqdxx>LX0+qlAo&meT9^e2tY}yNgU>|r^ zAgV*l$_71$L@%fZH-Y`&05}NBYChkAs=yl$V!_0SK}pqcS$~d}Zc!)z8S!P1P^S(61`a+04u0CkFuW84K(H delta 39 tcmccPa@&O`l$V!_0SJu0_oZ*-`O3`WqMwnUo2p-up&#zGnUBR!4gm1l3(Wuk diff --git a/concurrency/__pycache__/RecordingHeartbeatThread.cpython-38.pyc b/concurrency/__pycache__/RecordingHeartbeatThread.cpython-38.pyc index 3c2c11fa9bf3513e59c8ffe0d8bca91e3682af59..9bf044421cc95f02057951bebda3df2eead03152 100644 GIT binary patch delta 40 ucmeyv_m__+l$V!_0SK}pqcS$~XfyG;>1X8Urs|hu=vNizY<6a{WCZ}*8VddZ delta 39 tcmey%_lJ)sl$V!_0SJu0_oZ*-(PrXt)z8S!P1P^S&=2?8?80Qp3IN;B3f}+# diff --git a/concurrency/__pycache__/__init__.cpython-38.pyc b/concurrency/__pycache__/__init__.cpython-38.pyc index b963a8b2393f70655bade47e59a608e102b058a3..2393df7a158fd34c1bfee00b13da528578b4d0de 100644 GIT binary patch delta 37 rcmbQhIFXSjl$V!_0SK}pqcSG)So50cXXNLm>X&5bR~6?>47LRTo1O{P delta 36 qcmbQpIDwHTl$V!_0SJu0_oYwdvF0(=&&bbB)i24=5BHiFVhaGB3kkLW diff --git a/concurrency/__pycache__/uploadGPU.cpython-38.pyc b/concurrency/__pycache__/uploadGPU.cpython-38.pyc index 0928cb6d5a6d7788f17b525dc37ed71a0973172b..55d9ca0dc489a9f5ff7350e8f62c872fe36a694f 100644 GIT binary patch delta 40 ucmca6eO;O-l$V!_0SK}pqcS$~JY?cE*U!k$P1P^S(61`a+5D5~E*AjhXAIH+ delta 39 tcmcaEeNCDtl$V!_0SLGjJx|}r^N@+hOg|$(H&wqRLqFVW^Dm~mTma#S42}Q* diff --git a/config/minio/dsp_test_minio.yml b/config/minio/dsp_test_minio.yml index 50a912b..d066ba4 100644 --- a/config/minio/dsp_test_minio.yml +++ b/config/minio/dsp_test_minio.yml @@ -1,8 +1,7 @@ -endpoint: 'minio.t-aaron.com' +endpoint: 'minio.t-aaron.com:9000' domain: 'https://minio.t-aaron.com' access_key: 'IKf3A0ZSXsR1m0oalMjV' secret_key: 'yoC6qRo2hlyZu8Pdbt6eh9TVaTV4gD7KRudromrk' secure: false -image_bucket: 'th-airport' -video_bucket: 'th-airport' -file_dir: 'testFile' +image_bucket: 'image' +video_bucket: 'video' diff --git a/config/service/dsp_test_service.yml b/config/service/dsp_test_service.yml index 2c1b091..ab0def4 100644 --- a/config/service/dsp_test_service.yml +++ b/config/service/dsp_test_service.yml @@ -31,9 +31,9 @@ service: image: limit: 20 #storage source,0--aliyun,1--minio - storage_source: 1 + storage_source: 0 #是否启用mqtt,0--不用,1--启用 mqtt_flag: 0 #是否启用alg控制功能 - algSwitch: false + algSwitch: False diff --git a/entity/__pycache__/FeedBack.cpython-38.pyc b/entity/__pycache__/FeedBack.cpython-38.pyc index 0785694ed7416d1be4cc7b47f6e5e45d12412a77..374521c31d325e3feb8ee7879484a99bee6f8fc3 100644 GIT binary patch delta 40 ucmZqVZsO(%<>lpK0D`Q@sEmy~xlFu<`WgATsrn@u`c=g_n_HRwFaZF&Hw!TU delta 39 tcmZqTZsg_(<>lpK0D?Q~&ZTeU$z|d((9g)vP1P^S&=2?8+{W~W2>{H*3$g$J diff --git a/entity/__pycache__/__init__.cpython-38.pyc b/entity/__pycache__/__init__.cpython-38.pyc index 40746d99b337ad34506fcd4c704cf66801d57195..b57dd716a10511088417a19b70c33975bc67f67b 100644 GIT binary patch delta 37 qcmeBX>|x{y<>lpK0D`Q@sEmm`*1U%L8Tq-X`Xw3qRmC|IgDn7=;R(S2 delta 36 qcmeBS>}KQ%<>lpK00QIhed!Z #"车辆","垃圾","商贩","违停","占道经营","裸土" - 'classReindex':{ 0:0,1:1,2:2,3:5,4:4,5:3} + 'classReindex':{ 0:0,1:1,2:2,3:6,4:4,5:5,6:3} } }, 'models':[ { - #'weight':'../AIlib2/weights/conf/cityMangement3/yolov5.pt', - 'weight':'../AIlib2/weights/cityMangement3/yolov5_%s_fp16.engine'%(gpuName), + 'weight':'../weights/pth/AIlib2/cityMangement3/yolov5.pt', + #'weight':'../weights/trt/AIlib2/cityMangement3/yolov5_%s_fp16.engine'%(gpuName), 'name':'yolov5', 'model':yolov5Model, - 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False, "score_byClass":{"0":0.8,"1":0.4,"2":0.5,"3":0.5 } } + 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False, "score_byClass":{"0":0.25,"1":0.4,"2":0.5,"3":0.5 } } }, { - 'weight':'../AIlib2/weights/conf/cityMangement3/dmpr.pth', + 'weight':'../weights/pth/AIlib2/cityMangement3/dmpr.pth', 'par':{ 'depth_factor':32,'NUM_FEATURE_MAP_CHANNEL':6,'dmpr_thresh':0.1, 'dmprimg_size':640, 'name':'dmpr' @@ -387,8 +395,8 @@ class ModelType(Enum): 'model':DMPRModel, 'name':'dmpr' }, - { - 'weight':'../AIlib2/weights/conf/cityMangement3/stdc_360X640.pth', + { + 'weight':'../weights/pth/AIlib2/cityMangement3/stdc_360X640.pth', 'par':{ 'modelSize':(640,360),'mean':(0.485, 0.456, 0.406),'std' :(0.229, 0.224, 0.225),'predResize':True,'numpy':False, 'RGB_convert_first':True,'seg_nclass':2},###分割模型预处理参数 'model':stdcModel, @@ -399,7 +407,7 @@ class ModelType(Enum): "name": "post_process", "conf_thres": 0.25, "iou_thres": 0.45, - "classes": 5, + "classes": 6, "rainbows": COLOR }, 'detModelpara':[{"id":str(x),"config":{"k1":"v1","k2":"v2"}} for x in [0,1,2,3,5,6,7,8,9] ],###控制哪些检测类别显示、输出 @@ -435,10 +443,10 @@ class ModelType(Enum): "classes": 9, "rainbows": COLOR }, - # "../AIlib2/weights/conf/%s/yolov5.pt" % modeType.value[3] - 'Detweights': "../AIlib2/weights/drowning/yolov5_%s_fp16.engine" % gpuName, - # '../AIlib2/weights/conf/%s/stdc_360X640.pth' % modeType.value[3] - 'Segweights': '../AIlib2/weights/drowning/stdc_360X640_%s_fp16.engine' % gpuName + # "../weights/pth/AIlib2/%s/yolov5.pt" % modeType.value[3] + 'Detweights': "../weights/trt/AIlib2/drowning/yolov5_%s_fp16.engine" % gpuName, + # '../weights/pth/AIlib2/%s/stdc_360X640.pth' % modeType.value[3] + 'Segweights': '../weights/trt/AIlib2/drowning/stdc_360X640_%s_fp16.engine' % gpuName }) NOPARKING_MODEL = ( @@ -476,8 +484,8 @@ class ModelType(Enum): "classes": 9, "rainbows": COLOR }, - 'Detweights': "../AIlib2/weights/noParking/yolov5_%s_fp16.engine" % gpuName, - 'Segweights': '../AIlib2/weights/noParking/stdc_360X640_%s_fp16.engine' % gpuName + 'Detweights': "../weights/trt/AIlib2/noParking/yolov5_%s_fp16.engine" % gpuName, + 'Segweights': '../weights/trt/AIlib2/noParking/stdc_360X640_%s_fp16.engine' % gpuName }) ILLPARKING_MODEL = ("19", "019", "车辆违停模型", 'illParking', lambda device, gpuName: { @@ -500,7 +508,7 @@ class ModelType(Enum): "classes": 9, "rainbows": COLOR }, - 'Detweights': "../AIlib2/weights/illParking/yolov5_%s_fp16.engine" % gpuName, + 'Detweights': "../weights/trt/AIlib2/illParking/yolov5_%s_fp16.engine" % gpuName, 'Segweights': None }) @@ -520,7 +528,7 @@ class ModelType(Enum): "classes": 5, "rainbows": COLOR }, - 'Detweights': "../AIlib2/weights/cityRoad/yolov5_%s_fp16.engine" % gpuName, + 'Detweights': "../weights/trt/AIlib2/cityRoad/yolov5_%s_fp16.engine" % gpuName, 'Segweights': None }) @@ -533,7 +541,7 @@ class ModelType(Enum): 'slopeIndex': [], 'trtFlag_det': True, 'trtFlag_seg': False, - 'Detweights': "../AIlib2/weights/pothole/yolov5_%s_fp16.engine" % gpuName, + 'Detweights': "../weights/trt/AIlib2/pothole/yolov5_%s_fp16.engine" % gpuName, 'segPar': None, 'postFile': { "name": "post_process", @@ -548,31 +556,37 @@ class ModelType(Enum): CHANNEL2_MODEL = ("24", "024", "船只综合检测模型", 'channel2', lambda device, gpuName: { 'device': device, 'gpu_name': gpuName, - 'labelnames': ["国旗", "浮标", "船名", "船只","未挂国旗船只"], + # 'labelnames': ["国旗", "浮标", "船名", "船只","未挂国旗船只"], + 'labelnames': ["国旗", "浮标", "船名", "船只", "未挂国旗船只","未封仓船只","未挂国旗且未封仓船只"], 'segRegionCnt': 0, 'postProcess':{'function':channel2_post_process,'name':'channel2','pars':{ 'objs':[2], 'wRation':1/6.0, 'hRation':1/6.0, - 'smallId':0, - 'bigId':3, - 'newId':4, - 'recScale':1.2}}, + 'flagId':0, + 'boatId':3, + 'unflagId': 4, # 未挂国旗船只 + 'uncoverId': 5, # 未封仓 + 'unflagAndcoverId': 6, # 未挂国旗且未封仓 + 'recScale':1.2, + 'target_cls': 3, # 船只目标种类 + 'filter_cls': 4 # 被过滤的种类,模型文件中未封仓实际index + }}, 'models':[ { - #'weight':'../AIlib2/weights/conf/channel2/yolov5.pt', - 'weight':'../AIlib2/weights/channel2/yolov5_%s_fp16.engine'%(gpuName), + #'weight':'../weights/pth/AIlib2/channel2/yolov5.pt', + 'weight':'../weights/trt/AIlib2/channel2/yolov5_%s_fp16.engine'%(gpuName), 'name':'yolov5', 'model':yolov5Model, 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.1,'iou_thres':0.45,'allowedList':list(range(20)),'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False, "score_byClass":{"0":0.7,"1":0.7,"2":0.8,"3":0.6} } }, { - # 'weight' : '../AIlib2/weights/ocr2/crnn_ch_4090_fp16_192X32.engine', - 'weight' : '../AIlib2/weights/conf/ocr2/crnn_ch.pth', + # 'weight' : '../weights/trt/AIlib2/ocr2/crnn_ch_4090_fp16_192X32.engine', + 'weight' : '../weights/pth/AIlib2/ocr2/crnn_ch.pth', 'name':'ocr', 'model':ocrModel, 'par':{ - 'char_file':'../AIlib2/weights/conf/ocr2/benchmark.txt', + 'char_file':'../AIlib2/conf/ocr2/benchmark.txt', 'mode':'ch', 'nc':3, 'imgH':32, @@ -584,7 +598,7 @@ class ModelType(Enum): }, } ], - 'detModelpara':[{"id":str(x),"config":{"k1":"v1","k2":"v2"}} for x in [0,1,2,3]], + 'detModelpara':[{"id":str(x),"config":{"k1":"v1","k2":"v2"}} for x in [0,1,2,3,4,5,6]], 'segPar': None, 'postFile': { "name": "post_process", @@ -626,10 +640,10 @@ class ModelType(Enum): "classes": 5, "rainbows": COLOR }, - # "../AIlib2/weights/conf/%s/yolov5.pt" % modeType.value[3] - 'Detweights': "../AIlib2/weights/riverT/yolov5_%s_fp16.engine" % gpuName, - # '../AIlib2/weights/conf/%s/stdc_360X640.pth' % modeType.value[3] - 'Segweights': '../AIlib2/weights/riverT/stdc_360X640_%s_fp16.engine' % gpuName + # "../weights/pth/AIlib2/%s/yolov5.pt" % modeType.value[3] + 'Detweights': "../weights/trt/AIlib2/riverT/yolov5_%s_fp16.engine" % gpuName, + # '../weights/pth/AIlib2/%s/stdc_360X640.pth' % modeType.value[3] + 'Segweights': '../weights/trt/AIlib2/riverT/stdc_360X640_%s_fp16.engine' % gpuName }) @@ -640,7 +654,7 @@ class ModelType(Enum): 'models': [ { - 'weight':"../AIlib2/weights/forestCrowd/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 + 'weight':"../weights/trt/AIlib2/forestCrowd/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 'name':'yolov5', 'model':yolov5Model, 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False, "score_byClass":{ "0":0.25,"1":0.25,"2":0.6,"3":0.6,'4':0.6 ,'5':0.6 } }, @@ -702,8 +716,8 @@ class ModelType(Enum): "classes": 10, "rainbows": COLOR }, - 'Detweights': "../AIlib2/weights/highWay2/yolov5_%s_fp16.engine" % gpuName, - 'Segweights': '../AIlib2/weights/highWay2/stdc_360X640_%s_fp16.engine' % gpuName + 'Detweights': "../weights/trt/AIlib2/highWay2/yolov5_%s_fp16.engine" % gpuName, + 'Segweights': '../weights/trt/AIlib2/highWay2/stdc_360X640_%s_fp16.engine' % gpuName }) SMARTSITE_MODEL = ("28", "028", "智慧工地模型", 'smartSite', lambda device, gpuName: { @@ -712,7 +726,7 @@ class ModelType(Enum): 'models': [ { - 'weight':"../AIlib2/weights/smartSite/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 + 'weight':"../weights/trt/AIlib2/smartSite/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 'name':'yolov5', 'model':yolov5Model, 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':list(range(20)),'segRegionCnt':1, 'trtFlag_det':True,'trtFlag_seg':False, "score_byClass":{"0":0.25,"1":0.3,"2":0.3,"3":0.3 } }, @@ -732,7 +746,7 @@ class ModelType(Enum): 'models': [ { - 'weight':"../AIlib2/weights/rubbish/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 + 'weight':"../weights/trt/AIlib2/rubbish/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 'name':'yolov5', 'model':yolov5Model, 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':list(range(20)),'segRegionCnt':1, 'trtFlag_det':True,'trtFlag_seg':False, "score_byClass":{"0":0.25,"1":0.3,"2":0.3,"3":0.3 } }, @@ -752,7 +766,7 @@ class ModelType(Enum): 'models': [ { - 'weight':"../AIlib2/weights/firework/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 + 'weight':"../weights/trt/AIlib2/firework/yolov5_%s_fp16.engine"%(gpuName),###检测模型路径 'name':'yolov5', 'model':yolov5Model, 'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':list(range(20)),'segRegionCnt':1, 'trtFlag_det':True,'trtFlag_seg':False, "score_byClass":{"0":0.25,"1":0.3,"2":0.3,"3":0.3 } }, @@ -765,7 +779,191 @@ class ModelType(Enum): }, }) - + + TRAFFIC_SPILL_MODEL = ("50", "501", "高速公路抛洒物模型", 'highWaySpill', lambda device, gpuName: { + 'device': str(device), + 'labelnames': ["抛洒物","车辆"], + 'trtFlag_seg': True, + 'trtFlag_det': True, + 'seg_nclass': 2, + 'segRegionCnt': 2, + 'segPar': { + #'modelSize': (640, 360), + 'modelSize': (1920, 1080), + 'mean': (0.485, 0.456, 0.406), + 'std': (0.229, 0.224, 0.225), + 'predResize': True, + 'numpy': False, + 'RGB_convert_first': True, + 'mixFunction': { + 'function': mixSpillage_postprocess, + 'pars': { + #'modelSize': (640, 360), + 'modelSize': (1920,1080), + 'RoadArea': 16000, + 'roadVehicleAngle': 15, + 'speedRoadVehicleAngleMax': 75, + 'roundness': 1.0, + 'cls': 1, + 'vehicleFactor': 0.1, + 'confThres': 0.25, + 'roadIou': 0.6, + 'radius': 50, + 'vehicleFlag': False, + 'distanceFlag': False + } + } + }, + 'postFile': { + "name": "post_process", + "conf_thres": 0.25, + "iou_thres": 0.25, + "classes": 2, + "rainbows": COLOR + }, + 'detModelpara': [{"id": str(x), "config": {"k1": "v1", "k2": "v2"}} for x in [0]], + ###控制哪些检测类别显示、输出 + 'Detweights': "../weights/trt/AIlib2/highWaySpill/yolov5_%s_fp16.engine" % gpuName, + 'Segweights': '../weights/trt/AIlib2/highWaySpill/stdc_360X640_%s_fp16.engine' % gpuName + }) + + TRAFFIC_CTHC_MODEL = ("50", "502", "高速公路危化品模型", 'highWayCthc', lambda device, gpuName: { + 'device': str(device), + 'labelnames': ["危化品","罐体","危险标识","普通车"], + 'trtFlag_seg': True, + 'trtFlag_det': True, + 'seg_nclass': 2, + 'segRegionCnt': 2, + 'segPar': { + #'modelSize': (640, 360), + 'modelSize': (1920, 1080), + 'mean': (0.485, 0.456, 0.406), + 'std': (0.229, 0.224, 0.225), + 'predResize': True, + 'numpy': False, + 'RGB_convert_first': True, + 'mixFunction': { + 'function': mixCthc_postprocess, + 'pars': { + #'modelSize': (640, 360), + 'modelSize': (1920,1080), + 'RoadArea': 16000, + 'roadVehicleAngle': 15, + 'speedRoadVehicleAngleMax': 75, + 'roundness': 1.0, + 'cls': 4, + 'vehicleFactor': 0.1, + 'confThres': 0.25, + 'roadIou': 0.6, + 'radius': 50, + 'vehicleFlag': False, + 'distanceFlag': False + } + } + }, + 'postFile': { + "name": "post_process", + "conf_thres": 0.25, + "iou_thres": 0.25, + "classes": 1, + "rainbows": COLOR + }, + 'detModelpara': [{"id": str(x), "config": {"k1": "v1", "k2": "v2"}} for x in [0]], + ###控制哪些检测类别显示、输出 + 'Detweights': "../weights/trt/AIlib2/highWayCthc/yolov5_%s_fp16.engine" % gpuName, + 'Segweights': '../weights/trt/AIlib2/highWayCthc/stdc_360X640_%s_fp16.engine' % gpuName + }) + + TRAFFIC_PANNEL_MODEL = ("50", "503", "光伏板模型", 'pannel', lambda device, gpuName: { + 'labelnames': ["光伏板","覆盖物","裂缝"], + 'postProcess': {'function': pannel_post_process, 'pars': {'objs': [0]}}, + 'models': + [ + { + 'weight': "../weights/trt/AIlib2/pannel/yolov5_%s_fp16.engine" % (gpuName), ###检测模型路径 + 'name': 'yolov5', + 'model': yolov5Model, + 'par': {'half': True, 'device': 'cuda:0', 'conf_thres': 0.25, 'iou_thres': 0.45, + 'allowedList': [0,1,2], 'segRegionCnt': 1, 'trtFlag_det': True, + 'trtFlag_seg': False, "score_byClass": {"0": 0.25, "1": 0.3, "2": 0.3, "3": 0.3}}, + } + + ], + 'postFile': { + "rainbows": COLOR + }, + + }) + + CITY_CARPLATE_MODEL = ("30", "301", "自研车牌检测", 'carplate', lambda device, gpuName: { + 'device': str(device), + 'models':{ + { + 'weights': '../AIlib2/weights/conf/jkm/plate_yolov5s_v3.jit', + 'conf_thres': 0.4, + 'iou_thres': 0.45, + 'nc':1, + }, + { + 'weight' : '../weights/pth/AIlib2/ocr2/crnn_ch.pth', + 'name':'ocr', + 'model':ocrModel, + 'par':{ + 'char_file':'../AIlib2/conf/ocr2/benchmark.txt', + 'mode':'ch', + 'nc':3, + 'imgH':32, + 'imgW':192, + 'hidden':256, + 'mean':[0.5,0.5,0.5], + 'std':[0.5,0.5,0.5], + 'dynamic':False, + } + }, + } + }) + + CITY_INFRAREDPERSON_MODEL = ("30", "302", "红外行人模型", 'infraredperson', lambda device, gpuName: { + 'labelnames': ["行人"], + 'postProcess': {'function': default_mix, 'pars': {}}, + 'models': + [ + { + 'weight': "../weights/trt/AIlib2/infraredPerson/yolov5_%s_fp16.engine" % (gpuName), ###检测模型路径 + 'name': 'yolov5', + 'model': yolov5Model, + 'par': {'half': True, 'device': 'cuda:0', 'conf_thres': 0.50, 'iou_thres': 0.45, + 'allowedList': list(range(20)), 'segRegionCnt': 1, 'trtFlag_det': True, + 'trtFlag_seg': False, "score_byClass": {"0": 0.50, "1": 0.3, "2": 0.3, "3": 0.3}}, + } + + ], + 'postFile': { + "rainbows": COLOR + }, + + }) + + CITY_NIGHTFIRESMOKE_MODEL = ("30", "303", "夜间烟火模型", 'nightFireSmoke', lambda device, gpuName: { + 'labelnames': ["火","烟雾"], + 'postProcess': {'function': default_mix, 'pars': {}}, + 'models': + [ + { + 'weight': "../weights/trt/AIlib2/nightFireSmoke/yolov5_%s_fp16.engine" % (gpuName), ###检测模型路径 + 'name': 'yolov5', + 'model': yolov5Model, + 'par': {'half': True, 'device': 'cuda:0', 'conf_thres': 0.50, 'iou_thres': 0.45, + 'allowedList': list(range(20)), 'segRegionCnt': 1, 'trtFlag_det': True, + 'trtFlag_seg': False, "score_byClass": {"0": 0.50, "1": 0.3, "2": 0.3, "3": 0.3}}, + } + + ], + 'postFile': { + "rainbows": COLOR + }, + + }) @staticmethod def checkCode(code): diff --git a/enums/__pycache__/AnalysisStatusEnum.cpython-38.pyc b/enums/__pycache__/AnalysisStatusEnum.cpython-38.pyc index f571b45e88dd180544ac5dfa0d75bea90c027136..0f5091cd2b1cacfc3e3eb7d7dc706d9980ed04e0 100644 GIT binary patch delta 96 zcmaFN{Dhe&l$V!_0SK}pqcSG)Y-GGOabKgj5Ky29MEtVS&&bbB)i24=uPV-&9LkuY h1(yRWC=v#$y2W9Wo1apelWNBZ})+MgXWk6{G+F delta 73 zcmaFD{Fs?1l$V!_0SJu0_oYwd*~l0*abKgDAW)zPMEtVU&&bbB)i24=5BHiJ#+V`i OmjcTd2~9r5CT?8w*y0KSz9fdBvi diff --git a/enums/__pycache__/BaiduSdkEnum.cpython-38.pyc b/enums/__pycache__/BaiduSdkEnum.cpython-38.pyc index e79c7540727d80273118c3ebe452b60760c60a37..5bf092226709209caa7204eeeaa69366b7e89fed 100644 GIT binary patch delta 40 ucmZp(Znx$M<>lpK0D`Q@sEmy~|0H-#^fU5vQ}s(S^s9<lpK00QIhed!x{{z>o{>u2QWrs|hu=!bi47MCnw0RYys3q$|_ diff --git a/enums/__pycache__/ExceptionEnum.cpython-38.pyc b/enums/__pycache__/ExceptionEnum.cpython-38.pyc index e2126d143a262cdd4fb062fdbd97ac4cf02341eb..ffd9b21daed62a131aa535e0e86c05113ef5a386 100644 GIT binary patch delta 39 tcmdlhy-%7al$V!_0SK}pqcS$~T;t(2)z8S!P1P^S(61`anf#9DJOI#63}gTR delta 38 scmdldy;qtil$V!_0SJu0_oZ*-xyHj|qMwnUo2p-up&#xw`905h0MOzLMF0Q* diff --git a/enums/__pycache__/ModelTypeEnum.cpython-38.pyc b/enums/__pycache__/ModelTypeEnum.cpython-38.pyc index 9dd09f354d8b153094f434c994d5b03c57b7bb72..79689ff4097072194f765bb704e7a077a2d8b124 100644 GIT binary patch literal 21026 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 YOu64Rz!W=8HaN)q`+qjO6ARw|KY`f^761SM delta 6564 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 diff --git a/enums/__pycache__/StatusEnum.cpython-38.pyc b/enums/__pycache__/StatusEnum.cpython-38.pyc index ec5fb91778f81d08de15f38bd82409082f861feb..5d44352be289401007d0d3c5ced9e1ae9a46b886 100644 GIT binary patch delta 40 ucmbQjK9!v(l$V!_0SK}pqcS$~oMq%S($C1xP1P^S(61`a+5D7oJtF|fkqf{8 delta 39 tcmbQrK82kpl$V!_0SJu0_oZ*-Im^gnsGpIao2p-up&#zG`5EJSMgYl|3!wl2 diff --git a/enums/__pycache__/__init__.cpython-38.pyc b/enums/__pycache__/__init__.cpython-38.pyc index 17fbca09986d7789330a39b57f8b12c538ef266f..c66b4847f9355c821c565d157bd977e8934af7ca 100644 GIT binary patch delta 37 qcmeBT>}KQ%<>lpK0D`Q@sEmm`*1QJ#8Tq-X`Xw3qRmC|IgUtb%hzY#_ delta 36 qcmeBX>|*2z<>lpK00QIhed!Zl$V!_0SK}pqcS$~h%xfo>SyHVrs|hu=vNizY}R8u#Rve^jte{h delta 39 tcmey#`h%4xl$V!_0SJu0_oZ*-5o6@B(a*@wP1P^S&=2?8tj~Cg5dhYF3mpIe diff --git a/exception/__pycache__/__init__.cpython-38.pyc b/exception/__pycache__/__init__.cpython-38.pyc index 5fb7efd63dd4e779824da05b162bf667a13c6829..b2aa17beb283cecbc50941b7d2ee545ab060a0b1 100644 GIT binary patch delta 37 qcmeBU>}TW&<>lpK0D`Q@sEmm`*1RVA8Tq-X`Xw3qRmC|IgRKFY>|^8!<>lpK00QIhed!Z 0: + if gpu_array[0] != '2080': + gpu_name = gpu_array[0] + else: + raise Exception("GPU资源不在提供的模型所支持的范围内!请先提供对应的GPU模型!") + logger.info("当前服务环境为: {}, 服务器GPU使用型号: {}", env, gpu_name) + self.__context["gpu_name"] = gpu_name + self.start_service() + + # 服务调用启动方法 + def start_service(self): + # 初始化kafka监听者 + customerKafkaConsumer = CustomerKafkaConsumer(self.__kafka_config, topics=self.__topics) + ####增加一个线程,用于试试监控和发送gpu状态#### + #### + logger.info("(♥◠‿◠)ノ゙ DSP【算法调度服务】启动成功 服务器IP:{}".format(self.__kafka_config['bootstrap_servers'] )) + while True: + try: + # 检查任务进程运行情况,去除结束的任务 + self.check_process_task() + # 启动反馈线程 + self.start_feedback_thread() + self.start_uploadGPU_thread() + msg = customerKafkaConsumer.poll() + if msg is not None and len(msg) > 0: + for k, v in msg.items(): + for m in v: + message = m.value + #如果收到的信息是gpu状态的话,收到信息后,更新自己的gpu服务器状态,下面不再执行 + if m.topic in self.__gpuTopic: + customerKafkaConsumer.commit_offset(m,'x'*16,False) + #更新机器资源现状 + ip = message['System']['Local IP Address'] + self.__gpuDics[ip]=message + continue + #如果收到的信息是门户消息,收到信息后,要根据Gpu状态,转发到对应的机器。 + elif m.topic in self.__topicsPort: + customerKafkaConsumer.commit_offset(m, 'y'*16) + #状态分析 + #recondGpu={'hostname':'thsw2','IP':'192.168.10.66','gpuId':0} + recondGpu= select_best_server(self.__gpuDics) + if recondGpu is None: + print( 'recondGpu:',recondGpu, ' self.__gpuDics: ',self.__gpuDics,' topic:',m.topic, ' message:',message ) + continue + #转发消息 + message['transmit_topic'] = m.topic + '-' + recondGpu['IP'] + transmitMsg={'transmit':message} + msg_json = json.dumps( message ) + future = self.__producer.send( message['transmit_topic'] ,msg_json) + try: + future.get(timeout=2) + logger.info( "转发消息成功,消息topic:{},消息内容:{}",message['transmit_topic'],message ) + except kafka_errors as e: + print('------transmitted error:',e) + logger.info("转发消息失败") + traceback.format_exc() + else: + requestId = message.get("request_id") + if requestId is None: + logger.error("请求参数格式错误, 请检查请求体格式是否正确!message:%s"%(message)) + continue + customerKafkaConsumer.commit_offset(m, requestId) + logger.info("当前拉取到的消息, topic:{}, offset:{}, partition: {}, body: {}, requestId:{}", + m.topic, m.offset, m.partition, message, requestId) + + message['taskType']=self.__taskType[m.topic] + topic_method = self.__task_type[m.topic] + topic_method[2](topic_method[1], message, topic_method[0]) + else: + print_gpu_ex_status() + print_cpu_ex_status(self.__context["base_dir"]) + time.sleep(1) + except Exception: + logger.error("主线程异常:{}", format_exc()) + + def identify_method(self, handle_method, message, analysisType): + try: + check_cude_is_available() + handle_method(message, analysisType) + except ServiceException as s: + logger.error("消息监听异常:{}, requestId: {}", s.msg, message["request_id"]) + put_queue(self.__fbQueue, message_feedback(message["request_id"], AnalysisStatus.FAILED.value, analysisType, + s.code, s.msg), timeout=1) + except Exception: + logger.error("消息监听异常:{}, requestId: {}", format_exc(), message["request_id"]) + put_queue(self.__fbQueue, message_feedback(message["request_id"], AnalysisStatus.FAILED.value, analysisType, + ExceptionType.SERVICE_INNER_EXCEPTION.value[0], + ExceptionType.SERVICE_INNER_EXCEPTION.value[1]), timeout=1) + finally: + del message + + def push_stream_method(self, handle_method, message, analysisType): + try: + check_cude_is_available() + handle_method(message, analysisType) + except ServiceException as s: + logger.error("消息监听异常:{}, requestId: {}", s.msg, message['request_id']) + videoInfo = [{"id": url.get("id"), "status": PushStreamStatus.FAILED.value[0]} for url in + message.get("video_urls", []) if url.get("id") is not None] + put_queue(self.__fbQueue, pull_stream_feedback(message['request_id'], ExecuteStatus.FAILED.value[0], + s.code, s.msg, videoInfo), timeout=1) + except Exception: + logger.error("消息监听异常:{}, requestId: {}", format_exc(), message['request_id']) + videoInfo = [{"id": url.get("id"), "status": PushStreamStatus.FAILED.value[0]} for url in + message.get("video_urls", []) if url.get("id") is not None] + put_queue(self.__fbQueue, pull_stream_feedback(message.get("request_id"), ExecuteStatus.FAILED.value[0], + ExceptionType.SERVICE_INNER_EXCEPTION.value[0], + ExceptionType.SERVICE_INNER_EXCEPTION.value[1], videoInfo), + timeout=1) + finally: + del message + + def recording_method(self, handle_method, message, analysisType): + try: + check_cude_is_available() + handle_method(message, analysisType) + except ServiceException as s: + logger.error("消息监听异常:{}, requestId: {}", s.msg, message["request_id"]) + put_queue(self.__fbQueue, + recording_feedback(message["request_id"], RecordingStatus.RECORDING_FAILED.value[0], + error_code=s.code, error_msg=s.msg), timeout=1) + except Exception: + logger.error("消息监听异常:{}, requestId: {}", format_exc(), message["request_id"]) + put_queue(self.__fbQueue, + recording_feedback(message["request_id"], RecordingStatus.RECORDING_FAILED.value[0], + ExceptionType.SERVICE_INNER_EXCEPTION.value[0], + ExceptionType.SERVICE_INNER_EXCEPTION.value[1]), timeout=1) + finally: + del message + + # 开启实时进程 + def startOnlineProcess(self, msg, analysisType): + if self.__listeningProcesses.get(msg["request_id"]): + logger.warning("实时重复任务,请稍后再试!requestId:{}", msg["request_id"]) + return + model_type = self.__context["service"]["model"]["model_type"] + codes = [model.get("code") for model in msg["models"] if model.get("code")] + if ModelMethodTypeEnum.NORMAL.value == model_type or ModelType.ILLPARKING_MODEL.value[1] in codes: + coir = OnlineIntelligentRecognitionProcess(self.__fbQueue, msg, analysisType, self.__context) + else: + coir = OnlineIntelligentRecognitionProcess2(self.__fbQueue, msg, analysisType, self.__context) + coir.start() + logger.info("开始实时进程!requestId:{},pid:{}, ppid:{}", msg["request_id"],os.getpid(),os.getppid()) + self.__listeningProcesses[msg["request_id"]] = coir + + # 结束实时进程 + def stopOnlineProcess(self, msg): + ps = self.__listeningProcesses.get(msg["request_id"]) + if ps is None: + logger.warning("未查询到该任务,无法停止任务!requestId:{}", msg["request_id"]) + return + ps.sendEvent({"command": "stop"}) + + # 新增该函数用于,向子任务发送命令(algStart,algStop) + def sendCmdToChildProcess(self, msg,cmd="algStart"): + ps = self.__listeningProcesses.get(msg["request_id"]) + if ps is None: + logger.warning("未查询到该任务,无法停止任务!requestId:{}", msg["request_id"]) + return + ps.sendEvent({"command": cmd}) + + @staticmethod + def check_process(listeningProcess): + for requestId in list(listeningProcess.keys()): + if not listeningProcess[requestId].is_alive(): + del listeningProcess[requestId] + + def check_process_task(self): + self.check_process(self.__listeningProcesses) + self.check_process(self.__recordingProcesses) + self.check_process(self.__pull2PushProcesses) + + # 开启离线进程 + def startOfflineProcess(self, msg, analysisType): + if self.__listeningProcesses.get(msg["request_id"]): + logger.warning("离线重复任务,请稍后再试!requestId:{}", msg["request_id"]) + return + model_type = self.__context["service"]["model"]["model_type"] + codes = [model.get("code") for model in msg["models"] if model.get("code")] + if ModelMethodTypeEnum.NORMAL.value == model_type: + first = OfflineIntelligentRecognitionProcess(self.__fbQueue, msg, analysisType, self.__context) + else: + first = OfflineIntelligentRecognitionProcess2(self.__fbQueue, msg, analysisType, self.__context) + first.start() + self.__listeningProcesses[msg["request_id"]] = first + + # 结束离线进程 + def stopOfflineProcess(self, msg): + ps = self.__listeningProcesses.get(msg["request_id"]) + if ps is None: + logger.warning("未查询到该任务,无法停止任务!requestId:{}", msg["request_id"]) + return + ps.sendEvent({"command": "stop"}) + + # 开启图片分析进程 + def startImageProcess(self, msg, analysisType): + pp = self.__listeningProcesses.get(msg["request_id"]) + if pp is not None: + logger.warning("重复任务,请稍后再试!requestId:{}", msg["request_id"]) + return + model_type = self.__context["service"]["model"]["model_type"] + codes = [model.get("code") for model in msg["models"] if model.get("code")] + if ModelMethodTypeEnum.NORMAL.value == model_type or ModelType.ILLPARKING_MODEL.value[1] in codes: + imaged = PhotosIntelligentRecognitionProcess(self.__fbQueue, msg, analysisType, self.__context) + else: + imaged = PhotosIntelligentRecognitionProcess2(self.__fbQueue, msg, analysisType, self.__context) + # 创建在线识别进程并启动 + imaged.start() + self.__listeningProcesses[msg["request_id"]] = imaged + + ''' + 校验kafka消息 + ''' + + @staticmethod + def check_msg(msg, schema): + try: + v = Validator(schema, allow_unknown=True) + result = v.validate(msg) + if not result: + logger.error("参数校验异常: {}, requestId: {}", v.errors, msg["request_id"]) + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + except ServiceException as s: + raise s + except Exception: + logger.error("参数校验异常: {}, requestId: {}", format_exc(), msg["request_id"]) + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + ''' + 开启反馈线程,用于发送消息 + ''' + + def start_feedback_thread(self): + if self.__feedbackThread is None: + self.__feedbackThread = FeedbackThread(self.__fbQueue, self.__kafka_config) + self.__feedbackThread.setDaemon(True) + self.__feedbackThread.start() + time.sleep(1) + if self.__feedbackThread and not self.__feedbackThread.is_alive(): + logger.error("反馈线程异常停止, 开始重新启动反馈线程!!!!!") + self.__feedbackThread = FeedbackThread(self.__fbQueue, self.__kafka_config) + self.__feedbackThread.setDaemon(True) + self.__feedbackThread.start() + time.sleep(1) + + def start_uploadGPU_thread(self): + if self.__uploadGPUThread is None: + self.__uploadGPUThread = uploadGPUinfos(self.__context, self.__kafka_config) + self.__uploadGPUThread.setDaemon(True) + self.__uploadGPUThread.start() + time.sleep(1) + if self.__uploadGPUThread and not self.__uploadGPUThread.is_alive(): + logger.error("反馈线程异常停止, 开始重新启动反馈线程!!!!!") + self.__uploadGPUThread = uploadGPUinfos(self.__context, self.__kafka_config) + self.__uploadGPUThread.setDaemon(True) + self.__uploadGPUThread.start() + time.sleep(1) + + ''' + 在线分析逻辑 + ''' + + def online0(self, message, analysisType): + if "start" == message.get("command"): + self.check_msg(message, ONLINE_START_SCHEMA) + if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["limit"]): + raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + ExceptionType.NO_RESOURCES.value[1]) + self.startOnlineProcess(message, analysisType) + elif message.get("command") in ["algStart","algStop"]: + self.sendCmdToChildProcess(message,cmd=message.get("command")) + elif "stop" == message.get("command"): + self.check_msg(message, ONLINE_STOP_SCHEMA) + self.stopOnlineProcess(message) + else: + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + + def online(self, message, analysisType): + if "start" == message.get("command"): + self.check_msg(message, ONLINE_START_SCHEMA) + if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["limit"]): + raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + ExceptionType.NO_RESOURCES.value[1]) + self.startOnlineProcess(message, analysisType) + + elif message.get("command") in ["algStart","algStop"]: + + if message.get("defaultEnabled",True): + self.sendCmdToChildProcess(message,cmd=message.get("command")) + + + elif "stop" == message.get("command"): + self.check_msg(message, ONLINE_STOP_SCHEMA) + self.stopOnlineProcess(message) + else: + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + + + + def offline(self, message, analysisType): + if "start" == message.get("command"): + self.check_msg(message, OFFLINE_START_SCHEMA) + if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["limit"]): + raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + ExceptionType.NO_RESOURCES.value[1]) + self.startOfflineProcess(message, analysisType) + elif message.get("command") in ["algStart","algStop"]: + self.sendCmdToChildProcess( message,cmd=message.get("command")) + elif "stop" == message.get("command"): + self.check_msg(message, OFFLINE_STOP_SCHEMA) + self.stopOfflineProcess(message) + else: + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + def image(self, message, analysisType): + if "start" == message.get("command"): + self.check_msg(message, IMAGE_SCHEMA) + if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["image"]["limit"]): + raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + ExceptionType.NO_RESOURCES.value[1]) + self.startImageProcess(message, analysisType) + else: + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + def recording(self, message, analysisType): + if "start" == message.get("command"): + self.check_msg(message, RECORDING_START_SCHEMA) + if len(self.__recordingProcesses) >= int(self.__context['service']["task"]["limit"]): + raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + ExceptionType.NO_RESOURCES.value[1]) + self.startRecordingProcess(message, analysisType) + elif "stop" == message.get("command"): + self.check_msg(message, RECORDING_STOP_SCHEMA) + self.stopRecordingProcess(message) + else: + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + # 开启录屏进程 + def startRecordingProcess(self, msg, analysisType): + if self.__listeningProcesses.get(msg["request_id"]): + logger.warning("重复任务,请稍后再试!requestId:{}", msg["request_id"]) + return + srp = ScreenRecordingProcess(self.__fbQueue, self.__context, msg, analysisType) + srp.start() + self.__recordingProcesses[msg["request_id"]] = srp + + # 结束录屏进程 + def stopRecordingProcess(self, msg): + rdp = self.__recordingProcesses.get(msg["request_id"]) + if rdp is None: + logger.warning("未查询到该任务,无法停止任务!requestId:{}", msg["request_id"]) + return + rdp.sendEvent({"command": "stop"}) + + def pullStream(self, message, analysisType): + if "start" == message.get("command"): + self.check_msg(message, PULL2PUSH_START_SCHEMA) + if len(self.__pull2PushProcesses) >= int(self.__context['service']["task"]["limit"]): + raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + ExceptionType.NO_RESOURCES.value[1]) + + self.startPushStreamProcess(message, analysisType) + elif "stop" == message.get("command"): + self.check_msg(message, PULL2PUSH_STOP_SCHEMA) + self.stopPushStreamProcess(message) + else: + raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + def startPushStreamProcess(self, msg, analysisType): + if self.__pull2PushProcesses.get(msg["request_id"]): + logger.warning("重复任务,请稍后再试!requestId:{}", msg["request_id"]) + return + srp = PushStreamProcess(self.__fbQueue, self.__context, msg, analysisType) + srp.start() + self.__pull2PushProcesses[msg["request_id"]] = srp + + # 结束录屏进程 + def stopPushStreamProcess(self, msg): + srp = self.__pull2PushProcesses.get(msg["request_id"]) + if srp is None: + logger.warning("未查询到该任务,无法停止任务!requestId:{}", msg["request_id"]) + return + srp.sendEvent({"command": "stop", "videoIds": msg.get("video_ids", [])}) diff --git a/service/Dispatcher.py b/service/Dispatcher.py index 25c3c7f..a815e7c 100644 --- a/service/Dispatcher.py +++ b/service/Dispatcher.py @@ -187,6 +187,9 @@ class DispatcherService: except Exception: logger.error("主线程异常:{}", format_exc()) + + + def identify_method(self, handle_method, message, analysisType): try: check_cude_is_available() @@ -244,20 +247,30 @@ class DispatcherService: # 开启实时进程 def startOnlineProcess(self, msg, analysisType): - - - # for algswitch flag: - default_enabled = str(msg.get("defaultEnabled","True")).lower() == "true" - - if default_enabled: - self.__context['service']['algSwitch'] = True - else: - self.__context['service']['algSwitch'] = False - + #0521: + default_enabled = str(msg.get("defaultEnabled", "True")).lower() == "true" + + if default_enabled: + print("执行默认程序(defaultEnabled=True)") + self.__context['service']['algSwitch'] = True + # 这里放默认逻辑的代码 + else: + print("执行替代程序(defaultEnabled=False)") + # 这里放非默认逻辑的代码 + self.__context['service']['algSwitch'] = False + + + print("---line264-Dispatcher.py---",self.__context) + + + + + if self.__listeningProcesses.get(msg["request_id"]): logger.warning("实时重复任务,请稍后再试!requestId:{}", msg["request_id"]) return + model_type = self.__context["service"]["model"]["model_type"] codes = [model.get("code") for model in msg["models"] if model.get("code")] if ModelMethodTypeEnum.NORMAL.value == model_type or ModelType.ILLPARKING_MODEL.value[1] in codes: @@ -337,8 +350,23 @@ class DispatcherService: 校验kafka消息 ''' + + @staticmethod def check_msg(msg, schema): + + + # #0521 + # # 检查 defaultEnabled 是否为 True(兼容字符串和布尔值) + # default_enabled = str(msg1.get("defaultEnabled", "True")).lower() == "true" + + # # 如果不是 True,强制设置 command 为 'algStop' + # if not default_enabled and msg1["command"] == "algStart" : + # msg1["command"] = "algStop" + + # msg = msg1 + + try: v = Validator(schema, allow_unknown=True) result = v.validate(msg) @@ -387,23 +415,104 @@ class DispatcherService: 在线分析逻辑 ''' + #0520:主要是在线分析 -- "algStart","algStop" 外部多增加一层逻辑 + + # def online(self, message, analysisType): + # if "start" == message.get("command"): + # self.check_msg(message, ONLINE_START_SCHEMA) + # if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["limit"]): + # raise ServiceException(ExceptionType.NO_RESOURCES.value[0], + # ExceptionType.NO_RESOURCES.value[1]) + # self.startOnlineProcess(message, analysisType) + # elif message.get("command") in ["algStart","algStop"]: + # self.sendCmdToChildProcess(message,cmd=message.get("command")) + # elif "stop" == message.get("command"): + # self.check_msg(message, ONLINE_STOP_SCHEMA) + # self.stopOnlineProcess(message) + # else: + # raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], + # ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + def online(self, message, analysisType): + + + + # #0521 + # # 检查 defaultEnabled 是否为 True(兼容字符串和布尔值) + + # #逻辑还是有问题 - 肯定是先判断是否为 true + # default_enabled = str(message1.get("defaultEnabled", "True")).lower() == "True" + + # # 如果不是 True,强制设置 command 为 'algStop' + # if not default_enabled : + + # message.get("command") + # message = message1 + + + + + # message = message + # print("line429",message) + + + + + + + if "start" == message.get("command"): self.check_msg(message, ONLINE_START_SCHEMA) if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["limit"]): raise ServiceException(ExceptionType.NO_RESOURCES.value[0], ExceptionType.NO_RESOURCES.value[1]) self.startOnlineProcess(message, analysisType) - elif message.get("command") in ["algStart","algStop"]: - self.sendCmdToChildProcess(message,cmd=message.get("command")) + + # elif (message.get("command") in ["algStart","algStop"] ) and (message.get("defaultEnabled",True)): + # self.sendCmdToChildProcess(message,cmd=message.get("command")) + + + elif ( + message is not None # 防止 message 为 None + and isinstance(message, dict) # 确保 message 是字典 + and (command := message.get("command")) in ["algStart", "algStop"] # Python 3.8+ 海象运算符 + and message.get("defaultEnabled", True) is not False # 显式排除 False + ): + self.sendCmdToChildProcess(message, cmd=command) + + + + elif "stop" == message.get("command"): self.check_msg(message, ONLINE_STOP_SCHEMA) self.stopOnlineProcess(message) else: raise ServiceException(ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[0], ExceptionType.ILLEGAL_PARAMETER_FORMAT.value[1]) + + + def offline(self, message, analysisType): + + + # #0521 + # # 检查 defaultEnabled 是否为 True(兼容字符串和布尔值) + # default_enabled = str(message.get("defaultEnabled", "True")).lower() == "true" + + # # 如果不是 True,强制设置 command 为 'algStop' + # if not default_enabled and message["command"] == "algStart" : + # message["command"] = "algStop" + + # message = message + # print("line429",message) + + + + + + if "start" == message.get("command"): self.check_msg(message, OFFLINE_START_SCHEMA) if len(self.__listeningProcesses) >= int(self.__context['service']["task"]["limit"]): diff --git a/service/__pycache__/Dispatcher.cpython-38.pyc b/service/__pycache__/Dispatcher.cpython-38.pyc index 1919f517b27fcb1124cfaa2a0ba36f63f58e2285..c3ec2d30438d08e3305f802acd3aeffbc961c717 100644 GIT binary patch delta 2430 zcmah}Yiv|S6uvY2y4_c|T?%X|kCxK1l_zA}WIC%(l`tRX4fce)pT1 zGvApz=bYV5{@g>X>ns+d1V8_V+J^kLW7dGlQkd7!yv>`ZHsrMjo1!~SZaaB5Iy7qu zC7<)#b3P+i`Q`K;aw!_juv2oK@5uCa8Xy8bmGA_o5=l~}5D627C^SO5NSH<>Mbk(- zG$9QuR5gmWix5fCg(SaL(K{r?P$~tcf-Va^VXO|S5#PHgk>Fn!CLyAj98!d^c2yrX zDCQ996aq|8q_sFH9@GMXtq!R}t0XG6ZZM=IIiyum7wOQcvOmFZ3~3u_uunDl&3>bj z?2tmbMm@WrS|EZoL_$<-tL@MSlGVhCT1X$ZMI<7Dg(RiZ9`~dshwTvwa7sjqXu+=@ zmg(YSrNW$ZN_EVtc(-_3o7DRPp2wTKN=#eBTD>u?3fP(h2YCIN*KS0f`{DG9H;(TA z{?M-P`d+x%zjOQ=H!iu^|4dEH5cIO`8-4ZO+5}J2*0pUuwZ5Ts;XhHXzdZ2m>3#ne zrOMM3#4uIuGh8lLlP}<1R8;6%b&u@ zU=hAId-3ewVJw&lAZeykEs=>$BU7u!thW&x(NaE~{Tn&NugoteGr7ZgF#R~pWKo2Z z08Z__ZDN}GZ3=sv7c92(Uz}6PJYH9k%?lPBB@6lRf(|msH|6AzMbT$-vWck&BZLtm z+?roudKKwDg#DN~ar1Q7gINbaaGK*OV)i0Wb_kisJq=ke-{YE|b{MDX@3|34vj|Rj zgP(QflBN7tSJ-q61$55d5=M{b+DTP(DA)b}mTGt~|9*0S_vfdsnP>q6Zbg`h@H#>k z!bXHC2*TgQj}oITEu$Xi7r01ubbY}sVycI#4$gvAQet$&;`PLai&+;!H^KlPD9j?= zJf~DAaq7Ze%KE@> ztpUqWZEj(E;jN~sm$1`7*a-kcZ%}UH<4m`%YT52`u?@}t?p&Hv?RBOFW z^)_A9z0^!Pou+Y_V4RN-E+IfLiLF5R7~wL4$ip_02MXBsnIAzE{U^x8r%p#U1L0Ey zaTDJ|CNh+fozWqlg-D(aClizezm%#4*_$F^b5(4%wvp^7hh_x%eH~6@&?& z?GeysQOG-$4=hXJKb7vyc^@Qa!lWH08zYDU7H52zpK#~uV<5UHzu|rKZ1QCOSmD;kli}|2Y1B>m`tqX>e1)-O zCe}^ZHw9yjv5c=*5hfhOH=sRC`RbKNri*@l0^VyAw)+%sbDd8KIw_0tq>9=3qRpLx zL8oR+XZ?DTh{K?*qkMBk8R_Fa71hO9a`CdlI~X%V;iDjnoVbf~gZ^EX=aU`PM} delta 1729 zcma)-eN08548v2+SWzR&)PxK_*qnp8H102>CMG5(8a0_N-g7&JAu+b;@11wf zx%Yg$^KNgx08`I{y~AcROZ=0V_&#(lG-mI&SgXCg1ARfS*6ZEACHah{!3mSei-k2h zn8iO=UV{|Q7M*}gNzLul!8iDHanLUF4UGKP!hg{Z(OA)OC>qd|h$&(Wn3hX1{cf2( zu9;&}#1ey;j$ieM^+SgKY|Xk@7c-35;u1)jZp0oi#~=X9B`tHr5hrHFrMMoXn1Qd7 z(l(zIklH2H(#E1Z_`Yh6Z%2o}!?}`5#TX5;{o$S<>Ptg#9Gh#M@^)^&DdEx5V};pl zC%<6_32u&*@jy505BG;yC%;4g>dtJLZ6fPY0uqMt{ngc3zj85p7l#B6{?!B8)!*P0 z%4?dyfScDOirygSQNno+RX@K^Dx;?_z>;V$Q^AIHWpl6$?d3x-fzOqfL0EQhOw)t0C!ZavYepX5kj0QF;FF|@FCBZl9OCgt&6H*r^uBmVflp9c)^pKpCH$N zS49qI@Mn()R-)TGVmV6+%ACE4Gu{&LB!BTX{QtCk7_YhyPT~($d0Q8!L7RpM1%y`! zC4?@*GJ?p_INveR`IK&OkPVah3~pOn0qc@S*8UEb`++}+Lavr{$*1nw1`b-x4ikxEoP2;V) zdtI-S`W=Eyc#ANFo9l}+o4NSpKXn2=QD2b!cs+ofea0>GyFk6O?h-8%H5HL`H{mit zwEP2-L=1(bNx~H23!13R2e^3bjzBl^?yQo1PTmg^W^k|1)i6z>i4Y;|B>Z;{ACb#^ zP?AXn4VPn|dR4iZR_mhA_ zO}A>Uknh42t>i1(^B74>r+B`(;qMgbnA*xcrvR-RMssGls47gXT@V|uY;ek=V{_tQ z`-;2G0%o+F%@v0aO<1RCe>e~v*cA>$`5=zs#g-L0qTVsuGh@Lkc1;{9*SY!zKa)z) z*P09C*wNZnE9O#6BMnZ<8r8bBa8F-Q>m3NN39e%M2x7FvK#2!Djj2|*i#o`tHH_+E zlp?#1SsTm!&5A>DDNZF*QOrgim<@`o*cC}BK$<>lpK0D`Q@sEmm`*1Sgg8Tq-X`Xw3qRmC|IgDnA?Itj%9 delta 36 qcmeBW>|x{y<>lpK00QIhed!Zvk9gE diff --git a/util/Cv2Utils.py b/util/Cv2Utils.py index af2800c..833992c 100644 --- a/util/Cv2Utils.py +++ b/util/Cv2Utils.py @@ -456,8 +456,8 @@ class Cv2Util: # '-sc_threshold', '0', '-pix_fmt', 'yuv420p', # '-flvflags', 'no_duration_filesize', - # '-preset', 'fast', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, - '-preset', 'p6', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, + '-preset', 'fast', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, + # '-preset', 'p6', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, '-tune', 'll', '-f', 'flv', self.pushUrl] @@ -876,8 +876,8 @@ def build_push_p(push_url, width, height, requestId): # '-zerolatency', '1', '-pix_fmt', 'yuv420p', # '-flvflags', 'no_duration_filesize', - # '-preset', 'fast', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, - '-preset', 'p6', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, + '-preset', 'fast', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, + # '-preset', 'p6', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, '-tune', 'll', '-f', 'flv', push_url] diff --git a/util/MinioSdk.py b/util/MinioSdk.py index 9cd17ff..591532b 100644 --- a/util/MinioSdk.py +++ b/util/MinioSdk.py @@ -57,8 +57,8 @@ class MinioSdk: self.create_bucknet(bucketName) if '/' not in remotePath: - remoteUrl=join( self.__config["file_dir"] , request_id,remotePath ) - else: remoteUrl = join(self.__config["file_dir"] , remotePath) + remoteUrl=join(request_id,remotePath ) + else: remoteUrl = remotePath max_retries = 3 retry_count = 0 while True: diff --git a/util/ModelUtils.py b/util/ModelUtils.py index 26c7086..dc71742 100644 --- a/util/ModelUtils.py +++ b/util/ModelUtils.py @@ -63,7 +63,8 @@ class OneModel: 'conf_thres': postFile["conf_thres"], 'ovlap_thres_crossCategory': postFile.get("ovlap_thres_crossCategory"), 'iou_thres': postFile["iou_thres"], - 'allowedList': [], + # 对高速模型进行过滤 + 'allowedList': par['allowedList'] if modeType.value[0] == '3' else [], 'segRegionCnt': par['segRegionCnt'], 'trtFlag_det': par['trtFlag_det'], 'trtFlag_seg': par['trtFlag_seg'] @@ -81,7 +82,7 @@ class OneModel: logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId) raise ServiceException(ExceptionType.MODEL_LOADING_EXCEPTION.value[0], ExceptionType.MODEL_LOADING_EXCEPTION.value[1]) - +# 纯分类模型 class cityManagementModel: __slots__ = "model_conf" @@ -104,7 +105,6 @@ class cityManagementModel: logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId) raise ServiceException(ExceptionType.MODEL_LOADING_EXCEPTION.value[0], ExceptionType.MODEL_LOADING_EXCEPTION.value[1]) - def detSeg_demo2(args): model_conf, frame, request_id = args modelList, postProcess = model_conf[1]['modelList'], model_conf[1]['postProcess'] @@ -119,8 +119,7 @@ def detSeg_demo2(args): logger.error("算法模型分析异常:{}, requestId:{}", format_exc(), request_id) raise ServiceException(ExceptionType.MODEL_ANALYSE_EXCEPTION.value[0], ExceptionType.MODEL_ANALYSE_EXCEPTION.value[1]) - - + def model_process(args): model_conf, frame, request_id = args model_param, names, rainbows = model_conf[1], model_conf[3], model_conf[4] @@ -307,7 +306,6 @@ def obb_process(args): raise ServiceException(ExceptionType.MODEL_ANALYSE_EXCEPTION.value[0], ExceptionType.MODEL_ANALYSE_EXCEPTION.value[1]) - # 车牌分割模型、健康码、行程码分割模型 class IMModel: __slots__ = "model_conf" @@ -321,8 +319,8 @@ class IMModel: if ModelType.PLATE_MODEL == modeType: img_type = 'plate' par = { - 'code': {'weights': '../AIlib2/weights/conf/jkm/health_yolov5s_v3.jit', 'img_type': 'code', 'nc': 10}, - 'plate': {'weights': '../AIlib2/weights/conf/jkm/plate_yolov5s_v3.jit', 'img_type': 'plate', 'nc': 1}, + 'code': {'weights': 'weights/pth/AIlib2/jkm/health_yolov5s_v3.jit', 'img_type': 'code', 'nc': 10}, + 'plate': {'weights': 'weights/pth/AIlib2/jkm/plate_yolov5s_v3.jit', 'img_type': 'plate', 'nc': 1}, 'conf_thres': 0.4, 'iou_thres': 0.45, 'device': 'cuda:%s' % device, @@ -339,7 +337,6 @@ class IMModel: raise ServiceException(ExceptionType.MODEL_LOADING_EXCEPTION.value[0], ExceptionType.MODEL_LOADING_EXCEPTION.value[1]) - def im_process(args): frame, device, model, par, img_type, requestId = args try: @@ -639,6 +636,39 @@ MODEL_CONFIG = { lambda x, y, z: one_label(x, y, z), lambda x: detSeg_demo2(x) ), - - + # 加载高速公路抛撒物模型 + ModelType.TRAFFIC_SPILL_MODEL.value[1]: ( + lambda x, y, r, t, z, h: OneModel(x, y, r, ModelType.TRAFFIC_SPILL_MODEL, t, z, h), + ModelType.TRAFFIC_SPILL_MODEL, + lambda x, y, z: one_label(x, y, z), + lambda x: model_process(x) + ), + # 加载高速公路危化品模型 + ModelType.TRAFFIC_CTHC_MODEL.value[1]: ( + lambda x, y, r, t, z, h: OneModel(x, y, r, ModelType.TRAFFIC_CTHC_MODEL, t, z, h), + ModelType.TRAFFIC_CTHC_MODEL, + lambda x, y, z: one_label(x, y, z), + lambda x: model_process(x) + ), + # 加载光伏板异常检测模型 + ModelType.TRAFFIC_PANNEL_MODEL.value[1]: ( + lambda x, y, r, t, z, h: cityManagementModel(x, y, r, ModelType.TRAFFIC_PANNEL_MODEL, t, z, h), + ModelType.TRAFFIC_PANNEL_MODEL, + lambda x, y, z: one_label(x, y, z), + lambda x: detSeg_demo2(x) + ), + # 加载红外行人检测模型 + ModelType.CITY_INFRAREDPERSON_MODEL.value[1]: ( + lambda x, y, r, t, z, h: cityManagementModel(x, y, r, ModelType.CITY_INFRAREDPERSON_MODEL, t, z, h), + ModelType.CITY_INFRAREDPERSON_MODEL, + lambda x, y, z: one_label(x, y, z), + lambda x: detSeg_demo2(x) + ), + # 加载夜间烟火检测模型 + ModelType.CITY_NIGHTFIRESMOKE_MODEL.value[1]: ( + lambda x, y, r, t, z, h: cityManagementModel(x, y, r, ModelType.CITY_NIGHTFIRESMOKE_MODEL, t, z, h), + ModelType.CITY_NIGHTFIRESMOKE_MODEL, + lambda x, y, z: one_label(x, y, z), + lambda x: detSeg_demo2(x) + ), } diff --git a/util/__pycache__/AliyunSdk.cpython-38.pyc b/util/__pycache__/AliyunSdk.cpython-38.pyc index ff407b85a7086e133fda720e0e15964b01e30a25..12115632b35d98bb93b688d19876889ec1fb327f 100644 GIT binary patch delta 40 ucmdm^vsZ^Fl$V!_0SK}pqcS$~{AS`c(9g)vP1P^S(61`a*(}VgDGUJLHw!}m delta 39 tcmdn1vqy&~l$V!_0SNl7Zl!PJ`OUb8$cl{0*vRvmg;!rcBR@A)za&GysyJseGwX3hR+hBH;*!m0 Z)pjtlGBGhQF>UVB_^1hGHUtR?0{})d6&U~k delta 72 zcmbPwnsL%;MxIb!UM>b8F#g_`zLDoO3y+?DMt*Lpeo2OYxYuSD*5iuIOa*3}FR1Nc WWMyVzU}D_dtMO42%4`l25(WSXg%kGx diff --git a/util/__pycache__/FileUtils.cpython-38.pyc b/util/__pycache__/FileUtils.cpython-38.pyc index 0fe7fa811c0ac9de0abe367bab06998e0a85a97f..aaeb56714211abbdeffbca3f617019c0483633b8 100644 GIT binary patch delta 39 tcmaFI{GOR7l$V!_0SK}pqcS$~=rZye=x5~Trs|hu=vNizOm<~l2>{1g3j+WE delta 38 scmaFQ{EnF?l$V!_0SJu0_oZ*-(PiY(*U!k$P1P^S&=2>T?8dkf0LXL-~Z7?<>lpK0D`Q@sEmy~PRzW9`WgATsrn@u`c=g_o1>TwWdX>v3atPD delta 39 tcmeBi>~`b{<>lpK00QIhed!x{oS1nG^fU5vQ}s(S^uxV2M>8AB0szV43XT8( diff --git a/util/__pycache__/ImgBaiduSdk.cpython-38.pyc b/util/__pycache__/ImgBaiduSdk.cpython-38.pyc index 99f5be93648436966490ad22cd907b59e7ff82c1..d23b89615575df25ad8b8fe1b2316036f4428e19 100644 GIT binary patch delta 40 ucmZoNZZ_r#<>lpK0D`Q@sEmy~o0)ix^fU5vQ}s(S^s9<lpK00QIhed!x{HZ$=U>SyHVrs|hu=!bi4KEt$K3;@o;3%~#X diff --git a/util/__pycache__/KafkaUtils.cpython-38.pyc b/util/__pycache__/KafkaUtils.cpython-38.pyc index 96daf51ca363d7adef89bdc88d62ff3e6fe3ba60..cf98166197418a67123458b6a6f78f034d2f3724 100644 GIT binary patch delta 40 ucmZqEZ`bDu<>lpK0D`Q@sEmy~Q<-=T^)vEwQ}s(S^s9<lpK0D|wkpQmr+naadtpr4VSo2p-up&#zGc^%VD5dh+k41@px diff --git a/util/__pycache__/LocationUtils.cpython-38.pyc b/util/__pycache__/LocationUtils.cpython-38.pyc index e1d16ee5a967df745326a8cedd0ae12a7a3c0cda..fac7f958adffe78deb80fc8405b473f3920132f2 100644 GIT binary patch delta 40 ucmcbtaYchCl$V!_0SK}pqcS$~oMz-T(a*@wP1P^S(61`a+5DKXKnMWk6bw)R delta 39 tcmcbjaan^Wl$V!_0SNlD*Q9UcInBspte=seo2p-up&#zG`3Ylz5CG%W3?Bdh diff --git a/util/__pycache__/LogUtils.cpython-38.pyc b/util/__pycache__/LogUtils.cpython-38.pyc index d6eeb6e0561a243b4ac8cf84f92deb9ca71bf888..b0a3afb99bf8c775c3fc2d5d74f4aa4866c22d91 100644 GIT binary patch delta 39 tcmdnUzKNYDl$V!_0SK}pqcS$~>}BHB*U!k$P1P^S(61`anS7P$4gkZ93*`U+ delta 38 scmdnQzLA|Ll$V!_0SM#_kEd_s*~`SEr=O9Zo2p-up&#xw`5Mz50JRGXBme*a diff --git a/util/__pycache__/MinioSdk.cpython-38.pyc b/util/__pycache__/MinioSdk.cpython-38.pyc index 1d3dd41489a34cd94d211fdca69bb23370d734f1..a7fbdeb4497753c45116c721bda1ad2720d3b5c9 100644 GIT binary patch delta 373 zcmW-dJxc>Y5Qca5zV^P87!!p=v9!8Iun@GBv?8dWHmih-Mm)C)vnU2jA+U{hdp|+) z3;Yv;jfkb4je>=^xhY<9u zUGznQFox2W!LZ;CIs>G zs#_S90E7o~<5QeLIc4m6#-t}08RRa?Rk3{he#9YK9*iG7FXGL)6NU9Z_NJJ1ujC;UP z1lh<3@F5KJ4GaX))ZU3KsDl2A{(idO+CS}RD-1m_wK(k`EsQ-!zYLd(>!3ZDwLUF; zEE?|0#k#Z!Qb$;mKo+swQqD>8kFlI7N7R%nY{kz$2(()Qg5-p8 zm_i*{}*jL)+DC4sQszV~!(wRF0+Nf|tyodJ9UXeBlw2 zf565;1v1es3Q9x}KKXQP}4@kxw|IX-jvfS_W8vkl@R zUIWEtTTh9&vKm7-l&G0Vh?7-X#>vU;*KRSpGkjV!b3i7$J5{GfNd-xa-V@XkAk&0@{FDqg)WYZQ~gi?7)q)HrHk diff --git a/util/__pycache__/ModelUtils.cpython-38.pyc b/util/__pycache__/ModelUtils.cpython-38.pyc index 2381de6a69f41e61242d0fb4916e23b9a05c29b7..c8d99ec1eb1aea857fad63ddcde59ac378f6d1c7 100644 GIT binary patch literal 24917 zcmcJ1d3YShb!T_aOi#~=!9kFqC<5(|`1|qWle=)c=NXvJd~In64;H zVQNlE&{4~&c`c#kT?v;;=dPSP?@4$>Sk zzddogXpiLX$lsZ`Q;B@C6%0HZV80F20cOO*P7S{8e!g?08#3MM{ z%5K2f4LExb+s1BuPD$)$+u2Pxz89^%>}IsyjMhEu7IrIY_oDVTb~|csN9{g#2fGus z18fJ2;#qa4^Okj0yIbz=%tXV-Ci+gK>;a2#jMA(zUtpvpM#8~3?O-HWT3|4V@jeG5<6yjx zO$v-DiSf9DG3{VH&awhyMq)hSV4QI0mtNU?dqA z7$u4Eeh0&JFy7DR1jbp3k#aE3IT$H+USM317^fYKc?aV(ds<+WB}Ur8s5lsDc2Qt_ zKw>Zl;~58ou@4H2XC+3)!B}uG#@KTL<3kc-(!qG%!I)(KL14TfF{T`h4?7rB>_vg` zlEj#HFh1g7OtVV@<0m9W*1>q$!N{^#1ja`t#*BmUlMcoV`W6|I1LS-PiJP$ zY_TwLVKxJTzN1B!$NmIia#Ou@9eQ9Y7RO=SjisZuFBdBLv71(B(Ynarh5XL89D z=cx-Nt7}P3l4a8--DfG2%cRXD%TTBDT3_G1udlCvU?i74y)&v?{(+I?EH9=rrIOWN zD<{E@Ov$v#&K67Nn2nR1P4Sc!D5kl*Dp+?_%&I>dME|~$$sLKk>@=UF3x-)s!Ml9eNbB-61EM=yM z=+M!zxae_yt956a~64C24^4OLNIQRjccR2EgHmfbTN(|VM$ z>oR;Aapvk#OjlW5P|KbLtzwjoMK^OZ&t*-N^vkL^dM~RkMN=xiioX&l8_eiYDnT55 zIEKn0=EpH?dIWCZGN@JB%55_`3!ZURBESowz1{Sd+gW%)d-?uKhiNSO@b5Q`8UGBf zxU9b1Rp~5uE(XgTi=oTPWwp|ELU}-WOo=Nem0Ah3+Hn5{^TH;#?WR%$v^SMEy`u8% z;)&YP(s4$^dC&}(H#xYSm$XWEA!4>Isc|!<(p`>}+wc@!pd7;UZ^BcDSU1jyUz189(mu_f>`dFghLVCbM(F85y(7+%(f|_wAH=dz1z3S@jfpKM8LX z!f|*1LOo=BYW%xe@lr)0L|lNL_UUSZ)$5OD~$! z8D6ryVlt+tSS8YralnUZBtm-`zHD*MZr~7p#Zq@!fmAM6JeOfdvQRNW+(SGw z1x-2#ofj~zm2jSgL;7)+IsPyLNF2C{mOZGUu@s(%a_|liY`;|{WU0E_P^bFC> z+=GMVhQ2CVp0lakT*h*hOm4ZLgLp)=nPdvw#o0{3a^ayYZ+xy`X7d=zBf_{?p5b_W zG;VEXnNo&lQ@QMXCYhdNsbr=wl`Y^}o=Gu&6NvH61a2m>K4~{BPlod%=OiRNK!CK4 zwb?d1M@9#RMq&q(!zTxa$0kNbW6>VV4O`&wj~Hh8q{LYUF-RCMV`_FTN#bM~r&Fa2 z>dmOOSyg%6QkdpD^7zq$y9DC)<0)vbNxrjLL5V> z)Hi#fWyDXgqP*k@XR<&zxtxLU4HN;<7_2YO8{vtT)fE`+g=GHV-!x?I{ ztvKTE`+A7#oWHkqqYJnZHK_Wp&9_(eeqXiEs2&r)D;~NJ;!84V`IBVC=5kaHCX-Li zrE*S-FPSXmie@R9qi*aHizm>pk z0PrDd4h@e|wG`kqP4DWDbTGLB9(%4r_C;0EJhbfRO`Ffo^CnPLnP}qpdq*XyK~Tq>0*9%&uN^Ck=J4A=kIMY zbW-;EcIS%eRIaoKh3e&&E+$n8J^Dn6lr5j4?)DR)2jw)v(ST59e26NB36L2RV!_9# z^cVpW!J3xgahyimIB~{S$U*~8(CIM(#|fMuK-17>g6R7col17|Svq}!KqDi>q#)eV z9RLa@VRahYli0wd#l-xv?(Ra1Gby*N#-r-|ZTR!Cp& zmvK^79(PsLidKQoM$#a>IlBZ;4j!7j;+gMd@DNO;tWCk=gI@<1vPYS6O{o>Vte=2* zLCRG~`HZSmys9#9l)cZY|54SQ|;Sm+W;j)E;UqIWku?(S7Xt{5quyiajqU4*a3?nJL zZH#3_pMSJElEmvWMgh=+BlKKZ#}RrC5FWXyni@**$rs3O3TJQ3JpjP$#)VUJ!Tu>eJELNbx|bg4%;C6 zSavFF9w-*fC5}?mV1S>@*mH0ld0By?Og7DQgz*4QKt+jJ5K4XRvM!}!<#-EcRE#zkPK@!#;%akdZt zrL|+giF3u3Oeu+^R2UQB4GgJrS*aNF|6;0(h$#`$xEex07m1tcmLZ@IVVnl=CeHU=#y0K_{F;2)Gz3hZn;loI~KV zJe-5VX$L(DBRk3+B8=?B5h7dZ!ZC>BCIo~KK?H;prnMuG@|QaiX8A}2%iXN)H3MOn z8$p+buxpbrz#(eXW`^y))`AUzPDqxkXr`Cg z(6@G=p{hMU^Tsc}^u|YCee;uFy!y#6GzlT1-IkjIfu?3RLU(nLz##%71Rf=Dn7|PN zM+w9Tj1mxYWpzWnMHp(!YlnjO+2PWP##&4-;q8m37xQip^+dire;#Ftx-CuLX{n~tcbplFNh0Rug8g`bO^_PlgihNNXn4P*JmQ{2jxqVlwE3wq{LmfHC4WmWy)8$maUGf z_%zsPOTvsS3BeG~dmeSf=vu^dXKjR}UT795@dA-65@-yJ_yGwdmL^`-pn^yJb@<<6fv$F|z*4CQOqmQpsZw*?LY8$ks4;6m= z3-SK~3QM(S(=cg=Gf8M6AKpQeaLHTtI=Ybb99+$cA;Kj?hD*jpLxxM_TK|e8?(Rho z!X;gbyJjL-nh{gXDJ^rG`BS*@sNWv`Zj{%nvk)LPb7E(S1dXlbDVZs5@^e%njO`Nr z7D-R13WZE=XH~U@$#Tugv>Vs5N)*&!GOUWoZ^ zYYgf2F{3Vv38@yg7x^8LyYWI9eL>n@WI;`zR7QRiK^kl?@&ir@0aq<|BkncW)b@s! z+FtVU#d7JAyk=Ch-F4yCH#2jgmCf7@;9M=ruzXk|w^zPbOA2nt;_XEbmf_s_&YIA! z7(ZawmQvb*s~Rm{P(%#DWtl8L0u0t1i zM~<$f34)+3HNhX_Wd0S*r)4Yf%;i`)_Zf}vfF;B#1{VBv=6%fte;c_xQG!Kd!Lr(| z&|W{RDI-O*sAK+PB^+rHSi>3bq5+GB93ZWRqb?wNYsWgjM(g}ym4nu#jY%DA&^|{; z_%X`A>x{Cp7+@V{Q0j<~8J=mwN=GL~*)CCDv2g{uJ`G~INex&YvCU!rZfD`Pe-`U$ z_TG>FnKSwR=}anTPA4zGnw@>1lsvnuZzgMAC0T~mydMY4$mXY#VkuKAr04HifsW{9 z2^o=dbWHJ|?Vb9auhZ|(_s)B1jq{P)OHnM_i{H2RPVExEKiUiF`Zd(?Unfw@(ok?` z1?^5)mNstK2_Cw`ISMvcT2!|eb9-xBKdSdHwtx@^n%#Ntn=icb#*3frU5RSrif}Dz zh(?x%3FLoSfw3b46T|j)Aj@MGd3svhzU2b5VVAMhrKVo%^5|kllGNI(Ex~oKwtRuE z5t=?hB{At64Yyccc{fc*a;_9iMSFS0jfv^j{D5Stk!pEc_k}5*7Hg>8wWXGbGuJkt zOn(&}J-AGnQf-4W4WU9R({JDe%2cnqts(*cBvdJ)g9Qy{*^4bQuCf>IrVkMVCX`UG z@Z}w4i{%zfLa1BjzNBMnYPix5cT=S8nGOduV7i#M99W=ID2Z@tl}(HHoJR{za;- zF5l7Oyr`M)yvP2LL$~XJ`{?A6T7t!1(+l!#MBzpP+X0{mIK0bsYx$6^<>%;nntgTN zgOIKXqUnNez@C#78^Jb+lI6zMEM|G&K+{$f+JUt{l|Iun!trPGRii*jamQVZK<3C< z3?pCTzoui&-d|nCsYW?pMZe2T1cC%*AO6>N7u)xzvTSZ3D|XebWGqMmrLiElasDIC zj0Lu7>5x2Z(n7Z0F2N8$#%Li<6Ipy6F=n;olOa=6 z&z7Vag^t9MtWu)9x73j?KlGzp-LCqfru^7hqLa2nmQlOr*W^<4)@6cL)0AF&qeyJ! zmFTabzo})al4{d*E7c#xH#8Op@n8Bl092)?rYf7o_)OhQk-k>Jf>Ol`MXHM!-@uV# ze4mK%v9LtKR~O?W`avY*qIllanE|yK#5t6!JP%V=FXR1e%Ti0qPqJ9;q5>@cuha8b^`Vn-{U;1YRU|3ozx3 z!G}zZ#%TsQ8ccG#B=(?ehGE3`VzQTYw9@)CRqf%Rc}VtbuSx;fU4 zq2Y<)LE5ZV-8DUNYHWBsIS?OC#zrTSa2W{WdtUze*P(-pNdEJ#WIEH#SRax;}=V#toM zYZ)H8YN@RIipY_Pneka-1q?K>nwwX?WxaDo8hpNB(6LHuA_O_FRyRm*KV{ zr>M&8Br-2BuyFL43)x8*^cdx2bZD-iiTQvmqZgVdKpKkjGH?(>*awYW8Rf9)Wxh); z?1LtD`WVQY99TZQ&|5zo;~Z7pHCvnSWyf^Ucv*UD;*l(?<_QRA)4yN<9l+Z1GcLaMpX#&WRmX=Ly7jaj2*G zfq_9M(7U2r>Um4OV1b7!wlB?F>h#hPF?Q!t`O_@5=YQZn{|%HB{vCh@e!EaXnoZ23 zAPUu6S^y9Ew@`6K6|?V(i~kkQ_+JxvgFxf>3)24+9r3?IV}k`kCHxns4|;y;V*&5W zROw$t9l8QH?L%oKfqos;OpW@r0>(fIKAMDoBu{HPr@^KVmQlb-)r_Dp=L z{?_IhzY1Lb_XL_y{f4B9g8Wf=RW4ls0{=$>O=$k9r1?&HgaPg);zHy)CgKAJ4vY-0 zhe>}fyKW_uz9p#=W2!$YugoO=4`^PIMSm$NzEc)KjDD4R5G?8$9vc}NJ_;U<#fOg% z$An)YHpj0hPJbisVExa8dGXcNp6X3WvlUOp|1-wh!oeD*58%Awo+ohC#kNVI~d&$t;U~!l{8zzpUBwo5L91$WFWQ% zi@q;AZY7I;AgQjOMf`uS#-JZciY;MKc>L(-!2=@*2v(oTKa$J9uO`K7In}S$HI?^GJiDww-}i@(4TWHtb@oE70 z!_Ytnhhu}M){vyFvj2_oYIPreo20saPOYwnZj=S(tRtI-JD)vfEa&XGl`r z0DD%A#D*osmar!@Hac-=bj?uyknFXU+<8<|Z54M8ON!UQo#&+i3p-xWTK0WZcDph5 zz)_^s{E8{e$0XhLGYB+aSj~LJCC%$#QO$hW4$xY*{kZIOV+>l|J3J|=uAe=tCofM) zir2xMNhv?wb`E?H7Jg_wIo`)*_pM~plalHN*tDt(l#~?TDVz9riAmok&?Ezzmh@Z6 zhm54U0Y0qi>`Y3E@01S>OD1jOM+f2)<0I8=hAZ-CM)uoE{^TUp4e)1GImt_kE#Xfn zer*5#k?})oxXSdddh0V{rli^`?#xMwE#Xd>5~?RgK^&%ErmmBLe&R9nTKillfQ z?CB*9BNi<>t7~oJWAK^R;L!(V->u})f~2|u9<8c?o|6a19o{AiHiQ zi(ZseTg9T6B*p7s(WDfkuBsS~+4-^6qxP3&=dEPYM{6QsVeE_QgWMX}GwJ7^`R zJ}arVic^bKiqRszs)vu8>a%z~GncVHB}4a)mpyqZojFbW%f-IGXK9+fPA&B5);T^W zHU?U4_>xw>Sm+xp7Vyq3_P-PBt&R-#{gwLm)8@@_c1G+16x*3Q?FRXYJ<&oNVl1ac zY#FDW_@afZgV@Mu-5}qI>l>UanfP!Wmqf&#dn-cUtLq!dPgQ&6w3$cjr?%Qe+ZcTg zPJGMG-s(yl!?tN~d2VK%2_ASOTG4igw&A zR$2a%PKOEn6M=sr@I3-zlLc+a;%^c7K7s#3;0FYLNZ@S(|Chjz2>d&N9}~Dn03Q>< z)@A~DtpwjeBH$)~m;4lKi(?58;|+~JS|8r&go96j;aiRbd<6Ui@cDX$)2oOaAFs!| zP(md-9~G{PgG5A>#2r}1Zj1#!JV;3~r9@kR46!}cz`o6(7Q_bDpg0#_G}Iz$uc)!> z?R}j=)$I=7AMQ5Vj4k0EMtgWGN}B;A;q69ec#9D>It;%NF+%i~h8zF-kF@%-QCIJ^ v%Xp{gN1DF8EUtBMMA^al|5mQ=Ydz)q`&kKpJvj9|sV}cYb3OIXD4+X(@UOxk delta 7790 zcmb7|3s6+o8OQHgU|n|EWfgE)Kpuk10s?{vA|Ze*y2?uy>LVyF>;miTgPdJNEr>C( z=3$#mPiLCxv>i>;HaIpmMbkE8>uB0$YLdpuR2^?(6H~|3JZhUJO>EOi&v!0+_rczU z%g+Ay-gD36cfRjC-#M2n7t#ODppqV~R?X4Bdrw~)>Kx^`zrs!EUoE|9pkLp!2``lV zFhT9i+~Kq%D`$Fg`k?ZVLiJn3aZjNGd#9C&Yf#}3H?Fc9jG*aEjYiI%@%_XJ!+7fW z;&H>cW;}6RZOb&*8LL7Yj-0?;BEPu+w+<4rHIC`JzPusJ2kHWsh$jw}38@Y!S zhtYP zcqc9UPkGs}*X=0t50`D-M5=Ud4N@Q_d_Gquk)P=tX?@Tfs)op}=@rT6&;}TTSB^QH zL&JVt1yw2o^`;cOqO_b>u@O6MIJ7aeQrEfY+y=bvk$M{`TG(AR2rU~yV0yTTib;bL z;CeksGl&@^52OR6ljIer7`D($Q!?&?k`j>nK&<5BW$D!nigmpW3X4FBLA)TnAi=5a zf?JsGHd3;vr(}2dQ&x{vanJ`n^y`bKqC)Ws>>#Le3AwcBj0U)c&Iie3DP|4hWV7fb z*Hc!YW`a@+a@pvB#VfJHH|p~9$QKGi%&C=VAMG@id^7bqH!557acKCnH+5ltdr;e*WWzsR^dDdl#&A9{>tqyz8(EQNu~6o8}!lu_V^QUeoM`ryh_-5FlmA03V`PrX>6j6tD#q;rBdvz~&K> z7W6_|I1JD317T^QF6e04x#2SD&gqo)=@B}}>+~D$(<9{1Iaen~Xt_x(%wRFVNSZ#} z^3+q&7Gp4pB>4O`?8ked&uD8>KQL_bc!()agWe}qdHLul*`D_XY9gkkJ?L9xa_KkF zw}~>pI}L{66ULl&|1hr{7V`Qw;?2)M$H?RPMWrmhSoB52LCTQB-xraL{!QM?Ux}us z^#xAU%$5vWTG8C9m3C_;OiJ)A`OUKIuxu~wRv3;~*&PFP!^0Ign6jjns-CngZQ)U)g}yGe{maRiQHCFDg^uCi0=FO8Ij@e1R-4I%N<&W73DN zFmk7;LK(TRlA`Xnh11X*bMtn%Vpa(c6}G{yBTp3fNL%|fZCf+T+NY=WB?-uMhCZa3 zEx0p40X_?*3Of==mPa!>a?}A9u+{|AC04O z>!p{1SGED_CtRceduBP|B3ZZU*X2Nn z9|eI^$$^C2^3t`{_;DzpEjauH$kS9z3-I^o56P)WYt}*G2`Ee!toRHR{0QV#kk>$p zL7oNqG00Cqj)D9Xz;msT@emr3sXFQ=5zPVH}7WdisPn3VM{#uCAGcLs8US5{^vt@ZzICyi(|e zj~m4dx6Y5j8La2}b269KD@^z7>XohAV)cjDQ zIxn)I8)VJ80!fH>9ewegS+w(@QwWvmf^D8fm(tk2q1D`F-D+uTGk48lzyzVA`MG$397L6f7+6FH z$-XA(oT8CKqLo9U6G_(180)0C64cg>md-hBv``LNib%$m0o{6^j}>OAB3s=I+eML0 z)6{5b?wJG5Ai@R4W1EarGB(b_yAlg8L&OU@@tS$5WKLcp(g;Bub7RO6S>_S(xgrVO z7QSf7mPE*xgRm?DA?CKQTto;M!$Gn(=17v5B;?At6ImGyEE8ss1}iU@&_I7p7S8YPWkmP4{3f+XgC zwJ{3G`L=XPlFf2R+T@V5&muWOZnR6=q)Q|TWU%WH`%)RKTVx4TKN@SP^oTTcsod+3 z&KuiBjCrK42Sf;=a?GXDDhsWo|^uNp& z^2N@w$rDf^7lciNz41-JEqe)JZwBzMaLm^36kMGIVP_@wHgo}QFM`0EIA*65cmc*N zIj}R%U*NVGXob2tZF;wadD!nRQSEyR3%TOh&3{)5Da;AUZw*|!= H;$HnfnXKC8 diff --git a/util/__pycache__/ModelUtils2.cpython-38.pyc b/util/__pycache__/ModelUtils2.cpython-38.pyc index 29b6a095f5137e6f2568481e65d42479933b1cc9..4454ceb428ddfd5066acbd7f8c701dba963de555 100644 GIT binary patch delta 40 ucmZ2cyRw!il$V!_0SK}pqcS$~h;Z^6>1X8Urs|hu=vNizY}VndF$DnNCJS=_ delta 39 tcmZ2kyP}pSl$V!_0SJu0_oZ*-5#i)9)X&JzP1P^S&=2?8tjk$r3IO2A3se9A diff --git a/util/__pycache__/OcrBaiduSdk.cpython-38.pyc b/util/__pycache__/OcrBaiduSdk.cpython-38.pyc index e8af1ec8b708217c1d35c6be920526238bf9ed17..28f0de3d102d3123acdb4cdf1f77f2104438f5a0 100644 GIT binary patch delta 40 ucmdlhy-%7al$V!_0SK}pqcS$~m^1Mj>1X8Urs|hu=vNizZ1!i$;|2iB_zKwo delta 39 tcmdldy;qtil$V!_0SJu0_oZ*-F=yg2)X&JzP1P^S&=2?89Ke*v4FJs<3c3IQ diff --git a/util/__pycache__/PlotsUtils.cpython-38.pyc b/util/__pycache__/PlotsUtils.cpython-38.pyc index db1443855b26448c981870810f33293bb8c26824..2d02710a69b38f8f07b47445e4423483a8f77f2a 100644 GIT binary patch delta 1032 zcmY+D&rTCj6vjK#>CnHXwA4VLC=rASq=ga}s7OSqr7;z-1gJ_G%8(YP(|S4xZ7@86 zXmX#zxFVJK0J?IaJO9iR=*9;iF1+8gMrhLC{pNh<&OPVc%!kpBqyFVU!0X_@owZ!? z*ndqFEH*2C4h`|p=|sF(DQj`F7;n^cHsD+phFQb;o--kh_@X?8kVjXUCY9we$SC_R zUGmw{(Uv8;6d}_=ejZWWB*BQW9XTEvM#M|4tq6~^w{oVnzx`^dV@{Z5>5gxM zQ%FFuifnmHwUSXYRimI;l3uErbP;Zd&ADgJZGYt+6c*V#_gDE25~kQ|Ph{mTF=)&$zM{_zY5Yt4S|6)|cT zizBnAuFFHQ#5M)673I?sTldF?79m3bPNHR?hr{wzD|%fo8Cs1Z?AYHeq}V5aROn?t z{VAc3O$55nb(jro2)oUbz>Ii^^WF%Sr0$n$6vPV!0JUW45#;|Op5XBUumn8jP<(bh zmakAT3aY6Y{7>s}?OM;5NqHC%U;|Jcj%kO|Ln%CLa^!-#x~b`Tl}N4Uw@L+*w&3*w z8iyqrYFVQKq}V93li;LMh1mx@0|=-ACSZ@bJ!^mGj&RW2>--_yLfbLB)n7iO?Ez?7 z5nExbNWzM4u|90CFW6D|hHQ5kVqd~Na+n)bXTQVgpbq&ISOHd9s_Xi>*}v>cA0BZ_ zab+?Y@^F<@M0=$XgwJY;ay*pDB$a=Po+BsRx^z6R`4O!F=pzlnKuQc=<@XD7aBqrXcosli+?>zUMbJyqGwqJ%n4||rpURN9cMSt%< zIq+N&g;h2!e)9);>Ub|y%1WSX9KnsVTkS8K5<5+OYUCYL1?2vwl0;GVaQ%~ zDD}I|>}9KDlT{(y7?Hz*w~uF32T3T5uuUb@K7@>mtgT3g*n1^u?Qj0IY@ZQg?56!^ za2yTrsw#%7SSxBZJ*(yNhEyunbm~Oa&*F}$mhG<{K_SIHIDRP8Xc%X2oSnjmZJsMGEL#}2iTc$a5B~TIT5kuULSSQf*`p0=*SZVaTE{J`m zS==&xET0=3jjWRwTVbCTS;jLunS%5KxD%y;GaQDqS}ARpidw!#9a!5J63LlNEN0lN zTY5TQ*VQhXWnVpgLJvFg%mvS)NzpU4;!fTWt6_d|Yt?9rwI%PGpf^5xr^G$DdM6lC zwqC4}k1t37;5bdIkpHdT$MO`g2;AdP-KJ~9ovUcMte)5SMGsIlCu$vr9-@FTC0hU>!<7&$*x8E_p_mY=XIhjn7ldHHYnvpIdeNszwm#31+xcX1g7J35Ks~~Gz zmdR&wzl$V!_0SK}pqcS$~Tw~-l)6dAyP1P^S(61`a+5C?21_uD$cMOIA delta 39 tcmX>udQ6ljl$V!_0SJu0_oZ*-xyHz2s-Kaco2p-up&#zG`90$e4glTo3}*lU diff --git a/util/__pycache__/QueUtil.cpython-38.pyc b/util/__pycache__/QueUtil.cpython-38.pyc index dec6224b87ac21779eed7fbc93337f635dcf8dc3..2a1c887e8880b4e1ff1856147849b12917e01b5d 100644 GIT binary patch delta 40 ucmX@jeTJJSl$V!_0SK}pqcS$~cro(o>1X8Urs|hu=vNizY))d#WB~xo=L+cn delta 39 tcmX@ZeVUsml$V!_0SJu0_oZ*-@nYoB)z8S!P1P^S&=2?8oXnWX0szha3d#Tg diff --git a/util/__pycache__/RWUtils.cpython-38.pyc b/util/__pycache__/RWUtils.cpython-38.pyc index 28455a7bbe91d063e400d5d3df2b444c13f1ce15..b286ada9c00a4bb5659bfb4d2178c7573c76f835 100644 GIT binary patch delta 40 ucmcb^dY6?al$V!_0SK}pqcS$~G&1t)>1X8Urs|hu=vNizY@W&J%m@J0T?<42 delta 39 tcmcc1dWV%Kl$V!_0SJu0_oZ*-X=LQl)z8S!P1P^S&=2?8Jd4qp5dhXF3nc&m diff --git a/util/__pycache__/TimeUtils.cpython-38.pyc b/util/__pycache__/TimeUtils.cpython-38.pyc index 1a50bb9d55a7ff9d845bee6842d044535b3e073f..e08c3ea70dfb35e39fedd8091c23db34a898bfb5 100644 GIT binary patch delta 39 tcmcb@a+QTAl$V!_0SK}pqcSG)eB(9H&&bbB)i24=uPV;j%*W`)2msOb3jhEB delta 38 scmcc0a)pH_l$V!_0SJu0_oYwd`NpHKpOK%Ns$Y_!AMUl8pV5sG0MX$J;Q#;t diff --git a/util/__pycache__/TorchUtils.cpython-38.pyc b/util/__pycache__/TorchUtils.cpython-38.pyc index fedd5ab4a26287a97c5bd066c791793d20111da3..6189ac3a4f9a504a0c930954a2d0a3f28e82a857 100644 GIT binary patch delta 40 ucmcZ{awUW(l$V!_0SK}pqcS$~{AS`c)X&JzP1P^S(61`a*(}WLpbh}?Z42!H delta 39 tcmcZ-ayf)2l$V!_0SJu0_oZ*-`OU;*pr4VSo2p-up&#zGS%ld^9RTtz3(f!l diff --git a/util/__pycache__/__init__.cpython-38.pyc b/util/__pycache__/__init__.cpython-38.pyc index bf6d77c1939c0cf5f5a336b3b3eace9e144a6668..c5035f42a362f3719432f21b6b787b78c692718a 100644 GIT binary patch delta 37 qcmeBV>|*2z<>lpK0D`Q@sEmm`*1Y=q8Tq-X`Xw3qRmC|IgUtY$FA2E- delta 36 qcmeBT>}2E#<>lpK00QIhed!Zb8$cl{0*vMnV!E2?Tk)NBYUy`9;Rh+Zgiz7LN@z&;bF-ut( RRW^qtaxgL~PL55A1OP|N6Ab_W delta 61 zcmdmflyTcpMxIb!UM>b8F#g_`zLCd>gU3=oBR@A)za&FH+-tKpM{)>b)aLauOIa9| QH-{#2FfuAkj!TLJ06V=BZvX%Q diff --git a/vodsdk/__pycache__/AliyunVodUtils.cpython-38.pyc b/vodsdk/__pycache__/AliyunVodUtils.cpython-38.pyc index b78b4d4655da13b61cbf77b844d5a2e87382e4da..397a407aa02c8a5b06aa97c94fbb96102ae84820 100644 GIT binary patch delta 40 ucmaFm|Jt7?l$V!_0SK}pqcS$~EM(#}*U!k$P1P^S(61`a*}RjkQCu;V^rBZn^O@av6l<`7Mw5cGS=L;Z~W+*JLN4E?I&oQc5}05t~{hX4Qo delta 66 zcmZ3;*v-fr%FD~e00e8dFk~=HrA;+KJbMt*Lpeo2OY JxYxu?3jmNE4W