宠物识别我们使用到了tensorflow object-detection API  (https://github.com/tensorflow/models/tree/master/research/object_detection)

  其中的Quick Start 2向我们介绍了这个项目(https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_pets.md)

  安装建议直接下载一份tensorflow/models文件夹的全部内容

  为了降低机器学习的时间成本和训练需要的金钱成本(毕竟不是所有人都会为机器学习购买昂贵的的显卡和内存),各家公司都推出了云机器学习的服务,如阿里云的机器学习PAI(华东2是免费的,但是我确实看不懂怎么用......)和GOOGLE的ML Engine等,这里我们使用到了Google的ML Engine,试用Google Cloud Platform(以下简称GCP)需要Visa或者Master Card的认证,认证完成可以获得300美元的试用机会,可在谷歌云平台的所有产品中使用。这里过验证我申请了一张建设银行的e付卡(Visa版)成功通过了验证,下面开始正式的ML Engine使用(详细的过程可以跟随running_pets.md中的步骤进行):

  1.创建GCP项目 这里我创建了名为My First Project的项目

  2.安装Cloud SDK,这里我选择安装了Windows版并全选了所有选项,之后使用gcloud auth login在浏览器中登录谷歌账号或使用gcloud init完成初始化,便可以在console中使用google SDK

  不过在设置中我遇到了设置代理错误的问题,提示

Network diagnostic detects and fixes local network connection issues.
Checking network connection...failed.
ERROR: gcloud crashed (TypeError): setproxy() takes at most 7 arguments (8 given) If you would like to report this issue, please run the following command:
gcloud feedback To check gcloud for common problems, please run the following command:
gcloud info --run-diagnostics

  gcloud version

Google Cloud SDK 186.0.0
bq 2.0.28
core 2018.01.22
gsutil 4.28

  查了下Stack Overflow ,发现是谷歌自己的问题.......解决方案是下载185版本(https://console.cloud.google.com/storage/browser/cloud-sdk-release?authuser=0&prefix=google-cloud-sdk-185)

  这周的187版本中会修复本问题,程序要求Python2.7环境,所以先下了一个捆绑python的版本凑合用吧,需要手动配置环境变量才能在powershell中使用,我相信这应该不是问题。

  (因为后面要配置本地环境,又换回了linux,安装过程大同小异,使用交互式的安装后再下载185版本安装即可)

  3.启用机器学习API,在打开的网页中选择需要启用API的项目 点继续等待完成。

  4.创建用于存储的Bucket,这里我创建了takefetter_pets_detector的Bucket,之后便可以向此Bucket上传文件,记住这个Bucket的名字,之后我们会使用多次。

  或者是使用如下方法进行定义(类似win下使用set命令)

export YOUR_GCS_BUCKET=${takefetter_pets_detector}

  5.接下来配置本地的环境过程(这里我一开始使用到了WSL Ubuntu进行配置,分区目录挂载在/mnt/下,更换国内源......然后发现居然连不上网,github上的issue里的解决方案用了也没用,又回到了机械硬盘安装的deepin上)

   根据https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md的步骤安装所需的库和配置环境并测试

   6.接下来在tensorflow/models/research/目录下执行

wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/annotations.tar.gz
tar -xvf images.tar.gz
tar -xvf annotations.tar.gz

  7.运行

python object_detection/dataset_tools/create_pet_tf_record.py \
--label_map_path=object_detection/data/pet_label_map.pbtxt \
--data_dir=`pwd` \
--output_dir=`pwd`

    这里很容易遇到

Traceback (most recent call last):
File "object_detection/dataset_tools/create_pet_tf_record.py", line 41, in <module>
from object_detection.utils import dataset_util
ModuleNotFoundError: No module named 'object_detection'

    原因是中间配置环境过程中其实输入了这么一步,但是重开shell之后便失效了

    解决方法是输入 如下命令

    Linux:

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

    Windows:

set PYTHONPATH=<PATH_TO_MODELS>;<PATH_TO_MODELS>\slim

    再次执行python就好了,执行中可能会遇到一些warnings,直接忽略就行.

    在research目录下可以得到以下两个文件,如图所示,在object_detection/data下会生成pb.txt文件

   8.之后便是将文件上传到bucket中,不要忘记

export YOUR_GCS_BUCKET=${takefetter_pets_detector}

   运行

1
2
3
gsutil cp pet_train.record gs://${YOUR_GCS_BUCKET}/data/pet_train.record
gsutil cp pet_val.record gs://${YOUR_GCS_BUCKET}/data/pet_val.record
gsutil cp object_detection/data/pet_label_map.pbtxt gs://${YOUR_GCS_BUCKET}/data/pet_label_map.pbtxt

   等了半天没有相应,所以我通过浏览器建了data文件夹把这三个文件传上去了.....200多k的上传和下载真的难受

  9.从头开始培训最先进的物体探测器可能需要数天时间,即使使用多个GPU也是如此! 为了加速训练,我们将在不同的数据集(COCO)上训练一个对象检测器,并重新使用它的一些参数来初始化我们的新模型。   

wget http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz
tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz
gsutil cp faster_rcnn_resnet101_coco_11_06_2017/model.ckpt.* gs://${YOUR_GCS_BUCKET}/data/

  下载tar文件并上传其中model.ckpt开头的三个文件到data目录下.

  10.之后需将sample中的文件faster_rcnn_resnet101_pets.config文件中带有gs::///data/的部分全部替换为gs://${YOUR_GCS_BUCKET}/data/,如

gs://takefetter_pets_detector/data/

   并上传

至此,我们的bucket/data目录下文件如图所示

接下来就可以训练数据集了

  11.在research目录下使用

python setup.py sdist
(cd slim && python setup.py sdist)

打包tfslim和object detection API,之后运行

gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` \
--runtime-version 1.4 \
--job-dir=gs://takefetter_pets_detector/train \
--packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz \
--module-name object_detection.train \
--region us-central1 \
--config object_detection/samples/cloud/cloud.yml \
-- \
--train_dir=gs://takefetter_pets_detector/train \
--pipeline_config_path=gs://takefetter_pets_detector/data/faster_rcnn_resnet101_pets.config

开始训练,训练过程中会遇到日志中显示ImportError: No module named matplotlib.pyplot的错误,需要在research目录下生成的setup.py中的REQUIRED_PACKAGES中添加'matplotlib',(方法来自https://stackoverflow.com/questions/47196673/import-error-matplotlib-pyplot)但是又出现了其他的错误,最终在

https://github.com/tensorflow/models/issues/2739下找到了andersskog的方法,改了好多文件终于是跑起来了.

通过

tensorboard --logdir=gs://takefetter_pets_detector

启动tensorboard服务,可以打开127.0.0.1:6006查看相关的信息.

最终经过2个小时的训练..... tensorboard上并没有显示和例程中一样的结果...... 因此我决定先做自己的数据集吧,改天再做 毕竟Google ML Engine收费还是很贵的.......

确实不知道错在哪,欢迎在评论中指教。

使用Google Cloud Platform构建机器学习项目-宠物识别的更多相关文章

  1. 使用Gardener在Google Cloud Platform上创建Kubernetes集群

    Gardener是一个开源项目,github地址: https://github.com/gardener/gardener/ 使用Gardener,我们可以在几分钟之内在GCP, AWS, Azur ...

  2. 如何取消 Google Cloud Platform 试用 & 关闭 GCP 帐号 & 删除信用卡 & 取消订阅

    如何取消 Google Cloud Platform 试用 & 关闭 GCP 帐号 & 删除信用卡 & 取消订阅 关闭您的 Google Cloud Platform 帐号 s ...

  3. Google Cloud Platform 续

    Google Cloud Platform 创建新实例 地区:australia-southeast1-a 机器类型:1个vCPU n1-standard-1 系统:Ubuntu 16.04 LTS ...

  4. 用Google Cloud Platform搭建***服务教程

    之前FQ一直用的是***,天有不测风云,前几天发现ss服务挂了.更可怕的是ping都ping不通,多方打听,***中文社区已经炸开锅了,原因就是IP被封了.需要付费更换IP.然后到现在还是没有给我更换 ...

  5. 使用 TensorFlow 构建机器学习项目中文版&#183;翻译完成

    原文:Building Machine Learning Projects with TensorFlow 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原 ...

  6. 使用SAP Cloud Platform Leonardo机器学习提取图片的特征向量

    选中一个需要进行测试的Leonardo机器学习服务,点击Configure Environments: 因为我不想使用sandbox环境,所以我选择了eu10这个region: 维护clientid和 ...

  7. 使用SAP Cloud Platform Leonardo机器学习的测试控制台

    选中一个需要进行测试的Leonardo机器学习服务,点击Configure Environments: 因为我不想使用sandbox环境,所以我选择了eu10这个region: 维护clientid和 ...

  8. 对Google cloud platform 做了点研究

    Google也推出了云计算基础服务, 加上微软Azure,亚马逊AWS, 都齐活了. 下面是研究了一下对其的一个初步了解. 计算: Compute Engine     IaaS平台,提供VM,操作灵 ...

  9. Google Cloud Platform

    一个离我们很遥远,很遥远的公司.作为全球三大公有云厂商之一,在国内根本听不到他的声音.其实吧,听到了也没用,因为在国内没法用!AWS还在纠结的落地过程中挣扎,GCP基本上就当不存在吧. 抛开这些乌烟瘴 ...

随机推荐

  1. 【Java学习笔记之二十】final关键字在Java继承中的用法小结

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

  2. 51Nod 1016 水仙花数 V2(组合数学,枚举打表法)

    1016 水仙花数 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160         难度:6级算法题                水仙花数是指一个 n 位数 ( n≥3 ) ...

  3. 2017 ICPC/ACM 沈阳区域赛HDU6228

    Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Subm ...

  4. HDU 1232 并查集

    畅通工程                                                                                            Time ...

  5. a*b(mod m)的实现过程

    /*a*b (mod m) 的实现过程*/ /*当a,b很大的时候mod m就会产生溢出, 故运用乘法原理转换为加法求解*/ LL multi(LL a, LL b, LL m) { LL exp = ...

  6. android企业级商城源码、360°全景图VR源码、全民直播源码等

    Android精选源码 [新版]Android技术博客精华汇总 开源了:乐乐音乐5.0-Android音乐播放器 android实现仿真水波纹效果源码 360°全景图VR,这是一个值得把玩的APP a ...

  7. Spider_Man_5.1 の Mongodb_安装

    先安装: 环境Mac OS X 我是直接用brew来安装的,感觉这个包管理工具,很省心. 安装Homebrew:ruby -e "$(curl -fsSL https://raw.githu ...

  8. parseInt原来是这样用的

    今天在群里无意中看到了这样一个问题,突然发现不会,结果运行一看,懵逼了,不知道为什么???(结果是啥?自己去试试看) 现在我们还是先来复习一下parseInt()这个知识点吧! parseInt() ...

  9. SSM手把手整合教程&测试事务

    自打来了博客园就一直在看帖,学到了很多知识,打算开始记录的学习到的知识点 今天我来写个整合SpringMVC4 spring4 mybatis3&测试spring事务的教程,如果有误之处,还请 ...

  10. removeClass()

    定义和用法 removeClass() 方法从被选元素移除一个或多个类. 注释:如果没有规定参数,则该方法将从被选元素中删除所有类. 语法 $(selector).removeClass(class) ...