o Jɔf@sHddlZddlZddlZddZddZdddZdd d Zd d ZdS)NcCsv|dddf}|dddf}|dddf}|dddf}||d||d}|ddd}g} |jdkr|d} | | t|| ||dd} t|| ||dd} t|| ||dd} t|| ||dd}td| | d}td|| d}||}||| ||dd|}t||kd}||d}|jdks<| S)z&Single class NMS implemented in Numpy.Nrg)argsortsizeappendnpmaximumminimumwhere)boxesscoresnms_thrx1y1x2y2areasorderkeepiZxx1Zyy1Zxx2Zyy2whinterZovrindsr8/data/xianyang/code/FateZero/annotator/dwpose/onnxdet.pynmss,     rcCsg}|jd}t|D]H}|dd|f}||k}|dkr q ||} ||} t| | |} t| dkrStt| df|} t| | | | df| gd} || q t|dkr\dSt|dS)z9Multiclass NMS implemented in Numpy. Class-aware version.rNr) shaperangesumrlenr ones concatenater)r rr score_thrZ final_dets num_classesZcls_indZ cls_scoresZvalid_score_maskZ valid_scoresZ valid_boxesrZcls_indsdetsrrrmulticlass_nms#s(        r(Fcs(g}g}|s gdngd}fdd|D}fdd|D}t|||D]:\}} } tt| t|\} } t| | fdddd} || | jdd}|tg|dR| q&t |d}t |d}|d ddf|||d ddf<t |d dd f||d dd f<|S) N) )r)r*r+@cg|]}d|qS)rr.0strideimg_sizerr ?z$demo_postprocess..cr-)rrr.r1rrr3@r4rrr.) zipr meshgridarangestackreshaperrfullr$exp)outputsr2p6gridsZexpanded_stridesstridesZhsizesZwsizesZhsizeZwsizer0xvyvgridrrr1rdemo_postprocess:s    $&rDrrrcCst|jdkrtj|d|ddftjdd}n tj|tjdd}t|d|jd|d|jd}tj|t|jd|t|jd|ftj d tj}||dt|jd|dt|jd|f<| |}tj |tj d}||fS)Nrrr)dtyper) interpolation)r"rr r#uint8mincv2resizeint INTER_LINEARastype transposeascontiguousarrayfloat32)img input_sizeswap padded_imgrZ resized_imgrrr preprocessPs$&"0 rXcCsd}t||\}}|dj|dddddddfi}|d|}t|d|d}|ddddf}|ddddf|ddddf} t|} |dddf|dddfd| dddf<|dddf|dddfd| dddf<|dddf|dddfd| dddf<|dddf|dddfd| dddf<| |} t| | d d d } | dur| ddddf| dddf| dddf} } }| d k}|dk}d dt||D}| |} | St g} | S)N)rYrr5rg@rrg?g?)rr%g333333?cSsg|]\}}|o |qSrr)r/rjrrrr3xr4z&inference_detector..) rX get_inputsnamerunrDr ones_liker(r6array)sessionoriImg input_shaperSratio ort_inputsoutput predictionsr rZ boxes_xyxyr' final_boxes final_scoresZfinal_cls_indsZisscoreZiscatZisbboxrrrinference_detectorbs.* ( 00008 rj)F)rE) rKnumpyr onnxruntimerr(rDrXrjrrrrs