CoolFace
Apppublic

hololens/stable-diffusion-webui-depthmap-script

sourceHugging Faceupdated 2y agoView on Hugging Face
1likes
depthmap_generation.cpython-311.pyc304 linesDownload Raw Back to __pycache__
12��f4�����ddlZddlZddlmZddlZddlZddlZ	ddl3mZddlZddl
mZmZddlmZddlmZddlmZddlmZmZmZdd	lmZdd4lmZddlmZddl m!Z!dd
l"m#Z#ddl$m%Z%ddl&m'Z'	ddl(m)Z)n#e*d��YnxYwddl+Tddl,m-Z-Gd�d��Z.d�Z/d�Z0d�Z1d�Z2d2d�Z3d�Z4d�Z5Gd�d ��Z6d!�Z7Gd"�d ��Z6d#�Z8d$�Z9d%�Z:d&�Z;d3d*�Z<d+�Z=d,�Z>d-�Z?d.�Z@d/�ZAd0�ZBd1�ZCdS)4�N��getitem)�Image)�Compose�5transforms)�
DPTDepthModel)�MidasNet)�MidasNet_small��Resize�NormalizeImage�
PrepareForNet)�build_model)�6get_config)�
RelDepthModel)�strip_prefix_if_present)�Pix2Pix4DepthModel)�MarigoldPipeline)�TestOptions)�DepthAnythingV2z*depth_anything_v2 import failed... somehow)�*��backbonec��eZdZd�Zd�Zddejdedefd�Zddejdedefd�Z	e7d	���Zd8�Zd�Z
d�Zd
�Zd�ZdS)�ModelHolderc�v�d|_d|_d|_d|_d|_d|_d|_d|_dS)NF)�depth_model�
pix2pix_model�depth_model_type�device�	offloaded�resize_mode�
normalization�tiling_mode��selfs �OF:\3dpicmaker\stable-diffusion-webui-depthmap-script\src\depthmap_generation.py�__init__zModelHolder.__init__)sH�����!��� $��������� ���!��� �����c�\�|���D]\}}t|||���dS�N)�items�setattr)r&�kvargs�k�vs    r'�update_settingszModelHolder.update_settings6s<���L�L�N�N�	 �	 �D�A�q��D�!�Q�����	 �	 r)Fr �boostr$c��|dks|�|���dS||jks#||jduks||jks||jkr,|���|�||||��|���dS)N�����)�
unload_modelsrrr r$�load_models�reload)r&�9model_typer r2r$s     r'�
ensure_modelszModelHolder.ensure_models<s�������z�1���� � � ��F��d�3�3�3��$�,�D�8�9�9��$�+�%�%��t�/�/�/���� � � ����Z����D�D�D����
�
�
�
�
r)c	���d}|dkrd}|dkrd}|dvrd}tj|d�	��tjd10d�	��tdd�
��d}tgd�gd����}d}|dkr�|�d�}	t|	��t	|	ddgd��|tjd��krtj|	��}11n(tj|	tjd�����}12td���}|�	t|13dd��d���~14tj��|dkrM|�d�}	t|	��t	|	d��t|	d d�!��}d}tgd�gd����}|d"krM|�d#�}	t|	��t	|	d$��t|	d%d�!��}d}tgd�gd����}|d&krO|�d'�}	t|	��t	|	d(��t|	d)d�!��}d}tgd�gd����}�n-|d*krO|�d+�}	t|	��t	|	d,��t|	d-d�!��}d}tgd�gd����}�n�|d.krN|�d/�}	t|	��t	|	d0��t|	d�1��}d2}tgd3�gd4����}�n�|d5krT|�d6�}	t|	��t	|	d7��t|	d8d9ddd:di�;��}d2}tgd3�gd4����}�n*|d<kr0td=��t!d>d?��}t#|��}�n�|d@kr2tdA��t!d>d?dB�C��}t#|��}�n�|dDkr0tdE��t!dFd?��}t#|��}�n�|dGkridH}	t|	��|jrt15jnt16j}t+j|	|�I��}	ddl}
|����n#Y�nxYw|dkryddJlm}|dKdLgdM�dN�O���|�����}|�dP�}	t	|	dQ��|�	tj|	����n�|dvr�dRdSdTd�|}dUdVdWd�|}|�dX|�dY�}	t	|	dZ|�d[|�dY���d\d8gd]�d^�d_d`gda�d^�dKdLgdM�d^�dbdcgdd�d^�de�}t;dsi|df|����}|�	tj|	d�����|r&�fdg���|��}dh�|D��D]	}di|_�17|t?ddG��vr|���|tjdj��kr{|dkvr |�t18j �l��}|jsP|dmvr|s|�!��}|dvr2|j"�!��|j#�!��|�|��||_$||_%||_&||_'||_(||_|r�t	dndodpgdq��tS���*��}|tjd��krg|_+tY|��|_-d19|j-_.|j-�/dr��|j-���tj��dS)tz%Ensure that the depth model is loadedz./models/midasrz./models/leres�z./models/depth_anything���
�z./models/depth_anything_v2T)�exist_okz./models/pix2pixzLoading model weights from � )�end�minimal)��?rDrD��mean�stdNz/res101.pthz?https://cloudstor.aarnet.edu.au/plus/s/lTIJF4vrvHCAI31/downloadzPhttps://huggingface.co/lllyasviel/Annotators/resolve/5bc80eec2b4fddbb/res101.pth�@1d696b2ef3e8336b057d0c15bc82d2fecef821bfebe5ef9d7671a5ec5dde520b�cpu)�map_location�20resnext101rrzmodule.)�strict�z/dpt_beit_large_512.ptzMhttps://github.com/isl-org/MiDaS/releases/download/v3_1/dpt_beit_large_512.pt�beitl16_512)�pathr�non_negative�z/dpt_beit_large_384.ptzMhttps://github.com/isl-org/MiDaS/releases/download/v3_1/dpt_beit_large_384.pt�beitl16_384�z/dpt_large-midas-2f21e586.ptzRhttps://github.com/intel-isl/DPT/releases/download/1_0/dpt_large-midas-2f21e586.pt�21vitl16_384�z/dpt_hybrid-midas-501f0c75.ptzShttps://github.com/intel-isl/DPT/releases/download/1_0/dpt_hybrid-midas-501f0c75.pt�
vitb_rn50_384�z/midas_v21-f6b98070.ptzShttps://github.com/AlexeyAB/MiDaS/releases/download/midas_dpt/midas_v21-f6b98070.pt)rP�upper_bound�g22ףp=23�?g�v��/�?g�C�l���?�gZd;�O�?gy�&1��?g�������?�z/midas_v21_small-70d6b9c8.ptzYhttps://github.com/AlexeyAB/MiDaS/releases/download/midas_dpt/midas_v21_small-70d6b9c8.pt�@�efficientnet_lite3�expand)�featuresr�24exportablerP�blocks�zzoedepth_n25�zoedepth�infer�zzoedepth_k26�kitti)�config_version�	zzoedepth_nk27�zoedepth_nk�28zBingxin/Marigold)�torch_dtype)�29DPT_DINOv2�vitl�)rn��rpF)�encoderr_�out_channels�localhubz/depth_anything_vitl14.pthzihttps://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitl14.pth�s�b�l�Small�Base�Largez/depth_anything_v2_vitz.pthz8https://huggingface.co/depth-anything/Depth-Anything-V2-z#/resolve/main/depth_anything_v2_vit�vits)�0�`���)rqr_rr�vitb�)r|r}r~��vitgr~)�r�r�r�)rzrrmr��vitc�b���fd�|���D��}|g}|D]}||z
}�|S)Nc�&��g|]
}�|����S�r�)�.0�children�flattens  �r'�30<listcomp>z<ModelHolder.load_models.<locals>.flatten.<locals>.<listcomp>�s#���M�M�M�8�W�W�X�.�.�M�M�Mr))r�)�el�	flattened�res�cr�s    �r'r�z(ModelHolder.load_models.<locals>.flatten�sJ���M�M�M�M�r�{�{�}�}�M�M�M�	��d��"���A��1�H�C�C��31r)c��g|]H}t|��tjjks"t|��tjjk�F|��ISr�)�type�torch�nn�Conv2d�Conv1d)r��layers  r'r�z+ModelHolder.load_models.<locals>.<listcomp>sG��x�x�x�E�t�E�{�{�e�h�o�7U�7U�Y]�^c�Yd�Yd�hm�hp�hw�Yw�Yw�%�Yw�Yw�Ywr)�circular�cuda)rrMrQrSrUrWr[��
memory_format)	rMrQrSrUrWr[rerhr;z!./models/pix2pix/latest_net_G.pthzVhttps://huggingface.co/lllyasviel/Annotators/resolve/9a7d84251d487d11/latest_net_G.pthz-https://sfu.ca/~yagiz/CVPR21/latest_net_G.pth�@50ec735d74ed6499562d898f41b49343e521808b8dae589aa3c2f5c9ac9f7462�latestr�)0�os�makedirs�printr
�ensure_file_downloadedr�r �loadr�load_state_dictrr�torch_gcrr	r32rr�no_half�float32�float16r�from_pretrained�xformers�*enable_xformers_memory_efficient_attention�depth_anything.dptrl�to�evalr�padding_mode�range�
channels_last�half�33depth_head�34pretrainedrrr"r#r$r�parse�gpu_idsrr�save_dir�
load_networks)r&r8r r2r$�	model_dirr"r#�model�35model_path�36checkpoint�conf�dtyper�rl�letter�word�
model_configs�layersr��optr�s                     @r'r6zModelHolder.load_modelsLs�	���%�	���?�?�(�I�����1�I���%�%�4�I�	��I��-�-�-�-�37��&��6�6�6�6�
�+��5�5�5�5���&�O�O�O����Q�Q�Q�
�����?�?�%�2�2�2�J��*����"��R�c��S�
T�
T�
T����e�,�,�,�,�"�Z�38�3�3�3940�"�Z�41���e�AT�AT�U�U�U�42�!�<�8�8�8�E��!�!�"9�*�]�:S�U^�"_�"_�hl�!�m�m�m���������?�?�%�=�=�=�J��*����"�:�#r�
t�
t�
t�!��&�!����E�43$�K�*����_�_�_�U�U�U�M���?�?�%�=�=�=�J��*����"�:�#r�
t�
t�
t�!��&�!����E�44$�K�*����_�_�_�U�U�U�M���?�?�%�C�C�C�J��*����"�:�#w�
y�
y�
y�!��%�!����E�45$�K�*����_�_�_�U�U�U�M�M�
�1�_�_�%�D�D�D�J��*����"�:�#x�
z�
z�
z�!��(�!����E�46$�K�*����_�_�_�U�U�U�M�M�
�1�_�_�%�=�=�=�J��*����"�:�#x�
z�
z�
z��Z�d�;�;�;�E�'�K�*�*�*�*�0E�0E�0E����M�M��1�_�_�%�C�C�C�J��*����"�:�#~�
@�
@�
@�"�:��EY�fj�04�h��=M�O�O�O�E�'�K�*�*�*�*�0E�0E�0E����M�M��1�_�_��.�!�!�!��j�'�2�2�D���%�%�E�E�
�1�_�_��.�!�!�!��j�'�'�J�J�J�D���%�%�E�E�
�1�_�_��/�"�"�"��m�W�5�5�D���%�%�E�E�
�2�
�
�+�J��*����%)�\�D�E�M�M�u�}�E�$�4�Z�U�S�S�S�E�
������@�@�B�B�B�B��
������
�2�
�
�5�5�5�5�5�5��47�"� �!7�!7�!7�"�	���48�"�V�*�*�T�T�V�V�

�&�A�A�A�J�"�:�$O�
P�
P�
P�
�!�!�%�*�Z�"8�"8�9�9�9�9�
�<�
'�
'��3�C�0�0��<�F��V��9�9�*�E�D�%�I�I�V�I�I�I�J�"�:�$T�^b�$T�$T�HN�$T�$T�$T�
U�
U�
U�17�R�Yk�Yk�Yk�%l�%l�17�S�Zm�Zm�Zm�%n�%n�17�S�Zp�Zp�Zp�%q�%q�17�S�Zr�Zr�Zr�%s�%s�u�u�M�$�D�D�m�N�&�N�N�&C�D�D�E��!�!�%�*�Z�e�"L�"L�"L�M�M�M��		0�
�
�
�
�
��W�U�^�^�F�x�x�V�x�x�x�
0�
0��%/��"�"���q�"���%�%��J�J�L�L�L��U�\�&�)�)�)�)��2�2�2����u�/B��C�C���<�
,��!=�=�=�e�=�!�J�J�L�L�E���-�-��$�)�)�+�+�+��$�)�)�+�+�+�
������� ��� *���&���*���&�������
	&�"�3�i�@�B�R�	
T�
T�
T�49�-�-�%�%�'�'�C����e�,�,�,�,� ���!3�C�!8�!8�D��*<�D��'���,�,�X�6�6�6���#�#�%�%�%�������s�0Q5051Qc��ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgd�}||vr||SddgS)N��ror~rnr��)rrMrQrSrUrWr[rbrerhrjr;r=r>r?r�)r8�sizess  r'�get_default_net_sizez ModelHolder.get_default_net_size/s���*�S�z��S�z��S�z��S�z��S�z��S�z��S�z��S�z��S�z��S�z��c�52��c�53��c�54��c�55��c�56�57�58��"������$�$��S�z�r)c��|jtjd��kr7|js2|�tjd����d|_dSdSdS)zMove to RAM to conserve VRAMrITN)r r�r!�move_models_tor%s r'�offloadzModelHolder.offloadXsW���;�%�,�u�-�-�-�-�d�n�-������U� 3� 3�4�4�4�!�D�N�N�N�.�-�-�-r)c�Z�|jr#|�|j��d|_dSdS)zUndoes offloadFN)r!r�r r%s r'r7zModelHolder.reload^s7���>�	#������,�,�,�"�D�N�N�N�	#�	#r)c�Z�|j�|j�|��|j�dSdSr+)rr�r)r&r s  r'r�zModelHolder.move_models_tods8����'������'�'�'���)��D�*�)r)c��|j�|j�8|`d|_|`d|_tj��t	j��d|_d|_dSr+)rr�gc�collectrr�rr r%s r'r5zModelHolder.unload_modelsks\����'�4�+=�+I�� �#�D���"�!%�D���J�L�L�L������ $�������r)c���|jatjt	j|��tj��dz}|j��|jdkrt||j59||��}n�|jdvrt||j60||��}n�|jdvr4t||j61|||j
|j|j|jdk��}n�|jdkr$t#||j62|||j|j��}nk|jdkrt)||j63||��}nH|jd	vrt+||j64||��}n't-||j65|j|j|j��}|jd66v}||fS)z�Get prediction from the model currently loaded by the ModelHolder object.67        If boost is enabled, net_width and net_height will be ignored.g�o@Nr)rbrerh)rMrQrSrUrWr[�autocastrjr;r<)rrbrerhrj)r �depthmap_device�cv2�cvtColor�np�asarray�
COLOR_BGR2RGBrr�
estimateleresr�estimatezoedepth�
estimatemidasr"r#r��	precision�estimatemarigold�marigold_ensembles�marigold_steps�estimatedepthanything�estimatedepthanything_v2�
estimateboost�68boost_rmax)r&�input�	net_width�69net_height�img�raw_prediction�raw_prediction_inverts       r'�get_raw_predictionzModelHolder.get_raw_predictionws����+���l�2�:�e�,�,�c�.?�@�@�5�H����%��$��)�)�!.�s�D�4D�i�Q[�!\�!\����&�)�3�3�!1�%��9I�9�V`�!a�!a����&�*<�<�<�!.�s�D�4D�i�Q[�/3�/?��AS�UY�Ua�/3�~��/K�"M�"M����&�"�,�,�!1�#�t�7G��T^�26�2I�4�K^�"`�"`����&�"�,�,�!6�s�D�<L�i�Yc�!d�!d����&�,�6�6�!9�#�t�?O�QZ�\f�!g�!g���*�3��0@�$�BW�Y]�Yk�+/�?�<�<�N� $� 5�9I� I���4�4�4r)N)F)�__name__�70__module__�__qualname__r(r1r�r �boolr9r6�staticmethodr�r�r7r�r5r�r�r)r'rr(s������71!�72!�73!� � � ������T��X\����� a�a�e�l�a�4�a�VZ�a�a�a�a�F�&�&��\�&�P"�"�"�#�#�#����74�75�76�5�5�5�5�5r)rc�~�|dd�dd�ddd�f���}tj|||f��}t|��ddd�dd�dd�f}t	j��5tt	jd��kr|���}|�	|��}ddd��n#1swxYwY|�77��������}tj||j
d|j
dftj���}|S)Nr4r�rMr��
interpolation)�copyr��resize�scale_torchr��no_gradr�r r�r�squeezerI�numpy�shape�INTER_CUBIC)r�r��w�h�rgb_c�A_resize�	img_torch�78predictions        r'r�r��s\������1�1�1�d�d��d�79�O� � �"�"�E��z�%�!�Q��(�(�H��H�%�%�d�A�A�A�q�q�q�!�!�!�m�4�I�80����2�2��e�l�6�2�2�2�2�!���(�(�I��&�&�y�1�1�81�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2�82�#�#�%�%�)�)�+�+�1�1�3�3�J���J���1��s�y��|�(D�TW�Tc�d�d�d�J��s�.AC�C�Cc��t|j��dkr|tjdd�dd�f}|jddkrct	jt	j��t	jdd��g��}||�tj	����}n3|�tj	��}tj|��}|S)z�83    Scale the image and output it in torch.tensor.84    :param img: input rgb is in shape [H, W, C], input depth/disp is in shape [H, W]85    :param scale: the scale factor. float86    :return: img. [C, H, W]87    rQNrSrYrZ)�lenr�r��newaxisrr�ToTensor�	Normalize�astyper�r��88from_numpy)r��	transforms  r'r�r��s����3�9�~�~�����"�*�a�a�a����"�#��89�y��|�q����&�
�
 �
"�
"�J�$8�9N�Pe�$f�$f�g�i�i�	��i��9091�2�:�.�.�/�/����j�j���$�$����s�#�#���Jr)c��||jjj_||jjj_|�|��}|Sr+)�core�prep�resizer�_Resize__width�_Resize__height�	infer_pil)r�r�r�r�r�s     r'r�r��s9��92./�E�J�O��*�./�E�J�O��+�����%�%�J��r)c���ddl}tt||ddd|tj���|t��g��}	|	d|i��d}93|r)ttjd��krtj	n|j94}tj��5|d��5tj|95���
t���d��}ttjd��kr6|�
tj���}|s|���}|�|��}
tjj�|
�d��|jdd	�d96d������������}
ddd��n#1swxYwYddd��n#1swxYwY|
S)
NrT� ��
resize_target�keep_aspect_ratio�ensure_multiple_of�
resize_method�image_interpolation_method�imager�r�rMrQ�bicubicF)�size�mode�
align_corners)�97contextlibrrr�r�rr�r�r r��nullcontextr�rr��	unsqueezer�r��forwardr��98functional�interpolater�r�rIr�)r�r�r�r�r"r#r��precision_is_autocastrr�	img_input�precision_scope�sampler�s              r'r�r��s\����������"�"&�#%�)�+.�?�
�
�
�
��O�O�	99���I�"�	�7�C�.�)�)�'�2�I�)>�,�/�UZ�Ua��V�V�C�C�e�n�n��+��	����100�101�/�/�&�1�1�102�103��!�)�,�,�/�/��@�@�J�J�1�M�M���e�l�6�2�2�2�2��Y�Y�U�-@�Y�A�A�F��
'��������]�]�6�*�*�104��H��+�+��$�$�Q�'�'��Y�r��r�]��#�	
,�
�
��W�Y�Y�
�S�U�U�
�U�W�W�	�105�106�107�108�109�110�111�112�113�114�115����116�117�118�119�120�121�122�123�124�125�126�127�128�129�130����131�132�133�134�&�s7�G.�%D&G�G.�G	�G.�G	�G.�.G2�5G2rWr=c	��tj|dz�d��tj��}t	j|��}t
j��5|||d||d���}tj|j	|j135dd�ddd�tj���cddd��S#1swxYwYdS)NgY���o@�uint8F)�processing_res�show_progress_bar�
ensemble_size�denoising_steps�match_input_resrQr4r�)r�r�rr�r�	fromarrayr�r�r��depth_npr�r�)rr�r�r�r�r�r��pipe_outs        r'r�r��s���,���(�0�0��9�9�3�;L�136M�137M�C�138�/�#�139�140�C�	����e�e��5��Q�%�'9�>�).�0�0�0���z�(�+�e�k�"�1�"�o�d�d��d�.C�TW�Tc�d�d�d�	e�e�e�e�e�e�e�e�e�e�e�e����e�e�e�e�e�es�A
B7�7B;�>B;c�&�ddlm}m}m}t	||dzdz|dzdzddddt141j���|gd�gd	��142��|��g��}|d|i��d}tj|���	d���143t|�����j
t|�����j���}tj��5||��}	ddd��n#1swxYwYddlmcm}144|145�|	d|jd|jd
fdd���d}	|	������S)Nrrr?FT�lower_bound)�width�heightrrrrrrYrZrEr)r r�rM�bilinear�rr�rr)�depth_anything.util.transformrr
rrr�r�r�rrr��next�146parametersr r�r��torch.nn.functionalr�rr r�rIr�)rr�r�r�rr
rr�timage�depth�Fs           r'r�r�s��S�S�S�S�S�S�S�S�S�S���F��2�g��l��B�w��|�#�"&�#%�+�+.�?�
�
�
�
�N� 5� 5� 5�;P�;P�;P�Q�Q�Q��M�O�O�	147���I� �Y���'�
(�
(��
1�F�
�
�f�
%�
%�
/�
/��
2�
2�
5�
5�T�%�BR�BR�BT�BT�=U�=U�=\�<@��AQ�AQ�AS�AS�<T�<T�<Z�6�\�\�F�148��������f�
�
��������������������#�#�#�#�#�#�#�#�#�
�M�M�
�d��e�k�!�n�e�k�!�n�5�J�V[�
�
�
�149�
�E��9�9�;�;�����s�D�D �#D c�j�tj|dz�d��tj��}t	j��5|�||��\}\}}|�|jj	dj150jj��}|�
|���|��}ddlmcm}|�|dd�df||fdd���d}|������cddd��S#1swxYwYdS)Ng33333�o@r&rr3Tr4r5)r�r�rr�r�r��image2tensor�type_asr�ra�norm1�weight�datarr9r�rr rIr�)rr�r�r�r��image_castedr;r<s        r'r�r�$s[��151
�,���
�-�-�g�6�6��8I�152J�153J�C�	����#�#��*�*�3��2�2�
��v��1��}�}�U�%5�%<�Q�%?�%E�%L�%Q�R�R���
�
�l�+�+�3�3�E�:�:��'�'�'�'�'�'�'�'�'��
�
�e�A�A�A�t�G�n�q�!�f�:�UY�
�Z�Z�[_�`���y�y�{�{� � �"�"�#�#�#�#�#�#�#�#�#�#�#�#����#�#�#�#�#�#s�	CD(�(D,�/D,c�:�eZdZd154d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	S)�ImageandPatchsrMc�2�||_||_||_||_||_tj|t|jd|z��t|jd|z��ft155j	���|_156d|_d|_d|_
dS�NrMrr�F��root_dir�157patchsinfo�name�patchs�scaler�r��roundr�r��	rgb_image�do_have_estimate�estimation_updated_image�estimation_base_image�r&rIrKrJrOrMs      r'r(zImageandPatchs.__init__3��� ��
�$�����	� �����158���I��i�o�a�6H�5�6P�0Q�0Q�SX�Yb�Yh�ij�Yk�ns�Ys�St�St�/u�25�/�C�C�C���!&���(,��%�%)��"�"�"r)c�*�t|j��Sr+�rrLr%s r'�__len__zImageandPatchs.__len__A����4�;���r)c�4�||_|j�	d|_dSdS�NT�rRrQrP�r&�ests  r'�set_base_estimatez ImageandPatchs.set_base_estimateD�)��%(��"��(�4�$(�D�!�!�!�5�4r)c�4�||_|j�	d|_dSdSrZ�rQrRrPr\s  r'�set_updated_estimatez#ImageandPatchs.set_updated_estimateI�)��(+��%��%�1�$(�D�!�!�!�2�1r)c��t|j|d��}tj|j|dd��}|j|dd}tj||jz��}|�d��}t	||jz��}t|j|��}|j	r3t|j159|��}t|j|��}||||||d�S||||d�S�NrrM�rectr�int)�	patch_rgb�patch_whole_estimate_base�patch_whole_estimate_updatedrfr�id)rhrfrrk�rgrLr��arrayrNrMr�impatchrOrPrRrQ�r&�index�patch_idrf�msizerhrirjs        r'�__getitem__zImageandPatchs.__getitem__N����t�{�5�)�!�,�-�-���x���E�*�1�-�f�5�6�6����E�"�1�%�f�-���x��t�z�)�*�*���{�{�5�!�!���e�d�j�(�)�)���D�N�D�1�1�	�� �	Y�(/��0J�D�(Q�(Q�%�+2�4�3P�RV�+W�+W�(�!*�Ib�4P�Z^�!��3�3�
3�"+�D�%�x�X�X�Xr)c�t�d}|dz
}tt|�������D]m\}}d}|j�|��}||krdt|��z}|d�t|��t|��|��z
}�n|dz
}t|��dS�z�Print and save options160 161        It will print both current options and default values(if different).162        It will save options into a text file / [checkpoints_dir] / opt.txt163        �z*----------------- Options ---------------164z	[default: %s]z{:>25}: {:<30}{}165z)----------------- End -------------------N��sorted�varsr,�parser�get_default�str�formatr��r&r��messager/r0�comment�defaults       r'�
print_optionszImageandPatchs.print_optionsb������@�@���4��9�9�?�?�,�,�-�-�	L�	L�D�A�q��G��k�-�-�a�0�0�G��G�|�|�+�c�'�l�l�:���+�2�2�3�q�6�6�3�q�6�6�7�K�K�K�G�G��>�>��
�g����	�	r)c��|���}|j|_|jr>|jdkr"d|jjdit	|����znd}|j|z|_|j�d��}g|_|D]1}t|��}|dkr|j�	|���2||_166|j167S�zNParse our options, create checkpoints directory suffix, and set up gpu device.rw�_�,rr���gather_options�isTrain�suffixr~rzrKr��splitrg�appendr��r&r�r��str_ids�str_idrks      r'r�zImageandPatchs.parse}�����!�!�#�#���l����:�	)�?B�z�R�?O�?O�c�-�C�J�-�:�:��S�	�	�:�:�:�:�UW�F��x�&�(�C�H�168�+�#�#�C�(�(������	'�	'�F��V���B��Q�w�w���"�"�2�&�&�&������x�r)N�rM�169r�r�r�r(rWr^rbrsr�r�r�r)r'rErE2�������*�*�*�*� � � �)�)�)�170)�)�)�171Y�Y�Y�(���6����r)rEc�n�|d}|d}||dz}||dz}|||�||�f}|S)NrrMrQrSr�)rrf�w1�h1�w2�h2�image_patchs       r'rnrn�sJ��	
�a��B�	
�a��B�	�d�1�g��B�	�d�1�g��B���2��r�"�u��%�K��r)c�:�eZdZd172d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	S)rErMc�2�||_||_||_||_||_tj|t|jd|z��t|jd|z��ft173j	���|_174d|_d|_d|_
dSrGrHrSs      r'r(zImageandPatchs.__init__�rTr)c�*�t|j��Sr+rVr%s r'rWzImageandPatchs.__len__�rXr)c�4�||_|j�	d|_dSdSrZr[r\s  r'r^z ImageandPatchs.set_base_estimate�r_r)c�4�||_|j�	d|_dSdSrZrar\s  r'rbz#ImageandPatchs.set_updated_estimate�rcr)c��t|j|d��}tj|j|dd��}|j|dd}tj||jz��}|�d��}t	||jz��}t|j|��}|j	r3t|j175|��}t|j|��}||||||d�S||||d�Srerlros        r'rszImageandPatchs.__getitem__�rtr)c�t�d}|dz
}tt|�������D]m\}}d}|j�|��}||krdt|��z}|d�t|��t|��|��z
}�n|dz
}t|��dSrvrxrs       r'r�zImageandPatchs.print_options�r�r)c��|���}|j|_|jr>|jdkr"d|jjdit	|����znd}|j|z|_|j�d��}g|_|D]1}t|��}|dkr|j�	|���2||_176|j177Sr�r�r�s      r'r�zImageandPatchs.parse�r�r)Nr�r�r�r)r'rErE�r�r)c178�*�d}|dkrd}n|dkrd}n|dkrd}n	|dvrd}nd	}d179|z}tj��tj��t	d��}|���}	d}180|j}d
}t|||181||��\}
}td|
��t|||
||||��}ttdd|z|
z|z��d��}tdd|z��|jd|jdkr4d182|
z}td183|
z|jdz|jdz��}n3td184|
z|jdz|jdz��}d185|
z}tt||z����}tt||z����}	tj|||ftj���}|d186z}t#|||��}td|j��	|d|jdz}t%dd|||��}tj|t|jd|z��t|jd|z��ftj���}|�|�����|�|�����td|jdd187���tdt+t-|����z��t/t-|����D�]�}||}|d}|d}|d}|d}|j}td|dt-|��dz188d|��t|||||||��}tj|||ftj���}tj|||ftj���}|�||��|���|���} | d}!|!dzd189z}!|!���������}!|!}"t=j|"� d��|� d��d���}#t=j!|#|"� d����� |"j��}$tj|$|d|dftj���}$|d}%|d}&|%|d190z}'|&|d
z}(|	j|kr/tj||d|dftj"���}	|j#})t=j$|)|&|(�|%|'�fd|	z191��t=j$|$|	��z|)|&|(�|%|'�f<|�|)�����tj|j#|d|dftj���S) Nrprr�rMror;r�r<r~rQ)�r�g�������?rSzwholeImage being processed in :rUzAdjust factor is:r�zTarget resolution: rwz'Resulting depthmap resolution will be :zpatches to process: rhrirfrkz	 processing patch�/�|�fake_Br4)�deg)%r�r�rr��generatemaskr�r��calculateprocessingresr��doubleestimate�max�minrNrgr�r�r��generatepatchsrEr^rbr}rr��	set_input�test�get_current_visualsr�rIr�r��polyfit�reshape�polyval�INTER_LINEARrQ�multiply)*r�r�r8�pix2pixmodel�whole_size_threshold�pix2pixsize�net_receptive_field_size�
patch_netsize�mask_org�mask�r_threshold_value�input_resolution�scale_threshold�whole_image_optimal_size�patch_scale�whole_estimate�factor�aru�	base_size�patchset�
mergein_scale�imageandpatchs�whole_estimate_resized�	patch_ind�patchrhrirfrq�org_size�patch_estimation�visuals�prediction_mapped�mapped�p_coef�mergedr�r�r�r��tobemergedtos*                                          r'r�r�sy���K��Q���#&� � �	�q���#&� � �	�r�	�	�#&� � �	�|�	#�	#�#&� � �#&� ��0�0�M��J�L�L�L�������L�)�)�H��=�=�?�?�D����y���O�-C�3�H`�bs�CR�Th�-j�-j�)��k�192193+�-E�F�F�F�$�C�)A�C[�]h�jo�$.��>�>�N�194��Q��K��*B�B�EY�Y�Z�Z�\_�
`�
`�F�	�195�q�6�z�*�*�*��y��|�c�i��l�"�"�
�(�(���!�.�.���1��=��	�!��L�M�M����!�.�.���1��=��	�!��L�M�M��
�(�(���E�!�f�*�����A��E�!�f�*�����A���*�S�1�a�&���196@�197@�198@�C�)�1�,�I��c�9�f�5�5�H�	�199���+�+�+��%�Q�'�#�)�A�,�6�M�#�B��H�c�=�I�I�N� �Z���s�y��|�m�?[�9\�9\�9>�s�y��|�m�?[�9\�9\�9^�69�o�G�G�G���$�$�%;�%@�%@�%B�%B�C�C�C��'�'�(>�(C�(C�(E�(E�F�F�F�	�2003�5K�5Q�RT�ST�RT�5U�V�V�V�	�201 �3�s�>�':�':�#;�#;�202;�<�<�<��3�~�.�.�/�/�::�::�	��y�)���+�&�	�$)�*E�$F�!��V�}����;��,�2��
�#�Y��S��5H�5H�1�5L�c�SW�X�X�X�*�)�5M�}�^i�kp�*4�l�D�D���:�&6��k�8R�be�bq�r�r�r��$'�J�/H�;�Xc�Jd�=@�_�%N�%N�%N�!�	���8�:J�K�K�K�	�������2�2�4�4��#�H�-��.��2�a�7��-�5�5�7�7�;�;�=�=�C�C�E�E��"����F�N�N�2�.�.�0I�0Q�0Q�RT�0U�0U�[\�]�]�]����F�F�N�N�2�$6�$6�7�7�?�?���M�M����F�X�a�[�(�1�+�$>�c�o�^�^�^���!�W��
�!�W��
�$�q�'�\��
�$�q�'�\���:��!�!��:�h��!��h�q�k�(B�RU�Rb�c�c�c�D�%�>��203&(�[��b��e�R��U�l�1K�Q�QU�X�%V�%V�Y[�Yd�ek�mq�Yr�Yr�%r��R��U�B�r�E�\�"��+�+�L�9�9�9�9��:�n�=�@P�QR�@S�Ue�fg�Uh�?i�$'�O�5�5�5�5r)c204��tj|tj���}t|ddz��}tdtjdt|ddz��z��zdz��}d|td|dz��|dtd|dz��z205�td|dz��|dtd|dz��z206�f<tj|t|��t|��f|��}||���z207|���|���z208z}|�	tj��}|S)N)r�r�rQrMg333333�?)209r��zerosr�rg�ceilr��GaussianBlurr�r�r)rr��sigma�k_sizes    r'r�r��s@��
�8�D��210�+�+�+�D���Q��"����E�
��R�W�Q��T�!�W�r�\�!2�!2�2�3�3�3�a�7�
8�
8�F�rs�D��T�D��G�^�	�	�T�!�W�s�4�$�q�'�>�':�':�:�	:�C��t�A�w��<O�<O�QU�VW�QX�[^�_c�fj�kl�fm�_m�[n�[n�Qn�<n�	n�o���D�3�v�;�;��F���"<�e�D�D�D��4�8�8�:�:��$�(�(�*�*�t�x�x�z�z�"9�:�D��;�;�r�z�"�"�D��Kr)c�D�tj|ddd�fgd���S)N.rS)gŏ1w-!�?gbX9���?g�v��/�?)r��dot)�rgbs r'�rgb2grayr��s'��
�6�#�c�2�A�2�g�,� 8� 8� 8�9�9�9r)c���|jd}ttj||z����}tj�|||ftj��}|S)Nr)r�rgr��floor�skimage�measure�block_reducer�)r�r�i_size�n�outs     r'�resizewithpoolr��sL��
�Y�q�\�F��B�H�V�d�]�#�#�$�$�A�211�/�212&�213&�s�Q��F�B�F�214;�215;�C��Jr)皙�����?rSr�c216�~�d}tt|jdd�����}t|��}t	jt
j|tjddd�����t	jt
j|tjddd�����z}t
j	|||ftj217��}|���}	|���}218|	d|219|	z220zz}d|||k<d|||k<t	jt||z��t||z��ft��}t	jt|d|zz��t|d|zz��ft��}
t||t|jdd���z��}||z}tt||z��t||z��t|d|zz����D]~}t||��}t
j	|||ftj��}d||d	k<d||d	k<t
j||d�221��}d|z222���}||krn|}�t
j||
d�223��}|���}t||z��|fS)NrrrQrMrS��ksizeg�������?rUrD)�224iterations)rgr�r�r�r��absr��Sobel�CV_64Fr��225INTER_AREAr��ones�floatr�r��
INTER_NEAREST�dilaterF)r��basesize�226confidencer�r��speed_scale�	image_dim�gray�grad�m�M�middle�kernel�kernel2�	threshold�outputsize_scale�p_size�grad_resized�dilated�	meanvalue�grad_regionr�s                      r'r�r��s����K��C��	�!�A�#��'�'�(�(�I��C�=�=�D�
�6�#�)�D�#�*�a��!�<�<�<�=�=���s�y�QU�WZ�Wa�cd�fg�op�Gq�Gq�Gq�@r�@r�r�D��:�d�Y�	�2�C�N�C�C�D�	
���227228�A����229230�A�
�#��Q��-�
 �F��D������D������W�c�(�[�0�1�1�3�x�+�7M�3N�3N�O�QV�
W�
W�F��g�s�8�q�;��7�8�8�#�h�!�k�/�>Z�:[�:[�\�^c�d�d�G��(�/�C��	�"�1�"�
�<N�<N�*N�O�O�I��+�-����H�{�2�3�3�S��[�9P�5Q�5Q�SV�W_�cd�gr�cr�Ws�St�St�u�u�&�&��%�d�F�3�3���z�,���0@�#�BS�T�T��,-��\�S�(�)�+,��\�C�'�(��*�\�6�a�@�@�@����[�&�&�(�(�	��z�!�!��E�%����*�\�7�q�A�A�A�K��"�"�$�$�K���+�-�.�.��;�;r)c�h�t||||��}tj|||ftj���}t||||��}tj|||ftj���}|�||��|���|���}	|	d}231|232dzdz}233|234tj|235��z236tj	|237��tj|238��z239z}240|241242��������}243|244S)Nr�r�rMrQ)
�singleestimater�r�r�r�r�r�r�r�r�r�rIr�)r��size1�size2r�r��net_typer��	estimate1�	estimate2r�r�s           r'r�r�s(���s�E�5�(�;�;�I��245�9�{�K�&@�PS�P_�`�`�`�I��s�E�5�(�;�;�I��246�9�{�K�&@�PS�P_�`�`�`�I����9�i�0�0�0��������.�.�0�0�G���)��*�Q�.�!�3��*�U�Y�7H�-I�-I�I��I�'�(�(�5�9�5F�+G�+G�G�I��)�1�1�3�3�7�7�9�9�?�?�A�A���r)c��|dkrt||||��S|dkrt||||��S|dkrt||||��S|dvrt||||��S|dkrLt	tjtj|dz�����	d��|||��St||||��S)Nrrjr;r<rb���RGB)r�r�r�r�r�rr,r�r&�convert�estimatemidasBoost)r�rrr�r
s    r'r247r248s����1�}�}��S�%���6�6�6�	�R�����U�E�5�9�9�9�	�R���$�S�%���>�>�>�	�\�	!�	!�'��U�E�5�A�A�A�	�Q���������s��0C�0C� D� D� L� L�U� S� S�UZ�\a�ch�i�i�i�!�#�u�e�U�;�;�;r)c249��t|��}tjtj|tjddd�����tjtj|tjddd�����z}||dk���}d|||k<|���t|�	d����z}tj250|��}tt|dz����}tt|dz����}	t||	|gd���}251td	��t||252||��}253t!|254���d255�d���}|S)
NrrMrSr�r4rQg�?)rrrrzSelecting patches ...c�.�t|dd��S)NrMrr)�xs r'�<lambda>z generatepatchs.<locals>.<lambda>Js��g�a��d�F�>S�>S�r)T)�key�reverse)r�r�r�r�r�r�rF�sumrr��integralrgrN�applyGridpatchr��adaptiveselectionryr,)r�r�r��img_gray�256whole_gradr�gf�grad_integral_image�blsize�stride�patch_bound_listr�s            r'r�r�.sh����}�}�H����	�(�C�J��1�A�F�F�F�G�G����	�(�C�J��1�A�F�F�F�G�G�H�J��:��>�*�/�/�1�1�I�)*�J�z�I�%�&�257���	�	�C�258� 2� 2�2� 6� 6�7�7�	7�B��,�z�2�2����y�1�}�%�%�
&�
&�F�
��v��}�%�%�
&�
&�F�&�f�f�c�<�<�<�H�H��259260!�"�"�"�(�)<�>N�PR�TZ�[�[���&�,�,�.�.�4S�4S�]a�b�b�b�H��Or)c���d}i}t||jd|z261|��D]�}t||jd|z262|��D]�}i|t|��<||z263||z264||z265d|zz||z266d|zzg}|d|dz|d|dz|d|dz267|d|dz268g}	|	|t|��d<|	d|t|��d<|dz}����|S)NrrMrQrSrfr)r�r�r})269r#r$r��box�counter1r%r/�j�patchbounds�patch_bounds270          r'rrNs/���H���
�6�3�9�Q�<�&�0�&�
9�
9�$�$���v�s�y��|�f�4�f�=�=�	$�	$�A�.0��S��]�]�+��v�:�q�6�z�1�v�:��F�271�3J�A�PV�J�YZ�]c�Yc�Lc�d�K��q�6�K��N�2�C��F�[��^�4K�[�YZ�^�^i�jk�^l�Ml�&�q�>�K��N�:�<�K�6A��S��]�]�+�F�3�6A�!�n��S��]�]�+�F�3��!�|�H�H�	$��r)c��i}d}|j\}}td|z��}tt|����D�]�}	|t	|	��d}272t||273��|274d|275dzz}||k�r;|276���}i|t	|��<	|dt|dz��z277|d<|dt|dz��z278|d<|d|z|d<|d|z|d<|ddks6|ddks*|d|dz|ks|d|dz|krn>t||��|d|dzz}||krn|���}279��|280|t	|��d<|281d|t	|��d<|dz}���|S)	NrrrfrQrSTrMr)r�rgr�rr}�getGF_fromintegralr�)
�
integral_gradr%r!r��	patchlist�countr2r1�search_stepr��bbox�cgf�	bbox_tests
             r'rr_s����I�
�E�!�'�M�F�E��b�6�k�"�"�K��3�'�(�(�
)�
)�%�%����A���'��/��!���5�5��a��4��7�9J�K���"�9�9��	�	���I�$&�I�c�%�j�j�!�
(�(��|�c�+��/�.B�.B�B�	�!��(��|�c�+��/�.B�.B�B�	�!��(��|�k�9�	�!��(��|�k�9�	�!���Q�<�!�#�#�y��|�a�'7�'7�9�Q�<�)�TU�,�;V�Z`�;`�;`�$�Q�<�)�A�,�6�%�?�?��)��	�B�B�i�PQ�l�U^�_`�Ua�Fa�b����8�8�� �~�~�'�'��#
(�(-1�I�c�%�j�j�!�&�)�,0��G�I�c�%�j�j�!�&�)��A�I�E���r)c���|d}|d|dz}|d}|d|dz}|||f|||fz282|||fz283|||fz}|S)NrMrSrrQr�)�
integralimagerf�x1�x2�y1�y2�values       r'r-r-�sy��	
�a��B�	
�a��4��7�	�B�	
�a��B�	
�a��4��7�	�B��"�b�&�!�M�"�b�&�$9�9�M�"�b�&�<Q�Q�Ta�bd�fh�bh�Ti�i�E��Lr)c���tt||ddddtj���t	gd�gd����t��g��}|d|i��d}t
j��5t
j|���	t���d	��}tt
jd284��kr |�	tj
���}|�|��}ddd��n#1swxYwY|���������}tj||jd|jd	ftj�
��}|���}|���}	|	|z285t-jd��jkr||z286|	|z287z}nd	}|S)NTrrXrrYrZrErrr�r�rMr�r�)rrr�r�r
rr�r�rr�r�rr r�rr�rIr�r�r�r�r�r��finfo�eps)288r�r�r�r�rr"r$r��	depth_min�	depth_maxs289          r'rr�s�������"�"&�#%�+�+.�?�
�
�
�
� 5� 5� 5�;P�;P�;P�Q�Q�Q��O�O�	290���I�"�	�7�C�.�)�)�'�2�I�291����+�+��!�)�,�,�/�/��@�@�J�J�1�M�M���e�l�6�2�2�2�2��Y�Y�U�-@�Y�A�A�F��]�]�6�*�*�292�	+�+�+�+�+�+�+�+�+�+�+����+�+�+�+��#�#�%�%�)�)�+�+�1�1�3�3�J���J���1��s�y��|�(D�TW�Tc�d�d�d�J���� � �I���� � �I��9��r�x��0�0�4�4�4� �9�,��Y�1F�G�293294��295��s�6BD�D�D)rWr=)r�rSr�)Dr��os.pathr��operatorrr�r�r��skimage.measurer��PILrr��torchvision.transformsrr�dmidas.dpt_depthr�dmidas.midas_netr	�dmidas.midas_net_customr296�dmidas.transformsrr
r�dzoedepth.models.builderr�dzoedepth.utils.configr�lib.multi_depth_model_woauxir�
lib.net_toolsr�"pix2pix.models.pix2pix4depth_modelr�dmarigold.marigoldr�pix2pix.options.test_optionsr�ddepth_anything_v2rr��src.misc�srcrrr�r�r�r�r�r�r�rErnr�r�r�r�r�r�r297r�rrr-rr�r)r'�<module>rTs���	�	�	�	�����������298299300301�������������������6�6�6�6�6�6�6�6�+�*�*�*�*�*�%�%�%�%�%�%�2�2�2�2�2�2�C�C�C�C�C�C�C�C�C�C�0�0�0�0�0�0�-�-�-�-�-�-�6�6�6�6�6�6�1�1�1�1�1�1�A�A�A�A�A�A�/�/�/�/�/�/�4�4�4�4�4�4�8�2�2�2�2�2�2�2��8�	�E�3026�7�7�7�7�7��������������k5�k5�k5�k5�k5�k5�k5�k5�\���$���&	�	�	�,�,�,�b	e�	e�	e�	e����@#�#�#�b�b�b�b�b�b�b�b�J���b�b�b�b�b�b�b�b�Jg5�g5�g5�T	�	�	�:�:�:�303���7<�7<�7<�7<�v���2
<�
<�
<�"���@
�
�
�"0�0�0�f���(�(�(�(�(s�4A;�;
B304