主要功能实现了linux服务器上TensorFlow框架下对视频流里的人脸检测定位。具体使用基于SSD mobilenet预训练好的模型, WIDERFACE dataset数据集做训练,基于Google开源项目框架object detection api 做人脸检测。
github网址https://github.com/yeephycho/tensorflow-face-detection
首先将源码下载下来,地址1https://github.com/yeephycho/tensorflow-face-detection
地址2https://github.com/tensorflow/models/
下载以后,就得到一个models或models-master文件夹,我们要的源码在models/research/object_detection/文件夹里。
下面是实现过程遇到的问题备忘。
1.protoc版本问题
Tensorflow Object Detection API要求protoc版本为2.6.0以上,可以使用protoc --version 命令查看版本,如果低于这个版本的或者编译出错,需要升级。我的电脑的版本是2.6.1,在object_detection上一级文件目录下输入命令
protoc object_detection/protos/*.proto --python_out=.编译报错为:
object_detection/protos/ssd.proto:87:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:87:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.
使用卸载命令sudo apt-get remove libprotobuf-dev,发现protoc版本还是2.6.1。
2.解决办法
下载最新版本protoc3.6.6 https://github.com/google/protobuf/releases ,或3.3
参考 https://www.cnblogs.com/YouXiangLiThon/p/7590779.html
tensorflow$ mkdir protoc_3.3
tensorflow$ cd protoc_3.3
tensorflow/protoc_3.3$ wget wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip
tensorflow/protoc_3.3$ chmod 775 protoc-3.3.0-linux-x86_64.zip
tensorflow/protoc_3.3$ unzip protoc-3.3.0-linux-x86_64.zip
tensorflow/protoc_3.3$ cd ../models-master/
tensorflow/protoc_3.3$ /home/humayun/tensorflow/protoc_3.3/bin/protoc object_detection/protos/*.proto --python_out=.
新建protoc_3.3在该文件夹中将压缩包解压。在protoc_3.3文件夹中输入如下命令:
有报错,说明在当前的protoc_3.3文件夹里没有object_detection 文件,无法被protoc,因此可以进入bin文件夹,里面有object_detedtion 文件,或者在将object_detection文件复制到protoc_3.3中。
无报错。打开Protos文件夹,proto文件生成了.py文件。
至此 问题初步解决。