PixelLink实验(一)

项目工程文件下载(SSH key的添加)

本周开始进行PixelLink模型的实验,从Github下载了作者的项目工程文件:

git clone --recursive [email protected]:ZJULearning/pixel_link.git

这里涉及到添加SSH key的问题,之前没有添加所以执行失败。SSH(Secure Shell)是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。通过加密保证了数据的保密性和完整性。SSH采用公钥加密技术验证远程主机,以及(必要时)允许远程主机验证用户。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH key最直观的作用:让你方便的登录到 SSH 服务器,而无需输入密码。由于你无需发送你的密码到网络中,SSH **对被认为是更加安全的方式。

添加SSH key需要执行以下几步:

第一步,在终端输入:

ssh-****** -t rsa -C "username"

username是电脑上的用户名。

第二步,一路回车,在/Users/your username/.ssh/id_rsa already exists.Overwrite (y/n)?中输入y,代表存储地址已成功设置。

SSH key成功生成,地址为/Users/username/.ssh/id_rsa.pub.

第三步,执行cat命令查看文件内容:

cat /User/username/.ssh/id_rsa.pub

内容为:

ssh-rsa ..............

第四步,把它整段复制到Github-Settings-SSH and GPG keys中即可成功添加。

环境搭建

第一步,添加PYTHONPATH

export PYTHONPATH=$pixel_link_root/pylib/src:$PYTHONPATH

其中,pixel_link_root是我命名的项目工程的根路径,lib/src中包含util文件夹,其中有项目需要的各种库。

但是这里出现一点小问题,在服务器添加路径后运行是没有问题的,但是在本地使用Pycharm同步时就会出现ImportError: no module named util。尝试将pylib/src的本地路径添加进去:

import sys
import os
sys.path.insert(0, os.path.join('/home/gd/pixel_link_root/pylib/src'))
import util

本地就没有报错了。

第二步,虚拟环境搭建,使用anaconda3管理环境十分方便。作者提供了一份环境的txt文件,所以只需要一行就可以:

conda env create --file pixel_link_env.txt
source activate pixel_link

就可以在anaconda的envs文件夹中看见pixel_link的虚拟环境了。

实验需要的环境主要有:

  • ubuntu14.04/16.04
  • python2.7
  • Tensorflow_gpu >= 1.1
  • opencv2
  • setproctitle
  • matplotlib

测试模型效果

第一步,下载预训练模型,根据论文PixelLink有两个模型,分别是2s和4s。作者分别提供了这两种模型在IC15数据集下的预训练模型:

解压后包含四个文件:

  • config.py
  • model.ckpt-xxx.data-00000-of-00001
  • model.ckpt-xxx.index
  • model.ckpt-xxx.meta

将它们放入model_path文件夹中。

第二步,下载ICDAR2015数据集,将其放入dataset文件夹中。

第三步,运行test.sh

cd pixel_link_root
./scripts/test.sh 3 ./model_path/conv3_3/model.ckpt-38055 ./dataset/ICDAR2015/test/images

其中,3表示GPU_ID。在跑实验之前先看看GPU的使用情况,具体命令是:

nvidia-smi

运行完毕后会生成一个检测结果的zip文件,其内容是txt文件,记录了boundingbox的位置坐标,无法直接可视化结果。作者在项目文件里提供了一个脚本scripts/vis.sh,运行即可生成带有boundingbox的图片,部分检测效果如下图所示:
PixelLink实验(一)
PixelLink实验(一)
成功案例
PixelLink实验(一)
对大型文字(multi-scale)检测效果也不是太好,可能是感受野的问题,需要思考原因。

P、R、F的计算评估考虑在ICDAR官网下载官方提供的脚本:登录ICDAR2015官网(必须注册)- Challenges - Incidental Scene Text - My Methods
PixelLink实验(一)
下载红框脚本即可。

运行命令:

python script.py –g gt.zip –s submit.zip -p '{"LTRB":true,"E2E":true}'

或者直接把zip文件上传,点击深蓝色按钮Submit results on test set…也可以。
实验使用4s模型,检测结果是P:82.9 R:81.7 F:82.3
PixelLink实验(一)
与论文中的结果完全一致。

测试任意图片

如果想要测试任意的图片,那么将想测试的图片放入文件夹image_dir,然后

cd pixel_link_root
./scripts/test_any.sh ${GPU_ID} ${model_path}/model.ckpt-xxx ${image_dir}

这个检测结果是可以直接在图片上可视化的。如果对检测结果不满意的话,要么玄学调参(调整eval_image_width, eval_image_height, pixel_conf_threshold, link_conf_threshold等等),要么训练自己的模型。

训练自己的模型

以ICDAR2015数据集举例。

首先,将其转换为tensorflow可接受的tfrecord格式,参考我之前的博客,或者用作者写的脚本都可以。

在scripts/train.sh中修改数据集的名字和路径:

DATASET=icdar2015
DATASET_DIR=$HOME/pixel_link_root/dataset/ICDAR2015

运行命令:

./scripts/train.sh ${GPU_IDs} ${IMG_PER_GPU}

下一篇的工作

下载CTW-1500数据集和Total-text数据集,跑一下看看效果。

参考文献:

https://www.jianshu.com/p/1246cfdbe460 (SSH key)

https://blog.****.net/u011489887/article/details/85767651 (可视化脚本)