a
    d%                     @   s   d dl Z d dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZmZmZmZmZ G dd dZG dd dZG d	d
 d
ZG dd dZdS )    N)	gradcheck)assert_allclose)infer_bbox_shapeinfer_bbox_shape3dnmstransform_bboxvalidate_bboxvalidate_bbox3dc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestBbox2Dc                 C   s   t jdd||d}t jddd||d}|d d d |d< |d d |d< |d d |d< |d dd  |d	< |d d |d
< |d d |d< t|sJ d S )N      devicedtype   r   r   r   r   r   r   r   r   r   )r   r   r      r   r   r   r   r   )torchrandzerosr   selfr   r   ZpointsZbbox r   `/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/test/geometry/test_bbox.py
test_smoke   s    zTestBbox2D.test_smokec                 C   sJ   t jddgddgddgddggg||d}t|\}}||fdksFJ d S )N      ?      @       @r   r   r   )r   tensorr   r   r   r   boxeshwr   r   r   !test_bounding_boxes_dim_inferring#   s    *z,TestBbox2D.test_bounding_boxes_dim_inferringc                 C   st   t jddgddgddgddggddgddgddgddggg||d}t|\}}|  |  fdkspJ d S )Nr   r    r!   g      @r   r"   )r   r#   r   uniqueitemr$   r   r   r   'test_bounding_boxes_dim_inferring_batch(   s    6z2TestBbox2D.test_bounding_boxes_dim_inferring_batchc                 C   sL   t jddgddgddgddggg||d}t|}tt|fddsHJ d S )Nr   r    r!   r   TZraise_exception)r   r#   utilstensor_to_gradcheck_varr   r   r   r   r   r%   r   r   r   test_gradcheck1   s    *
zTestBbox2D.test_gradcheckc                 C   sX   t }tj|}tjddgddgddgddggg||d}||}||}t|| d S )Nr   r    r!   r   )r   r   jitscriptr#   r   )r   r   r   op	op_scriptr%   expectedactualr   r   r   test_jit6   s    *zTestBbox2D.test_jitN)__name__
__module____qualname__r   r(   r+   r0   r7   r   r   r   r   r
      s
   	r
   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestTransformBoxes2Dc                 C   sr   t jg dg||d}t jg dg||d}t jg dg dg dgg||d}t||dd}t||d	d	d
 d S )N rha@)\Y@gEx@(\y@r   y&1\@r>   gKw@r?   g                    @rC   r   rC   rC   rC   r   Trestore_coordinates-C6?ZatolZrtolr   r#   r   r   r   r   r   r%   r5   	trans_matoutr   r   r   test_transform_boxesD   s
    $z)TestTransformBoxes2D.test_transform_boxesc                 C   s   t jg dg dg dg dg||d}|ddd}t jg dg d	g d
g dgg dg dg dg dgg||d}t jg dg dg dgg dg dg dgg||d}t||dd}t||ddd d S )Nr<   )Mb?m4#T@rD   rD   );Nёd@Mbp@gW/'@+@)ʡE]@窂QIb@gMbp@K4y@r   r   r   r@   )rC   rQ   V-@rD   )g?rS   gXu@rT   )Zd;o@rV   gPnx@rW   rB   rE   rF   )r   rC   rC   TrG   rI   rJ   )r   r#   repeatr   r   rL   r   r   r   test_transform_multiple_boxesO   sD    	z2TestTransformBoxes2D.test_transform_multiple_boxesc                 C   s   t jg dg dg dg dg||d}t jg dg dg dg d	g||d}t jg d
g dg dgg||d}t||ddd}t||ddd d S )Nr=   r>   T㥛 p@Q8s@rP   rQ   rX   犎z@rR   rS   Biޖu@+n@rU   rV   x&a@(\p@r   )rA   r>   r]   r^   )rC   rQ   rX   r`   )gU?rS   rb   rc   )rY   rV   re   rf   rB   rE   rF   ZxywhT)moderH   rI   rJ   rK   rL   r   r   r   test_transform_boxes_wh}   s*    $z,TestTransformBoxes2D.test_transform_boxes_whc                 C   s~   t jg dg dg dg dg||d}t jg dg dg dgg||d}t|}t|}tt||d	d
fd
dszJ d S )Nr\   r_   ra   rd   r   rB   rE   rF   ZxyxyTr,   )r   r#   r-   r.   r   r   )r   r   r   r%   rM   r   r   r   r0      s    $

z#TestTransformBoxes2D.test_gradcheckc                 C   sl   t jg dg||d}t jg dg dg dgg||d}||f}tjj}t j|}t|| ||  d S )Nr\   r   rB   rE   rF   )r   r#   korniaZgeometryZtransform_pointsr1   r2   r   )r   r   r   r%   rM   argsr3   Zop_jitr   r   r   r7      s    $zTestTransformBoxes2D.test_jitN)r8   r9   r:   rO   r[   rh   r0   r7   r   r   r   r   r;   C   s
   .r;   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestBbox3Dc                 C   s  t jdd||d}t jddd||d}|d d d |d< |d d |d< |d d |d	< |d d
 |d< |d d |d< |d d |d< |d d
 |d< |d d |d< |d d |d< |d d
 |d< |d d |d< |d d |d< |d d |d< |d d |d< |d d |d< |d d |d< |d dd  |d< |d d |d< |d d |d< |d d |d< t|s|J d S )Nr      r      r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   )r   r   r   )r   r   r      )r   r   r   )r   rp   r   )r   rp   r   )r   rp   r   )r   rl   )r      r   )r   rq   r   )r   rq   r   )r   r   r   r	   r   r   r   r   r      s.    zTestBbox3D.test_smokec                 C   s   t jg dg dg dg dg dg dg dg dgg d	g d
g dg dg dg dg dg dgg||d}t|\}}}t|t jddg||d t|t jddg||d t|t jddg||d d S )Nrn   
   r   r   rs      r   r   ru   r   r   r       rs   r   rx   rs   ru   rx   r   ru   rx   )r   r   rp   )+   r   rp   )r|   6   rp   )r   r}   rp   )r   r   A   )r|   r   r~   )r|   r}   r~   )r   r}   r~   r   g      ?@g     N@g      5@g     I@g      &@g     D@)r   r#   r   r   )r   r   r   r%   dr&   r'   r   r   r   r(      s    22z,TestBbox3D.test_bounding_boxes_dim_inferringc              
   C   sd   t jg dg dg dg dg dg dg dg dgg||d	}t|}tt|fd
ds`J d S )Nrn   rr   rt   rv   rw   ry   rz   r{   r   Tr,   )r   r#   r-   r.   r   r   r/   r   r   r   r0      s    4
zTestBbox3D.test_gradcheckc              
   C   sp   t }tj|}tjg dg dg dg dg dg dg dg dgg||d	}||}||}t|| d S )
N)r   r   r   )r   r   r   )r   r   r   ro   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r1   r2   r#   r   )r   r   r   r3   r4   r%   r6   r5   r   r   r   r7      s    4zTestBbox3D.test_jitN)r8   r9   r:   r   r(   r0   r7   r   r   r   r   rk      s   	rk   c                   @   s   e Zd Zdd ZdS )TestNMSc                 C   sn   t jg dg dg dg dg||d}t jg d||d}t jg d|t jd}t||dd}t|| d S )	N)      $@r         4@r   )      .@g      @r   g      9@)      Y@r         i@r   r   )?皙?gffffff?r   r   r   )Ziou_threshold)r   r#   longr   r   )r   r   r   r%   Zscoresr5   r6   r   r   r   r      s    
zTestNMS.test_smokeN)r8   r9   r:   r   r   r   r   r   r      s   r   )r   Ztorch.autogradr   Ztorch.testingr   ri   Zkornia.testingZtestingr-   Zkornia.geometry.bboxr   r   r   r   r   r	   r
   r;   rk   r   r   r   r   r   <module>   s    
2tG