Langboat / Mengzi

Mengzi Pretrained Models
Apache License 2.0
534 stars 63 forks source link

test_ch.yaml文件 #27

Closed jiangix-paper closed 2 years ago

jiangix-paper commented 2 years ago

您好,多模态oscar模型,在acc-icc数据集进行推理的时候,采用语句是: python -m torch.distributed.launch --nproc_per_node=8 oscar/run_captioning.py \ --data_dir \ --do_test --test_yaml test_ch.yaml \ --num_beams 5 --per_gpu_eval_batch_size 128 --max_gen_length 20 \ --eval_model_dir

请问test_ch.yaml文件是位于哪里呢

ckmstydy commented 2 years ago

进行Image Caption的inference,需要将数据格式调整为Oscar的能够接受的输入。可以参考Oscar项目中提供的下载链接,里面的Datasets部分,下载coco的数据,里面有对应的.yaml文件。 将图像转换为对应的格式,参考其test.yaml编写test_ch.yaml即可。

jiangix-paper commented 2 years ago

好的,非常感谢回复。按照这个说明,我目前已经跑通了下图中的命令: image 跑完之后,我在输出文件夹中看到的输出文件是这样的: image 想问一下,输出这三个文件是说明以上命令运行成功了吗?接下来要怎么将这些文件作为mengzi-oscar的输入呢?非常感谢

ckmstydy commented 2 years ago

好的,非常感谢回复。按照这个说明,我目前已经跑通了下图中的命令: image 跑完之后,我在输出文件夹中看到的输出文件是这样的: image 想问一下,输出这三个文件是说明以上命令运行成功了吗?接下来要怎么将这些文件作为mengzi-oscar的输入呢?非常感谢

是的,predictions.tsv保存了目标检测的结果。需要参照mengzi-oscar的输入格式,写个脚本将predictions.tsv里的object tags与image features分割开,调整成输入格式即可,并不复杂。同时注意将tags利用词表进行英到中的转换。

jiangix-paper commented 2 years ago

嗯嗯。想再跟您确认一下。我使用的是这个项目中已经处理好的tsv文件 image 然后,我下载了预训练模型vinvl_vg_x152c4.pth和labelmap文件。在执行上述命令的时候,我将MODEL.WEIGHT目录改为预训练文件所在的目录,将DATA_DIR改为tsv文件所在的文件夹,OUTPUT_DIR改成自己新建的一个输出文件夹。同时,将vinvl_x152c4.yaml文件中相关配置项做了如下修改: 捕获 捕获1

然后,运行test_sg_net.py文件。就生成了predictions.tsv文件。我生成的tsv文件打开后是这样的: image

请问这个文件是否正确?如果要提取object tags的话,是其中的哪个字段呀?还有一个提取feature的话是不是提取文件中这一串字符就可以呢?还是需要借助predictions.pth呢?非常感谢您的耐心回复

ckmstydy commented 2 years ago

嗯嗯。想再跟您确认一下。我使用的是这个项目中已经处理好的tsv文件 image 然后,我下载了预训练模型vinvl_vg_x152c4.pth和labelmap文件。在执行上述命令的时候,我将MODEL.WEIGHT目录改为预训练文件所在的目录,将DATA_DIR改为tsv文件所在的文件夹,OUTPUT_DIR改成自己新建的一个输出文件夹。同时,将vinvl_x152c4.yaml文件中相关配置项做了如下修改: 捕获 捕获1

然后,运行test_sg_net.py文件。就生成了predictions.tsv文件。我生成的tsv文件打开后是这样的: image

请问这个文件是否正确?如果要提取object tags的话,是其中的哪个字段呀?还有一个提取feature的话是不是提取文件中这一串字符就可以呢?还是需要借助predictions.pth呢?非常感谢您的耐心回复

1、文件是没问题的,你可以根据原始图片检查一下predictions.tsv里每个object的class是否在图片里有对应的物体。 2、进行caption的inference时,mengzi-oscar的输入分成了两部分,一个.label.tsv文件保存object tags,另一个.feature.tsv保存features,提取码(ehte)是这两个文件的简单demo以及test_ch.yaml,你可以参照格式,将自己的predictions.tsv进行拆分转换,需要注意两点:(1)predictions.tsv原始的物体class是英文的,要转换为中文(利用提供的dict),(2)predictions.tsv里的feature是base64编码的2048维向量,没有添加最后6为的位置信息,要添加。 3、不需要借助predictions.pth

jiangix-paper commented 2 years ago

好的,我这边检查到object中class是在图片中有对应物体,说明识别的没问题。还有几个问题需要麻烦您一下: 1)英文标签转化为中文的,这个链接好像已经失效了,可否麻烦提供一份转化列表 捕获6 2)我看您给的wenlan.feature.tsv中feature向量,我理解是将一张图片中所有feature的base64编码进行了组合,请问您说的6位的位置信息是指?请问这个要咋添加呀? 3)我看test_ch.yaml文件中只需要提供四个tsv文件,没有相关的lineidx文件,请问lineidx文件在此处是否是不需要的,如果需要的话,想请问一下这个lineidx文件是如何生成的?

或者可否麻烦您提供一下实例wenlan中的predictions.tsv,我这边自己研究一下如何构建6位编码信息~,非常感谢~

ckmstydy commented 2 years ago

好的,我这边检查到object中class是在图片中有对应物体,说明识别的没问题。还有几个问题需要麻烦您一下: 1)英文标签转化为中文的,这个链接好像已经失效了,可否麻烦提供一份转化列表 捕获6 2)我看您给的wenlan.feature.tsv中feature向量,我理解是将一张图片中所有feature的base64编码进行了组合,请问您说的6位的位置信息是指?请问这个要咋添加呀? 3)我看test_ch.yaml文件中只需要提供四个tsv文件,没有相关的lineidx文件,请问lineidx文件在此处是否是不需要的,如果需要的话,想请问一下这个lineidx文件是如何生成的?

或者可否麻烦您提供一下实例wenlan中的predictions.tsv,我这边自己研究一下如何构建6位编码信息~,非常感谢~

1、code里有个chinese_label.json文件,dict就是这个 2、位置信息是指一个物体的目标检测结果,会有一个4维的bounding box [x1, y1, x2, y2](左上右下坐标), image 用来说明它在图像里的位置。需要将其拓展为6维。假设图像宽、高为W, H,这6维是这样[x1/W, y1/H, x2/W, y2/H, (x2-x1)/W, ( y2-y1)/H],图像的宽高在输入目标检测模型的train.hw.tsv文件里有保存。 你可以尝试一下把位置编码加入,实现格式转换。如果不行,我们后续考虑整理下转换代码,提供一下。 3、lineidx文件需要。是用来按行读取tsv文件的,每一个tsv文件都有对应的lineidx文件。它是在把数据写入tsv文件时生成的。 4、predictions.tsv,其实跟你生成的predictions.tsv数据格式上是一样的。

jiangix-paper commented 2 years ago

您好。我使用下列代码尝试将每个bbox中feature的base64编码进行解码得到向量, image

解码出的向量是8192(20484)维的。同时将您给的predictions.tsv和wenlan.feature.tsv进行对比,对于一张图片的最终feature,假设向量维度是y,我发现y=(2048 + 6)4*num(bbox)。这边想请问为什么需要乘以4呢,如果这样的话,我是不是对于6维的位置向量也需要扩展4倍成为24维的呢?具体扩展的逻辑是直接复制四份嘛?好像如果不乘4,两个文件的维度无法对应。

还有一个问题,请问是不是最终输到mengzi-oscar模型的数据,就是包含您给的test_ch.yaml中这几个文件及其对应的lineidx文件,一共是八个文件? image

非常感谢!

jiangix-paper commented 2 years ago

您好,可否方便提供一份完整的用于图生文的数据集(包含yaml以及对应的tsv和lineidx文件) image 不知道shi'bu's是不是caption写的有问题,程序在运行的时候会报这个错: image

希望能提供一份完整的用于图生文测试的数据集,非常感谢

ckmstydy commented 2 years ago

您好,可否方便提供一份完整的用于图生文的数据集(包含yaml以及对应的tsv和lineidx文件) image 不知道shi'bu's是不是caption写的有问题,程序在运行的时候会报这个错: image

希望能提供一份完整的用于图生文测试的数据集,非常感谢

抱歉,没跟你说明白,只是做inference的话self.key2captions是不需要的,你可以直接把73行注释掉试下。

ckmstydy commented 2 years ago

您好。我使用下列代码尝试将每个bbox中feature的base64编码进行解码得到向量, image

解码出的向量是8192(2048*4)维的。同时将您给的predictions.tsv和wenlan.feature.tsv进行对比,对于一张图片的最终feature,假设向量维度是y,我发现y=(2048 + 6)_4_num(bbox)。这边想请问为什么需要乘以4呢,如果这样的话,我是不是对于6维的位置向量也需要扩展4倍成为24维的呢?具体扩展的逻辑是直接复制四份嘛?好像如果不乘4,两个文件的维度无法对应。

还有一个问题,请问是不是最终输到mengzi-oscar模型的数据,就是包含您给的test_ch.yaml中这几个文件及其对应的lineidx文件,一共是八个文件? image

非常感谢!

不知道你代码里的img_raw_base64是怎么获得的,是把wenlan.feature.tsv里所有的用base64编码的信息拼到了一起吗?如果是这样,那么你说的4应该是4张图片,wenlan.feature.tsv里包含了4张图片的信息,对于一张图片,用frombuffer解码之后的维度应该是2054*num(bbox)的,你可以reshape成【2056,num_box】 如果你下载了oscar的源码,可以用TSVFile(from utils.tsv_file import TSVFile)来读取tsv文件。

jiangix-paper commented 2 years ago

好的,我这边已经调试通过了,非常感谢

jjl001 commented 1 year ago

test_ch.yaml 的百度网盘链接失效了,可以再提供一下吗?谢谢

KosukeTrue commented 1 year ago

请问 mengzi-oscar-base-caption 具体如何载入,

python -m torch.distributed.launch --nproc_per_node=8 oscar/run_captioning.py --data_dir --do_test --test_yaml test_ch.yaml --num_beams 5 --per_gpu_eval_batch_size 128 --max_gen_length 20 --eval_model_dir

中的 eval_model_dir 后面接 https://huggingface.co/Langboat/mengzi-oscar-base-caption/tree/main 下载的目录吗

fanrong26 commented 1 year ago

好的,我这边已经调试通过了,非常感谢

您好,我看见你似乎使用到了vinvl_vg_x152c4.pth的预训练模型,请问你还有这份模型文件吗?官方的链接进不去