blip模型复现Image-Text Retrieval

1.从github上下载blip源代码
2.下载coco训练集,train2014、val2014、test2014(将三个数据集放到一个文件夹,步骤5中需要用到)
http://images.cocodataset.org/zips/train2014.zip
http://images.cocodataset.org/zips/val2014.zip
http://images.cocodataset.org/zips/test2014.zip
3.下载预训练模型model_base_retrieval_coco.pth(或者readme里找一下)
https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_retrieval_coco.pth
4.修改train_retrieval.py中的–config ./configs/retrieval_coco.yaml \以及–output_dir output/retrieval_coco
5.修改config中retrieval_coco.yaml中的image_root路径(此处为数据集路径)
6.修改config中retrieval_coco.yaml中的pretrained(此处为预训练模型路径)
注意:若路径未修改会报错:ConnectionError,意思是默认从外网下载数据集和预训练模型,所以需要在官网或r下载后按照5.6操作进行
7.修改bert模型路径
def init_tokenizer():
tokenizer = BertTokenizer.from_pretrained(‘bert-base-uncased’)
因为blip的text decoder用的是bert,也是默认从hugging face上下载,所以需要手动修改BertTokenizer.from_pretrained(‘bert-base-uncased’)将括号中修改成自己下载好的路径。
(由于本人用的vscode连接服务器,路径代码没更新,一直是ConnectionError的报错,踩了个大坑,所以如果还有报错ConnectionError的情况,则需要将这段路径直接在服务器上修改)
8.对于单卡的情况,代码需要修改(终端输入)

CUDA_VISIBLE_DEVICES=“0” python -m torch.distributed.launch --nproc_per_node=1 train_retrieval.py --config xxx --output_dir xxx --evaluate

以上如果顺利就可以复现成功,下面是我在复现中遇到的报错
1.torch. cuda.OutofMemorvError:此时需要把batch_size调小
2RuntimeError: Default process group has initialized,please make sure to call init process group:
可以在train_retrieval.py中import os下面加上os.environ[‘CUDA_VISIBLE_DEVICES’]='0’指定用哪个卡(0可以改成1.2.3,看哪个空着用哪个)
3.然后终端输入(因为我的服务器只有一个GPU,没法分布式训练)
python -m torch.distributed.run --nproc_per_node=1 train_retrieval.py
–config ./configs/retrieval_coco.yaml
–output_dir output/retrieval_coco
4.encoder_output = image_feats[topk_idx.cpu()].to(device)

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值