10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Edge TPU Accelaratorの動作を少しでも高速化したかったのでMS-COCOをPascal VOCで転移学習して.tfliteを生成した_GoogleColaboratory[GPU]編_その3

Last updated at Posted at 2019-03-31

Tensorflow-bin GitHub stars

TPU-MobilenetSSD GitHub stars

1.Introduction

前回記事は Docker によるTPUモデルのローカル転移学習の手順を整理しました。
Edge TPU Accelaratorの動作を少しでも高速化したかったのでMobileNetv2-SSD/MobileNetv1-SSD+MS-COCOをPascal VOCで転移学習して.tfliteを生成した_Docker編_その2
今回は、手元にGPU搭載端末が無い場合を想定して、 無料のGoogle Colaboratory環境 により同様の作業を実施します。 最終的には、 TPU Edge Accelarator へデプロイするための 独自.tfliteファイル をクラウド上で生成することを目的としています。 クラウドで作業を実施するとはいえ、ローカルで出来ることはほぼ全て同じようにできます。 利用時間制限があるぐらいです。

Dockerで作業をするのと大して変わりはありませんが、GPUがハイスペックということやGPU分の電気代がタダ、出先から制御出来る、というメリットはありそうです。 なお、デメリットは GPU暖房が使えなくなるために暖房費がかさむこと です。 そうです、まさに本末転倒ですね。
正直に言いまして、今さら感があると思いますのであくまで自分用のメモとして残します。

懺悔します。 Googleドライブのマウントが面倒だったので全てマウントせずに実施しました。
なお、リソース一式は上図のニコちゃんマークの リポジトリ にコミットしてあります。

2.Environment (2019.03.31)

  • Google Colaboratory [GPU / Free]
  • Tensorflow-GPU v1.13.1
  • Protobuf 3.7.0
  • CUDA 10
  • NVIDIA Tesla K80
  • Pascal VOC 2007 /2012
  • Python 3.6

3.Procedure

Please adjust the Batch size as you like.

pipeline*.config
train_config {
  batch_size: 64   #<------------- Batch size
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    ssd_random_crop {
    }
  }
  sync_replicas: true
  optimizer {
    adam_optimizer: {
      learning_rate: {
        manual_step_learning_rate {
          initial_learning_rate: .0002
          schedule {
            step: 500
            learning_rate: .00003
          }

Increasing the total number of training steps does not dramatically improve accuracy.
Adjust the number of NUM_TRAINING_STEPS as you like.

Training_start_script
!source "$PWD/constants.sh"
%env NUM_TRAINING_STEPS=1000
%env NUM_EVAL_STEPS=500
!rm -rf learn/train
!./retrain_detection_model.sh \
  --num_training_steps ${NUM_TRAINING_STEPS} \
  --num_eval_steps ${NUM_EVAL_STEPS}

First of all, prepare the environment of Google Colaboratory referring to the following article.
This article is very polite and appreciated.
【秒速で無料GPUを使う】深層学習実践 Tips on Colaboratory - Qiita - tomo_makes

Next, execute the following script in Google Colaboratory.

TPU-Transfer-learning.ipynb
# -*- coding: utf-8 -*-
"""TPU-Transfer-learning.ipynb

Automatically generated by Colaboratory.

"""

!uname -a && python -V && pip -V

!apt-get update;apt-get upgrade -y

!apt-get install -y protobuf-compiler python-pil python-lxml python-tk \
autoconf automake libtool curl make g++ unzip wget git nano \
libgflags-dev libgoogle-glog-dev liblmdb-dev libleveldb-dev \
libhdf5* python3-dev python3-numpy python3-skimage gfortran libturbojpeg \
python-dev python-numpy python-skimage python3-pip python-pip \
libboost-all-dev libopenblas-dev libsnappy-dev software-properties-common \
protobuf-compiler python-pil python-lxml python-tk libfreetype6-dev pkg-config libpng12*

!pip install pip==18.0.0 --upgrade

!pip install --user Cython opencv-python lxml

!git clone https://github.com/tensorflow/models.git

from google.colab import files
files.upload()

!ls -l

!mv collabo.zip models/research

%cd models/research
!unzip collabo.zip

!rm collabo.zip

!chmod +x constants.sh
!chmod +x prepare_checkpoint_and_dataset.sh
!chmod +x retrain_detection_model.sh
!chmod +x protoc_update.sh
!chmod +x convert_checkpoint_to_edgetpu_tflite.sh
!cp object_detection_evaluation.py object_detection/utils
!mkdir configs

!git clone https://github.com/pdollar/coco.git
%cd coco/PythonAPI
!python3 setup.py install

%cd ../..

!wget https://github.com/protocolbuffers/protobuf/archive/v3.7.0.zip
!unzip v3.7.0.zip;rm v3.7.0.zip
%cd protobuf-3.7.0
!./autogen.sh
!./configure
!make -j$(($(nproc) + 1))

!make install

%cd python
!export LD_LIBRARY_PATH=../src/.libs
!python3 setup.py build --cpp_implementation
!python3 setup.py test --cpp_implementation
!python3 setup.py install --cpp_implementation
!ldconfig

%cd ../..

!protoc --version

!./prepare_checkpoint_and_dataset.sh --network_type mobilenet_v2_ssd --train_whole_model false

!source "$PWD/constants.sh"
%env NUM_TRAINING_STEPS=1000
%env NUM_EVAL_STEPS=100
!rm -rf learn/train
!./retrain_detection_model.sh \
  --num_training_steps ${NUM_TRAINING_STEPS} \
  --num_eval_steps ${NUM_EVAL_STEPS}

!ls -l learn/train

!./convert_checkpoint_to_edgetpu_tflite.sh --network_type mobilenet_v2_ssd --checkpoint_num 292

!ls -l learn/models

from google.colab import files
files.download("learn/models/output_tflite_graph.tflite")

screencapture-colab-research-google-drive-11CDWpgkgZq_m5ryR1U0sh0I1w9lqhbQ-2019-03-31-20_52_31.png

https://coral.withgoogle.com/web-compiler/
Screenshot 2019-03-21 16:18:27.png

[Successful] MobileNetv1-SSD / MobileNetv2-SSD
Screenshot 2019-03-24 16:46:05.png

4.Finally

Next time I would like to try Google Colaboratory [TPU].

5.Reference Articles, Great thanks!

AI & Machine Learning Products - Cloud TPU Quickstart
Google ColaboratoryのTPUを試してみる - Qiita - koshian2

https://twitter.com/tomo_makes/status/1045198738614976513
【Tips】Google Colaboratory でPythonのファイル入出力演習 - Qiita - GandT
【秒速で無料GPUを使う】深層学習実践 Tips on Colaboratory - Qiita - tomo_makes

6.Soliloquy

本題とは関係ありませんが、この場をお借りしまして皆様にお礼を言わせていただきたいです。
気がつけばPython部門で日本の30傑入りをしていました。 みなさんありがとうございます。 おかげさまでモチベーションが維持できています。
※ 手動で定期的にランキングをアップデートをしないと集計対象にならないサービスですので、上位の方々は頻繁にアップデートをしていないだけであって実はもっと高みにいらっしゃいます。 もっと多くのスターを獲得されている方はおそらく沢山いらっしゃいますが、この Git Awards で集計開始ボタンを自分で押さない限りは集計対象になりません。 また、分析対象はパブリックリポジトリだけですので、プライベートリポジトリでスゴい仕事をされていても集計されません。 大した意味のないランキングですので完全なる自己満足です。
Git Awards http://git-awards.com/users/pinto0309
FireShot Capture 001 - pinto0309 - Git Awards - git-awards.com.png
ちなみに、日本の上位5傑は下図のとおりです。 突き抜け過ぎていて笑えます。
FireShot Capture 002 - Python in Japan - Git Awards - git-awards.com.png

10
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?