【CV7】Caffe_SSD三字码识别,ckpt文件转pb文件,人脸检测与识别
发布日期:2021-04-30 21:03:42 浏览次数:88 分类:精选文章

本文共 3593 字,大约阅读时间需要 11 分钟。

Caffe_SSD三字码识别

1. check List

  • 检查 CUDA nvcc -V环境是否安装正常,如果不正常则去安装 NVIDIA、CUDA、CUDNN(版本搭配)。
  • 由于 Python2 即将落幕,所以我们这次在 Ubuntu18.04 中使用自带的 Python3.6 进行开发。
  • 使用以下命令检查软连接是否正常:
    sudo ldconfig
  • 2. 正式安装

  • 安装依赖软件:
    sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilerssudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libopenblas-dev liblapack-dev libatlas-base-devsudo apt-get install git cmake build-essential
  • 从官方网站下载并编译 OpenCV:
    • 访问 OpenCV官网,下载 3.x 系列,解压到安装目录并进入。
    • 创建编译目录并执行:
      mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/localmake -j8
    • 编译过程中可能会出现 OpenCV 3.1 与 CUDA 8.0 不兼容的问题,需修改 opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 文件内容。
  • 安装完成后验证 OpenCV 版本:
    pkg-config --modversion opencv
  • 安装 Caffe-SSD:
    • 克隆仓库并切换分支:
      git clone https://github.com/weiliu89/caffe.gitcd caffeegit checkout ssd
    • 再次安装依赖软件:
      sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilerssudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libatlas-base-dev python-devsudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
    • 修改 Makefile.config 文件:
      cp Makefile.config.example Makefile.configvim Makefile.config
    • 应用 CUDNN 和 OpenCV:
      • 修改 CUDNN 支持:
        # 取消注释:USE_CUDNN := 1USE_CUDNN := 1
      • 修改 OpenCV 版本:
        # 取消注释:OPENCV_VERSION := 3OPENCV_VERSION := 3
    • 启用 Python 接口并修改 Python 路径:
      • 修改 Python 支持:
        # 取消注释:WITH_PYTHON_LAYER := 1WITH_PYTHON_LAYER := 1
      • 修改 Python 路径:
        INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
    • 注释 Python2 依赖并切换到 Python3:
      # 取消注释:PYTHON_INCLUDE := /usr/include/python2.7# PYTHON_INCLUDE := /usr/lib/python2.7/dist-packages/numpy/core/includePYTHON_INCLUDE := /usr/include/python3.6mPYTHON_INCLUDE := /usr/lib/python3.6/dist-packages/numpy/core/include
  • 编译 Caffe:
    make all -j32make test -j32make pycaffemake runtest -j32
  • 如果遇到 无法找到 -lopenblas 错误,请安装 OpenBLAS:
    sudo apt install liblapack-dev liblapack3 libopenblas-base libopenblas-dev
  • Caffe 安装完成。

  • 2.ckpt 转 pb 文件(Fast R-CNN)

    import tensorflow as tffrom tensorflow.python.framework import graph_utilfrom tensorflow.python import pywrap_tensorflowdef freeze_graph(input_checkpoint, output_graph):    output_node_names = "SCORE/resnet_v1_101_5/cls_prob/cls_prob/scores,SCORE/resnet_v1_101_5/bbox_pred/BiasAdd/bbox_pred/scores,SCORE/resnet_v1_101_5/cls_pred/cls_pred/scores"    saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)    graph = tf.get_default_graph()    input_graph_def = graph.as_graph_def()    with tf.Session() as sess:        saver.restore(sess, input_checkpoint)        output_graph_def = graph_util.convert_variables_to_constants(            sess=sess,            input_graph_def=input_graph_def,            output_node_names=output_node_names.split(",")        )        with tf.gfile.GFile(output_graph, "wb") as f:            f.write(output_graph_def.SerializeToString())    print("%d ops in the final graph." % len(output_graph_def.node))# 示例使用input_checkpoint = './checkpoints/res101_faster_rcnn_iter_70000.ckpt'output_pb_path = './checkpoints/frozen_model.pb'freeze_graph(input_checkpoint, output_pb_path)

    3. 人脸检测识别

    3.1 MTCNN(人脸检测)

    MTCNN 是一种经典的人脸检测算法,主要包括三个步骤:

  • PnP(多框标注修正):用于修正图片中的人脸框。
  • RPN(区域建议网络):用于生成多个人脸区域建议。
  • Dbox(人脸_box):用于精确定位人脸位置。
  • 3.2 FaceNet(人脸识别)

    FaceNet 是一个基于深度学习的统一人脸特征提取模型,能够从任意深度学习模型中提取人脸特征。其训练数据集包括:

    训练完成后,可通过 .dat 文件进行模型测试。

    上一篇:9-Springboot任务管理
    下一篇:CSS基础知识点总结、三

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2026年05月24日 19时50分06秒