【TensorFlow】im2txt — 将图像转为叙述文本

本文档介绍了如何使用TensorFlow的im2txt项目将图像转化为叙述文本,包括下载im2txt、安装依赖、下载模型和词汇、编写及运行脚本等步骤。在运行过程中可能遇到的build错误、找不到im2txt包、LSTM单元命名问题、读取图片错误以及输出相同文本等问题,文中给出了相应的解决方案。
摘要由CSDN通过智能技术生成

完整项目已上传 Github —— im2txt
模型需要单独下载,Github 免费版不能上传大于100M的文件

1. 下载 im2txt

tensorflow/models 下面有很多模型,但是我们只需要 im2txt,不过在 Github 上面下载子文件夹有点麻烦,所以还是下载整个 models,也许以后会用到其他的模型:

git clone https://github.com/tensorflow/models.git

下载好了之后将 models/research/im2txt/im2txt 文件夹复制到你的工作区。

2. 安装必要的包

首先按照 Github 上 im2txt 的说明,安装所有必需的包:

3. 下载模型和词汇

如果要自己训练模型,按照官网的说法,需要先下载几个小时的数据集,然后再训练1~2周,最后还要精调几个星期。

训练要花不少时间,所以用训练好的模型,下载地址是:

下载之后放在im2txt/model文件夹下:

im2txt/
    ......
    model/
        graph.pbtxt
        model.ckpt-2000000
        model.ckpt-2000000.meta

同时下载包含词语的文件 word_counts.txt,下载好之后放在 data 文件夹下:

im2txt/
    ......
    data/
        ......
        word_counts.txt

4. 编写脚本

在 im2txt 文件夹下新建一个 run.sh 脚本文件,输入以下命令:

CHECKPOINT_PATH="${HOME}/im2txt/model/train"
VOCAB_FILE="${HOME}/im2txt/data/mscoco/word_counts.txt"
IMAGE_FILE="${HOME}/im2txt/data/mscoco/raw-data/val2014/COCO_val2014_000000224477.jpg"

bazel build -c opt //im2txt:run_inference

bazel-bin/im2txt/run_inference \
  --checkpoint_path=${CHECKPOINT_PATH} \
  --vocab_file=${VOCAB_FILE} \
  --input_files=${IMAGE_FILE}

其中的变量用自己的路径代替,比如我当前设置的路径:

CHECKPOINT_PATH="/home/w/workspace/tensorflow-space/tensorflow-gpu/practices/im2txt/model/model.ckpt-2000000"
VOCAB_FILE="/home/w/workspace/tensorflow-space/tensorflow-gpu/practices/im2txt/data/word_counts.txt"
IMAGE_FILE="/home/w/workspace/tensorflow-space/tensorflow-gpu/practices/im2txt/data/images/1.jpg"

bazel build -c opt run_inference

bazel-bin/im2txt/run_inference \
  --checkpoint_path=${CHECKPOINT_PATH} \
  --vocab_file=${VOCAB_FILE} \
  --input_files=${IMAGE_FILE}

5. 运行脚本

将当前工作目录设置为 im2txt,设置脚本的权限:

sudo chmod 777 run.sh

然后将工作目录设置为 im2txt 的上层目录,运行脚本:

./im2txt/run.sh

输出结果如下,感觉结果还不错:

评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值