
    6_jd	              	       h   d dl Z d dlZd dlZd dlmZ ej
                  j                  d  e ee      j                         j                  d                d dlZd dlmZ d dlmZmZmZ dej$                  deeef   deeef   fd	Zdd
eez  deez  dedefdZdefdZedk(  r e e             y)    N)Path   )Image)build_modelchoose_devicedefault_transformslogitslabelsreturnc                     t        j                  | d      d   j                         }t        |      D ci c]  \  }}||   t	        |       c}}S c c}}w )Nr   dimr   )torchsoftmaxtolist	enumeratefloat)r	   r
   probsidxprobs        f/var/www/ramen.bs-engineer-server.com/upstream_suite/03_soup-density-ai/src/density/predict_density.pysoftmax_probabilitiesr      sJ    MM&a(+224E6?6FGdF3Kt$GGGs   A
image_path
model_pathdevice_namec                    t        |       j                  j                  dd      }t        j                  |d      }|d   j                         D ci c]  \  }}t        |      | }}}t        |j                  dd            }t        |d   t        |d	               }	|	j                  |d
          |	j                          t        |      }
|	j                  |
       t        j                  |       j                  d      } t!        |      |      j#                  d      j                  |
      }t        j$                         5   |	|      }d d d        t        j'                  d      j)                               }t+        |j-                         |      }|||      }|||   |||dS c c}}w # 1 sw Y   exY w)N_potcrop cpu)map_locationr
   
image_size   
model_namenum_classesmodel_state_dictRGBr   r   r   )image_idpredicted_labelpredicted_label_id
confidenceprobabilities)r   stemreplacer   loaditemsintgetr   load_state_dictevalr   tor   openconvertr   	unsqueezeinference_modeargmaxitemr   r   )r   r   r   r'   
checkpointkeyvaluer
   r!   modeldeviceimagetensorr	   label_idr+   r*   s                    r   predict_densityrC      s   J$$,,Z<HJU;J0:80D0J0J0LM*#uc#hoMFMZ^^L#67J
<0#j6O2PQE	*%789	JJL;'F	HHVJJz"**51E+
+E2<<Q?BB6JF				 v6==Q=',,./H)&**,?Mvh/0J!(+& &  N s   F0		F66F?c                  H   t        j                  d      } | j                  dd       | j                  dd       | j                  d	d
       | j                  dd        | j                         }t	        |j
                  |j                  |j                        }t        j                  |dd      }|j                  rVt        |j                        j                  j                  dd       t        |j                        j                  |d       t        |       y)Nz?Predict soup density label from pot crop image and steam level.)descriptionz--imageT)requiredz--model-pathz7models/density/density_classifier_extracted_v1/model.pt)defaultz--deviceautoz--outputF   )ensure_asciiindent)parentsexist_okzutf-8)encodingr   )argparseArgumentParseradd_argument
parse_argsrC   r@   r   r?   jsondumpsoutputr   parentmkdir
write_textprint)parserargsresulttexts       r   mainr^   -   s    $$1rsF
	D1
0ij

F3

D1DTZZ$++FF::f5;D{{T[[  &&td&CT[[$$TG$<	$K    __main__)rH   )rO   rS   syspathlibr   pathinsertstr__file__resolverL   r   PILr   common.classification_trainingr   r   r   Tensordictr0   r   r   rC   r^   __name__
SystemExit r_   r   <module>ro      s      
  3tH~--/77:; <   Y YH%,, HS#X H4PSUZPZK[ H
d
 d
 QT bf 4c   z
TV
 r_   