Code Monkey home page Code Monkey logo

goturn's Introduction

GOTURN-Keras

GOTURN implementation with Keras

参考文献

論文

Learning to Track at 100 FPS with Deep Regression Networks(original paper)

参考実装

Caffe Implementation(original)
Tensorflow Implementation

How to Use

  • train.py
    モデルを作成して学習を実行します。初回はMobilenetV2のimagenet重みのダウンロードが入ります。
    また、models以下に"model_goturn_XXXXXXXX.h5"がある場合(XXXXXXXXはepoch数)には、
    それを読み込んで続きから学習を再開します。
    画像の入力のさせ方については tools/votutil.py を参照ください。
  • predict.py
    VOT Challangeのフレーム画像ディレクトリを対象とし、全フレームに対して予測結果を書きだします。
    各フレームではあくまで正解データをもとに入力を行っているため、トラッキングとして実験をする際には2フレーム目以降は検出結果をもとに入力範囲を切り出してやる必要があります。
    具体的には
    makePredictInput(img_tgt, bbox_tgt, img_search)
    における bbox_tgt に前回の検出結果をpixel単位に直したものを入れてやればよいです。

オリジナルとの変更点

  • 特徴量抽出器をAlexNetからkeras.applicationのMobilenetV2に変更
    (Caffeのweightをコンバートするのが面倒だったため)
  • BoundingBoxの形式を(x_min, y_min, x_max, y_max)から(cx, cy, w, h)の形式に変更
  • なお、上記バウンディングボックスは入力する探索領域の幅、高さを1.0とした相対値表現にしている
  • 探索領域を基準フレーム(通常は直前のフレーム)の検出物体BoundingBoxの対角線基準の正方形領域に
    物体のアピアランス変化でネットワークへの入力のアス比が変わるのが気になったため。
    若干探索範囲が広すぎるかもしれない。
  • 全結合層のノード数を減らしている(1024x3,4)
    オリジナルのサイズでは乗らなかったため(原因調査中)
  • loss関数がMSE

気になっていること&やりたいこと

  1. モデルサイズが大きい
    Kerasのモデルで全部込みで1.7GBある(optimizer等込み)。どこが大きいのか要調査
  2. 学習時間が結構かかる
    約60000ペアのセットで250epochで10時間程かかっています。マシンスペックは後述。
    250epoch程度では精度的にダメそうなので結構回す必要あると思います。
    動画も48種ぐらいでDataAugumentationもまだ実施していないので。
    やっぱりfinetuningじゃないと気軽にはできないですね。
  3. BoundingBoxの推定分を変えたい
    Faster RCNNをはじめとするRegion Proposal Netを使った方が良いのではという考え。
    多分別の論文があるので要調査。 →ECCV2018等の発表を見るに最近はかなり高精度、高速なSiam系のモデルがある。
    そっちの方が良いかも
    DaSiamRPN : かなり高精度で1080程度のGPUで200FPSとか出る感じ。
    3FPSぐらいでSemanticなモデルもあるし。ここにきてObject Trackingはかなり進んだ感じ。

実行環境

実行環境は以下。詳細は余計なものもありますがPipfile(misc以下)を見てください。
TensorFlow2.0になったら多分書き直さないといけないはず。

要素名 詳細
CPU Ryzen7 1700
Memory 16GB(2666MHz)
GPU Geforce1080ti
OS Ubuntu16.04.5
CUDA 9.0
cuDNN 7.4
Tensorflow-gpu 1.12.0
Keras 2.2.4
pillow 5.4

goturn's People

Contributors

duchungk7 avatar

Stargazers

Mahmoud Ben Dabbabi avatar  avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.