完整项目已上传 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 的说明,安装所有必需的包:
- Bazel
- TensorFlow 1.0或更高版本
- NumPy
- Natural Language Toolkit (NLTK)
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
输出结果如下,感觉结果还不错: