ó
    EñiA  ã                   óv   • S r SSKrSSKJr  SSKJrJr  SSKrSSKJr  SSK	J
r
   " S S	\R                  5      rg)
z,
Implements the Generalized R-CNN framework
é    N)ÚOrderedDict)ÚOptionalÚUnion)Únné   )Ú_log_api_usage_oncec                   ó  ^ • \ rS rSrSrS\R                  S\R                  S\R                  S\R                  SS4
U 4S	 jjr\R                  R                  S
\\\R                  4   S\\\\R                  4      S\\\\R                  4   \\\\R                  4      4   4S j5       r SS\\R                     S\\\\\R                  4         S\\\\R                  4   \\\\R                  4      4   4S jjrSrU =r$ )ÚGeneralizedRCNNé   a@  
Main class for Generalized R-CNN.

Args:
    backbone (nn.Module):
    rpn (nn.Module):
    roi_heads (nn.Module): takes the features + the proposals from the RPN and computes
        detections / masks from it.
    transform (nn.Module): performs the data transformation from the inputs to feed into
        the model
ÚbackboneÚrpnÚ	roi_headsÚ	transformÚreturnNc                 óv   >• [         TU ]  5         [        U 5        X@l        Xl        X l        X0l        SU l        g )NF)ÚsuperÚ__init__r   r   r   r   r   Ú_has_warned)Úselfr   r   r   r   Ú	__class__s        €Új/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/models/detection/generalized_rcnn.pyr   ÚGeneralizedRCNN.__init__   s4   ø€ ô 	‰ÑÔÜ˜DÔ!Ø"ŒØ ŒØŒØ"Œà ˆÕó    ÚlossesÚ
detectionsc                 ó,   • U R                   (       a  U$ U$ ©N)Útraining)r   r   r   s      r   Úeager_outputsÚGeneralizedRCNN.eager_outputs,   s   € ð �=�=ØˆMàÐr   ÚimagesÚtargetsc           	      ó:  • U R                   (       aÂ  Uc  [        R                  " SS5        O§U H¡  nUS   n[        U[        R                  5      (       aV  [        R                  " [        UR                  5      S:H  =(       a    UR                  S   S:H  SUR                   S	35        M}  [        R                  " SS
[        U5       S	35        M£     / nU H^  nUR                  SS n[        R                  " [        U5      S:H  SUR                  SS  35        UR                  US   US   45        M`     U R                  X5      u  pUb   [        U5       H‘  u  pƒUS   nUSS2SS24   USS2SS24   :*  n	U	R                  5       (       d  M8  [        R                  " U	R                  SS95      S   S   n
XJ   R                  5       n[        R                  " SSU SU S	35        M“     U R                  UR                  5      n[        U[        R                  5      (       a  [!        SU4/5      nU R#                  XU5      u  pÞU R%                  XÍUR&                  U5      u  nnU R                  R)                  XñR&                  U5      n0 nUR+                  U5        UR+                  U5        [        R,                  R/                  5       (       a2  U R0                  (       d  [2        R4                  " S5        SU l        UU4$ U R7                  UU5      $ )aÃ  
Args:
    images (list[Tensor]): images to be processed
    targets (list[dict[str, tensor]]): ground-truth boxes present in the image (optional)

Returns:
    result (list[BoxList] or dict[Tensor]): the output from the model.
        During training, it returns a dict[Tensor] which contains the losses.
        During testing, it returns list[BoxList] contains additional fields
        like `scores`, `labels` and `mask` (for Mask R-CNN models).

NFz0targets should not be none when in training modeÚboxesé   éÿÿÿÿé   z:Expected target boxes to be a tensor of shape [N, 4], got Ú.z0Expected target boxes to be of type Tensor, got éþÿÿÿzJexpecting the last two dimensions of the Tensor to be H and W instead got r   é   )ÚdimzLAll bounding boxes should have positive height and width. Found invalid box z for target at index Ú0z=RCNN always returns a (Losses, Detections) tuple in scriptingT)r   ÚtorchÚ_assertÚ
isinstanceÚTensorÚlenÚshapeÚtypeÚappendr   Ú	enumerateÚanyÚwhereÚtolistr   Útensorsr   r   r   Úimage_sizesÚpostprocessÚupdateÚjitÚis_scriptingr   ÚwarningsÚwarnr   )r   r!   r"   Útargetr$   Úoriginal_image_sizesÚimgÚvalÚ
target_idxÚdegenerate_boxesÚbb_idxÚdegen_bbÚfeaturesÚ	proposalsÚproposal_lossesr   Údetector_lossesr   s                     r   ÚforwardÚGeneralizedRCNN.forward5   sÔ  € ð" �=�=Ø‰Ü—’˜eÐ%WÕXã%�FØ" 7™O�EÜ! %¬¯©×6Ñ6ÜŸšÜ §¡Ó,°Ñ1×J°e·k±kÀ"±oÈÑ6JØXÐY^×YdÑYdÐXeÐefÐgöô
 ŸšØ!ØNÌtÐTYË{ÈmÐ[\Ð]öñ &ð 79ÐÛˆCØ—)‘)˜B˜C�.ˆCÜ�MŠMÜ�C“˜A‘Ø\Ð]`×]fÑ]fÐgiÐgjÐ]kÐ\lÐmôð !×'Ñ'¨¨Q©°°Q±Ð(8Ö9ñ ð Ÿ.™.¨Ó9‰ˆð ÑÜ&/°Ö&8Ñ"�
Ø˜w™�Ø#(ª¨A©B¨¡<°5º¸B¸Q¸B¸±<Ñ#?Ð Ø#×'Ñ'×)Ó)ä"Ÿ[š[Ð)9×)=Ñ)=À!Ð)=Ð)DÓEÀaÑHÈÑK�FØ,1©M×,@Ñ,@Ó,B�HÜ—M’MØð.Ø.6¨ZÐ7LÈZÈLÐXYð[öñ '9ð —=‘= §¡Ó0ˆÜ�h¤§¡×-Ñ-Ü" S¨( OÐ#4Ó5ˆHØ%)§X¡X¨fÀÓ%HÑ"ˆ	Ø&*§n¡n°XÈ&×J\ÑJ\Ð^eÓ&fÑ#ˆ
�OØ—^‘^×/Ñ/Ø×*Ñ*Ð,@ó
ˆ
ð ˆØ�‰�oÔ&Ø�‰�oÔ&ä�9‰9×!Ñ!×#Ñ#Ø×#×#Ü—’Ð]Ô^Ø#'�Ô Ø˜:Ð%Ð%à×%Ñ% f¨jÓ9Ð9r   )r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚModuler   r-   r=   ÚunusedÚdictÚstrr0   Úlistr   r   r   ÚtuplerM   Ú__static_attributes__Ú__classcell__)r   s   @r   r
   r
      sL  ø† ñ
ð!à—)‘)ð!ð �Y‰Yð!ð —9‘9ð	!ð
 —9‘9ð!ð 
÷!ð  ‡Y�Y×ÑðØ˜3 §¡Ð,Ñ-ðØ;?ÀÀSÈ%Ï,É,ÐEVÑ@WÑ;Xðà	ˆt�C˜Ÿ™Ð%Ñ&¨¨T°#°u·|±|Ð2CÑ-DÑ(EÐEÑ	Fóó ðð <@ñP:à�U—\‘\Ñ"ðP:ð ˜$˜t C¨¯©Ð$5Ñ6Ñ7Ñ8ðP:ð 
ˆt�C˜Ÿ™Ð%Ñ&¨¨T°#°u·|±|Ð2CÑ-DÑ(EÐEÑ	F÷	P:ó P:r   r
   )rS   r?   Úcollectionsr   Útypingr   r   r-   r   Úutilsr   rT   r
   © r   r   Ú<module>r`      s0   ðñó Ý #ß "ã Ý å (ôv:�b—i‘iõ v:r   