文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
10.1 demo
%load_ext autoreload
%autoreload 2
from main import *
opt = Config()
opt.caption_data_path = 'caption.pth' # 原始数据
opt.test_img = 'img/example.jpeg' # 输入图片
opt.use_gpu = False # 是否使用 GPU(没必要)
opt.model_ckpt='caption_0914_1947' # 预训练的模型
# 数据预处理
data = t.load(opt.caption_data_path)
word2ix,ix2word = data['word2ix'],data['ix2word']
IMAGENET_MEAN = [0.485, 0.456, 0.406]
IMAGENET_STD = [0.229, 0.224, 0.225]
normalize = tv.transforms.Normalize(mean=IMAGENET_MEAN,std=IMAGENET_STD)
transforms = tv.transforms.Compose([
tv.transforms.Scale(opt.scale_size),
tv.transforms.CenterCrop(opt.img_size),
tv.transforms.ToTensor(),
normalize
])
img_ = Image.open(opt.test_img)
img = transforms(img_).unsqueeze(0)
img_.resize((int(img_.width*256/img_.height),256))
<PIL.Image.Image image mode=RGB size=340x256 at 0x7F5471DAA080>
# 用 resnet50 来提取图片特征
# 如果本地没有预训练的模型文件,会自动下载
resnet50 = tv.models.resnet50(True).eval()
del resnet50.fc
resnet50.fc = lambda x:x
if opt.use_gpu:
resnet50.cuda()
img = img.cuda()
img_feats = resnet50(Variable(img,volatile=True))
# Caption 模型
model = CaptionModel(opt,word2ix,ix2word)
model = model.load(opt.model_ckpt).eval()
if opt.use_gpu:
model.cuda()
results = model.generate(img_feats.data[0])
print('\r\n'.join(results))
一个 穿着 西装 的 男人 和 一个 穿着 裙子 的 女人 站 在 道路 上 </EOS>
一个 穿着 西装 的 男人 搂 着 一个 穿着 裙子 的 女人 站 在 道路 上 </EOS>
一个 穿着 西装 的 男人 和 一个 穿着 裙子 的 女人 站 在 室外 </EOS>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论