§ íîÔiˆãó —ddlZddlmZmZddlmZddlmZddl m Z m Z m Z m Z mZddlmZmZddlmZGd „d e ¦«ZGd „d e d ¬¦«ZGd„de ¦«Zejde¦«ejde¦«dS)éN)ÚAutoImageProcessorÚ AutoProcessor)Ú BatchFeature)Ú ImageInput)Ú ImagesKwargsÚMultiModalDataÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ TextInputé)ÚVectorLLMImageProcessorcó$—eZdZUeed<eed<dS)ÚVectorLLMImagesKwargsÚ resized_sizeÚ patch_sizeN)Ú__name__Ú __module__Ú __qualname__ÚintÚ__annotations__©óúA/home/zhangtao/hf_model/vectorllm_hf_0407/processing_vectorllm.pyrr s%€€€€€€ØÐÐÑØ€O€O�O€O€Orrcó(—eZdZUeed<ddddœiZdS)ÚVectorLLMProcessorKwargsÚ images_kwargsÚ text_kwargsF)ÚpaddingÚreturn_mm_token_type_idsN)rrrrrÚ _defaultsrrrrrs6€€€€€€Ø(Ð(Ð(Ñ(àØØ(-ð ð ð€I€I€IrrF)Útotalc 󮇗eZdZddgZdZdZdˆfd„ Z ddedee ze eze e zd e e d e fd „Zdd „Z dd„Zed„¦«ZˆxZS)ÚVectorLLMProcessorÚimage_processorÚ tokenizerr)ÚQwen2TokenizerÚQwen2TokenizerFastNc óŽ•—d|_| |j¦«|_t¦«j||fd|i|¤ŽdS)NzÚ chat_template)Ú image_tokenÚconvert_tokens_to_idsÚimage_token_idÚsuperÚ__init__)Úselfr&r'r+ÚkwargsÚ __class__s €rr0zVectorLLMProcessor.__init__sQø€Ø$ˆÔØ'×=Ò=¸dÔ>NÑOÔOˆÔØ�‰ŒÔ˜¨)Ð[Ð[À=Ð[ÐTZÐ[Ð[Ð[Ð[Ð[rÚimagesÚtextr2Úreturnc ó„—|jtfd|jji|¤Ž}i}|�|jd d|i|d¤Ž}t |t ¦«s|g}| ¦«}|�¥|jj|jj zdz}tt|¦«¦«D]l}|j ||vr7||  |j d|zd¦«||<|j ||v°7||  d|j ¦«||<Œm|d dd¦«}|d d d¦«} |j|fi|d¤Ž} | rStj| d ¦«} tj| ¦«} d| | |jk<|  ¦«| d <t)i| ¥|¥|¬ ¦«S)NÚtokenizer_init_kwargsr4réz<|placeholder|>rrÚreturn_tensorsr!Ú input_idsÚmm_token_type_ids)ÚdataÚ tensor_typer)Ú _merge_kwargsrr'Ú init_kwargsr&Ú isinstanceÚlistÚcopyrrÚrangeÚlenr,ÚreplaceÚpopÚnpÚarrayÚ zeros_liker.Útolistr) r1r4r5r2Ú output_kwargsÚ image_inputsÚnum_image_tokensÚindexr:r!Ú text_inputsÚ array_idsr<s rÚ__call__zVectorLLMProcessor.__call__$s€ð +˜Ô*Ý $ð ð à"&¤.Ô"<ð ðð ð ˆ ð ˆ Ø Ð Ø/˜4Ô/Ð`Ð`°vÐ`ÀÈÔA_Ð`Ð`ˆLå˜$¥Ñ%Ô%ð Ø�6ˆDà�yŠy‰{Œ{ˆØ Ð àÔ$Ô1°TÔ5IÔ5TÑTØñ Ð õ�s 4™yœyÑ)Ô)ð Wð W�ØÔ&¨$¨u¬+Ð5Ð5Ø"& u¤+×"5Ò"5ØÔ(Ø)Ð,<Ñ<Øñ#ô#�D˜‘KðÔ&¨$¨u¬+Ð5Ð5ð # 5œk×1Ò1Ð2CÀTÔEUÑVÔV��U‘ � à& }Ô5×9Ò9Ð:JÈDÑQÔQˆØ#0°Ô#?×#CÒ#CÐD^Ð`dÑ#eÔ#eÐ Ø$�d”n TÐJÐJ¨]¸=Ô-IÐJÐJˆ à #ð JÝœ ¨[Ô!9Ñ:Ô:ˆIÝ "¤ ¨iÑ 8Ô 8Ð ØBCÐ ˜i¨4Ô+>Ò>Ñ ?Ø/@×/GÒ/GÑ/IÔ/IˆKÐ+Ñ ,åÐ!@ KÐ!@°<Ð!@ÈnÐ]Ñ]Ô]Ð]rc óf‡‡—i}|� tj di¦«}| |¦«| dd¦«p |jjŠ| dd¦«p |jjŠˆˆfd„|D¦«}| ||dœ¦«tdi|¤ŽS)Nrrrcó •—g|] }‰‰zdz‘Œ S)r9r)Ú.0Ú_rrs €€rú zAVectorLLMProcessor._get_num_multimodal_tokens..Xs#ø€Ð XÐ XÐ XÀq ,°*Ñ"<ÀÑ!BÐ XÐ XÐ Xr)rNÚnum_image_patchesr)rr"ÚgetÚupdater&rrr)r1Ú image_sizesr2Ú vision_datarrXrrs @@rÚ_get_num_multimodal_tokensz-VectorLLMProcessor._get_num_multimodal_tokensQsÓøø€Øˆ Ø Ð "Ý4Ô>×BÒBÀ?ÐTVÑWÔWˆMØ × Ò  Ñ (Ô (Ð (Ø(×,Ò,¨^¸TÑBÔBÐgÀdÔFZÔFgˆLØ&×*Ò*¨<¸Ñ>Ô>ÐaÀ$ÔBVÔBaˆJØ XÐ XÐ XÐ XÐ XÈKÐ XÑ XÔ XÐ Ø × Ò Ø%6ÐM^Ð_Ð_ñ ô ð õÐ,Ð,  Ð,Ð,Ð,rTFc ó.—|jj|f||dœ|¤ŽS)N)Úskip_special_tokensÚclean_up_tokenization_spaces)r'Ú batch_decode)r1Úgenerated_outputsr_r`r2s rÚpost_process_image_text_to_textz2VectorLLMProcessor.post_process_image_text_to_text^s:€ð+ˆtŒ~Ô*Ø ð à 3Ø)Eð ð ðð  ð ð rcó†—|jj}|jj}tt ||z¦«¦«S©N)r'Úmodel_input_namesr&rBÚdictÚfromkeys)r1Útokenizer_input_namesÚimage_processor_input_namess rrfz$VectorLLMProcessor.model_input_namesls:€à $¤Ô @ÐØ&*Ô&:Ô&LÐ#Ý•D—M’MÐ"7Ð:UÑ"UÑVÔVÑWÔWÐWr)NNN)NNre)TF)rrrÚ attributesÚimage_processor_classÚtokenizer_classr0rr r rBr rrrRr]rcÚpropertyrfÚ __classcell__)r3s@rr%r%sø€€€€€Ø# [Ð1€JØ5ÐØ>€Oð\ð\ð\ð\ð\ð\ð"ØZ^ð+^ð+^àð+^ðÐ+Ñ+¨d°9¬oÑ=ÀÐEVÔ@WÑWð+^ðÐ1Ô2ð +^ð ð +^ð+^ð+^ð+^ðZ -ð -ð -ð -ð !Ø%*ð  ð  ð  ð  ððXðXñ„XðXðXðXðXðXrr%r)ÚnumpyrHÚ transformersrrÚ%transformers.feature_extraction_utilsrÚtransformers.image_utilsrÚtransformers.processing_utilsrrr r r Ú$transformers.tokenization_utils_baser r Úimage_processing_vectorllmrrrr%ÚregisterrrrúrxsoðØÐÐÐØ:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø>Ð>Ð>Ð>Ð>Ð>Ø/Ð/Ð/Ð/Ð/Ð/ØpÐpÐpÐpÐpÐpÐpÐpÐpÐpÐpÐpÐpÐpØMÐMÐMÐMÐMÐMÐMÐMà?Ð?Ð?Ð?Ð?Ð?ððððð˜Lñôðð ððððÐ/°uðñôððVXðVXðVXðVXðVX˜ñVXôVXðVXðr€ ÔÐ+Ð-?Ñ@Ô@Ð@ØÐÔÐ5Ð7NÑOÔOÐOÐOÐOr