[模型部署]Pix2struct用于widget caption

[模型部署]Pix2struct用于widget caption

huggingface开源网址: https://huggingface.co/google/pix2struct-widget-captioning-large

阅读笔记:click here

环境依赖

from pdf2image import convert_from_path, convert_from_bytes
import torch
from functools import partial
from PIL import Image
from transformers import Pix2StructForConditionalGeneration as psg
from transformers import Pix2StructProcessor as psp

请保证:transformers>=4.30

定义图像路径,输出文件路径与模型路径

IMAGE_PATH = "###"
OUTPUT_FILE = "###"  
MODEL_PATH = "###"
def main():
    try:
        # 加载图像
        image = Image.open(IMAGE_PATH).CONVERT("rgb")
        print("Image loading complete.")

        # 加载模型和处理器
        model = Pix2StructForConditionalGeneration.from_pretrained(MODEL_PATH)
        processor = Pix2StructRrocessor.from_pretrained(MODEL_PATH)

        # 处理图像
        question = "none"        
        inputs = processor(images=image, return_tensors="pt")
        predictions = model.generate(**inputs)

        # 解码预测结果
        decoded_output = processor.decode(predictions[0], skip_special_tokens=True)
        print(decoded_output)

        # 确保创建输出文件,并在写入前清空内容
        with open(OUTPUT_FILE, 'w') as f:
            f.write(f"Output:\n{decoded_output}\n")
    except Exception as e:
        # 确保创建输出文件,并在写入前清空内容
        with open(OUTPUT_FILE, 'w') as f:
            error_message = f"Error: {str(e)}\n"
            error_trace = traceback.format_exc()
            print(error_message)
            print(error_trace)
            f.write(error_message)
            f.write(error_trace)

if __name__ == "__main__":
    main()

执行该代码可以成功执行推理。

一些讨论
注意,如果进行condition generation,除图片输入外,还需要添加一个header。

实现widget caption设置r为 condition generation时,报错:“ValueError: A header text must be provided for VQA models.”

huggingface模型描述中缺少如何添加用于定位小部件的边界框的信息,描述只是说它应该与 pix2struct-textcaps-base 相同,实际上情况并非如此。

TODO:添加bounding box而不是question作为header。

复现时,作者找到了数据集尝试寻找描述bounding box的方法,没有得到有效解决方式。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pix2pix模型是一种用于图像转换的深度学习模型,它可以将输入图像转换为对应的输出图像。在原始的pix2pix模型中,使用了条件生成对抗网络(Conditional Generative Adversarial Network,简称CGAN)的思想,通过生成器和判别器的对抗训练来实现图像转换。 针对pix2pix模型的改进,有以下几个方向: 1. 条件实例归一化(Conditional Instance Normalization,简称CIN):传统的pix2pix模型在生成器中使用了批归一化(Batch Normalization,简称BN)层来加速训练和提高生成效果。但是,BN层会将输入图像的全局统计信息引入到生成过程中,导致生成结果缺乏多样性。CIN通过在BN层后引入条件信息,使得生成器可以根据输入条件进行个性化的图像生成。 2. 风格迁移(Style Transfer):pix2pix模型可以用于将输入图像转换为特定风格的输出图像。为了进一步提高风格迁移的效果,可以引入风格损失函数,通过最小化输入图像与目标风格图像之间的差异来实现更好的风格迁移效果。 3. 增强生成器和判别器的结构:可以通过增加生成器和判别器的层数、调整网络结构等方式来改进pix2pix模型的性能。例如,可以使用U-Net结构作为生成器,增加跳跃连接来提高图像细节的保留;或者使用PatchGAN判别器,对图像的局部区域进行判别,以获得更细粒度的图像转换结果。 4. 数据增强和正则化:在训练过程中,可以通过数据增强技术(如随机裁剪、旋转、翻转等)来扩充训练数据集,提高模型的泛化能力。同时,还可以使用正则化方法(如L1或L2正则化)来约束生成器的输出,使得生成结果更加平滑和真实。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值