技术咨询、项目合作、广告投放、简历咨询、技术文档下载 点击这里 联系博主

# tensorflow自带demo演示

目标检测主要步骤有:

  1. 使用 labelimg 对图片做标注
  2. 使用 object_detection 下的工具 create_pascal_tf_record 将 xml 文件转换成 tfrecord 文件或者将 xml 转化昵称 csv 然后将 csv 转换成 tfrecord 文件
  3. 仿照 TensorFlow models/research/object_detection/data 文件夹下的 .pbtxt 文件编写自己的 .pbtxt 文件
  4. 选择目标算法并从 TensorFlow models/research/object_detection/samples/configs 文件夹内选择合适的一个 .config 文件(团队使用的是 ssd)并修改对应的参数,其中包括步数 num_steps,以及模型文件输出路径
  5. 选择 TensorFlow 中训练好的模型 SSD/Fast-RCNN 并选择 object_detection 中对应的 api 进行模型训练
  6. 使用训练好的模型进行目标检测;
  7. 如果训练出来的准确率不是很高需要对步长,算法以及 batch_size 进行微调

# 一、安装依赖及环境

0、使用 pyenv 新增一个虚拟环境

    pyenv virtualenv 3.7.5 object_detection_demo
    source ~/.bashrc
    pyenv activate object_detection_demo

1、安装 Python 、TensorFlow 和其他依赖项

    pip install tensorflow===1.3.1
    pip install Pillow==5.4.1
    pip install lxml==4.3.2
    pip install jupyter==1.0.0
    pip install matplotlib==3.0.3

2、安装 Protoc, 进入Protoc (opens new window)下载页,下载对应的编译好的 zip 包。

下载后bin目录下会有一个protoc二进制文件,覆盖到对应目录:

    cp bin/protoc /usr/local/bin/protoc

注意:应该拷贝到/usr/local/bin(可以读写)目录下不是/usr/bin(只读),否则会提示 Operation not permitted, 这一步踩了好多坑。

3、从github上下载目标检测 API 的源代码

    git clone --branch r1.13.0 --depth 1 https://github.com/tensorflow/models

4、编译Protobuf,进入 tensorflow/models/research 目录,运行下面命令进行编译:

    protoc object_detection/protos/*.proto --python_out=.

5、在当前目录下,添加slim环境变量

    export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

6、测试目标检测 API 是否安装成功,下图中表示安装成功

    python object_detection/builders/model_builder_test.py

/images/ai/demo

7、运行notebook Demo,浏览器会自动跳转至如下界面:

/images/ai/demo

进入 object_detection 文件夹中的 object_detection_tutorial.ipynb:

/images/ai/demo

7、点击 Cell 内的Run All,等待 3 分钟左右,就可以显示如下效果:

/images/ai/demo

8、新增自己的图片再次测试

在 models/research/object_detection/test_images 中新增一张图片,并且命名为 imageX.jpg。

/images/ai/demo

然后更改

    TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(1, 4) ]

结果:

/images/ai/demo

# 可能会遇到的问题

1、AttributeError: module 'tensorflow' has no attribute 'contrib'

解决办法:因为 tf2.0 已经将 contrib 剥离,所以需要回退到 tf1.x

【未经作者允许禁止转载】 Last Updated: 2/4/2024, 6:06:40 AM