1. 程式人生 > >SiameseFC-TensorFlow 程式碼詳細註解(一):預訓練模型下載轉換測試以及結果視覺化(轉載)

SiameseFC-TensorFlow 程式碼詳細註解(一):預訓練模型下載轉換測試以及結果視覺化(轉載)

這篇部落格主要的目的就是簡單地跑一下實驗,讓下載的程式碼能用預訓練的模型去測試單個視訊,並對結果視覺化,從視覺上感受一下這個跟蹤演算法的效果,至於如果要自己訓練自己的模型該如何準備訓練資料,如何設計自己的模型,如何訓練自己的模型,以及如何評估自己的模型等,這些問題都將在後面的系列部落格中慢慢道來。

1: SiameseFC-TensorFlow環境配置

可參考原始碼中的說明,這裡將截圖放在這裡,大家自行準備可執行的環境。


2:預訓練模型下載轉換和測試

可參考原始碼中的說明,這裡也給個截圖,然後主要對一些檔案做一些詳細一點的註解。內容主要有預訓練模型和測試視訊的下載,模型轉換以及轉換前後的模型對比檢驗,視訊的測試和結果的視覺化。


2.1  預訓練模型和測試視訊下載

核心檔案:scripts/download_assets.py

核心功能:下載SiameseFC的matlab版本預訓練模型,同時下載用於測試的單個視訊。

  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Copyright © 2017 bily     Huazhong University of Science and Technology
  5. #
  6. # Distributed under terms of the MIT license.
  7. import os.path as osp            
  8. import sys  
  9. import
     zipfile  
  10. import six.moves.urllib as urllib                      # 資料下載相關庫 , urllib
  11. CURRENT_DIR = osp.dirname(__file__)                    # 返回當前.py指令碼檔案的路徑
  12. ROOT_DIR = osp.join(CURRENT_DIR, '..')        
  13. sys.path.append(ROOT_DIR)                              # 增加模組的搜尋路徑
  14. from utils.misc_utils import mkdir_p                   
    # 自己編寫的makir_p函式,生成路徑
  15. def download_or_skip(download_url, save_path):          # 資料下載函式
  16.   ifnot osp.exists(save_path):                         # 判斷資料是否已經下載,避免重複下載
  17.     print('Downloading: {}'.format(download_url))  
  18.     opener = urllib.request.URLopener()          
  19.     opener.retrieve(download_url, save_path)  
  20.   else:  
  21.     print('File {} exists, skip downloading.'.format(save_path))  
  22. if __name__ == '__main__':                                   # 資料下載準備 主函式
  23.   assets_dir = osp.join(ROOT_DIR, 'assets')                  # 新增資料資源儲存的路徑assets_dir
  24.   # Make assets directory
  25.   mkdir_p(assets_dir)                                        # 生成路徑,儲存資料資源
  26.   # Download the pretrained color model                      # 下載SiameseFC-color pretrained 模型
  27.   download_base = 'https://www.robots.ox.ac.uk/~luca/stuff/siam-fc_nets/'
  28.   model_name = '2016-08-17.net.mat'
  29.   download_or_skip(download_base + model_name, osp.join(assets_dir, model_name))            
  30.   # Download the pretrained gray model                       # 下載SiameseFC-color-gray  pretrained 模型
  31.   download_base = 'https://www.robots.ox.ac.uk/~luca/stuff/siam-fc_nets/'
  32.   model_name = '2016-08-17_gray025.net.mat'
  33.   download_or_skip(download_base + model_name, osp.join(assets_dir, model_name))  
  34.   # Download one test sequence                               # 下載一個測試視訊,供測試和顯示
  35.   download_base = "http://cvlab.hanyang.ac.kr/tracker_benchmark/seq_new/"
  36.   seq_name = 'KiteSurf.zip'
  37.   download_or_skip(download_base + seq_name, osp.join(assets_dir, seq_name))  
  38.   # Unzip the test sequence                                  # 將下載的視訊.zip檔案解壓縮
  39.   with zipfile.ZipFile(osp.join(assets_dir, seq_name), 'r') as zip_ref:  
  40.     zip_ref.extractall(assets_dir)  

2.2  模型轉換

核心檔案:experiments/SiamFC-3s-color-pretrained.py、SiamFC-3s-gray-pretrained.py

相關檔案:scripts/convert_pretrained_model.py,utils/train_utils.py

核心功能:將siameseFC的color和gray模型由matlab格式轉換成tensorflow方便讀取的格式。

就從最外邊的實驗封裝檔案慢慢往裡看吧:experiments/SiamFC-3s-color-pretrained.py

  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Copyright © 2017 bily     Huazhong University of Science and Technology
  5. #
  6. # Distributed under terms of the MIT license.
  7. """Load pretrained color model in the SiamFC paper and save it in the TensorFlow format"""
  8. from __future__ import absolute_import  
  9. from __future__ import division  
  10. from __future__ import print_function  
  11. import os.path as osp  
  12. import sys  
  13. CURRENT_DIR = osp.dirname(__file__)  
  14. sys.path.append(osp.join(CURRENT_DIR, '..'))  
  15. print( osp.join(CURRENT_DIR, '..'))   # 新增搜尋路徑
  16. from configuration import LOG_DIR    # 從配置檔案中匯入log儲存的路徑
  17. from scripts.convert_pretrained_model import ex  # 匯入對應的experiment
  18. # 這裡只是實驗的表皮,具體實驗還得看scripts.convert_pretrained_model詳細內容
  19. if __name__ == '__main__':  
  20.   RUN_NAME = 'SiamFC-3s-color-pretrained'
  21.   ex.run(config_updates={'model_config': {'embed_config': {'embedding_checkpoint_file''/workspace/czx/Projects/SiamFC-TensorFlow/assets/2016-08-17.net.mat',  
  22.                                                            'train_embedding'False, },  
  23.                                           },  
  24.                          'train_config': {'train_dir': osp.join(LOG_DIR, 'track_model_checkpoints', RUN_NAME), },  
  25.                          'track_config': {'log_dir': osp.join(LOG_DIR, 'track_model_inference', RUN_NAME), }  
  26.                          },    # 實驗執行管理,這裡的話就是根據需要更新一些配置檔案中的引數
  27.          options={'--name': RUN_NAME,  
  28.                   '--force'True,  
  29.                   '--enforce_clean'False,  
  30.                   })  

模型轉換實驗檔案:scripts/convert_pretrained_model.py

  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Copyright © 2017 bily     Huazhong University of Science and Technology
  5. #
  6. # Distributed under terms of the MIT license.
  7. """Convert the matlab-pretrained model into TensorFlow format"""
  8. from __future__ import absolute_import  
  9. from __future__ import division  
  10. from __future__ import print_function  
  11. import logging  
  12. import os  
  13. import os.path as osp  
  14. import sys  
  15. import numpy as np  
  16. import tensorflow as tf  
  17. CURRENT_DIR = osp.dirname(__file__)  
  18. sys.path.append(osp.join(CURRENT_DIR, '..'))   # 新增搜尋路徑
  19. import configuration  
  20. import siamese_model  
  21. from utils.misc_utils import auto_select_gpu, save_cfgs  
  22. # Set GPU
  23. os.environ['CUDA_VISIBLE_DEVICES'] = auto_select_gpu()  # 自動選擇GPU
  24. tf.logging.set_verbosity(tf.logging.DEBUG)  
  25. from sacred import Experiment  # 更好地進行實驗管理
  26. ex = Experiment(configuration.RUN_NAME)  
  27. @ex

    相關推薦

    SiameseFC-TensorFlow 程式碼詳細註解訓練模型下載轉換測試以及結果視覺(轉載)

    這篇部落格主要的目的就是簡單地跑一下實驗,讓下載的程式碼能用預訓練的模型去測試單個視訊,並對結果視覺化,從視覺上感受一下這個跟蹤演算法的效果,至於如果要自己訓練自己的模型該如何準備訓練資料,如何設計自己的模型,如何訓練自己的模型,以及如何評估自己的模型等,這些問題都將在後面的

    tensorflow利用訓練模型進行目標檢測訓練模型的使用

    err sync numpy sna sta porting trac git int32 一、運行樣例 官網鏈接:https://github.com/tensorflow/models/blob/master/research/object_detection/obje

    Tensorflow學習之路從MNIST資料集開始

    MNIST資料集簡單介紹: MNIST 資料集可在 http://yann.lecun.com/exdb/mnist/ 獲取, 它包含了四個部分: Training set images: train-images-idx3-ubyte.gz (9.9 MB,

    TensorFlow深度學習實戰AlexNet對MNIST資料集進行分類

    概要 進來一段時間在看深度學習中經典的CNN模型相關論文。同時,為了督促自己學習TensorFlow,通讀論文之後開始,利用TensorFlow實現各個模型,復現相關實驗。這是第一篇論文講解的是AlexNet,論文下載網址為:ImageNet Classific

    泛型超詳細解讀泛型基礎

    一:什麼是泛型 泛型是jdk5才引進的,泛型其實指得就是引數化型別,使得程式碼可以適應多種型別。像容器,List< T >,大量使用了泛型,它的主要目的之一就是用來指定容器要持有什麼型別的物件。我認為,泛型的好處很多: 1.保證了型別安全

    Tensorflow教程學習筆記----將自己的資料集轉換成TFRecord

    import tensorflow as tf import numpy as np import os import matplotlib.pyplot as plt import skimage.io as io os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # %%

    實現一個程式碼自動生成模板引擎Freemarker

    目錄 前言 模板引擎FreeMarker 模板引擎是什麼? FreeMarker是什麼? FreeMarker如何使用? 加入依賴 建立Configuratio

    EF6 學習筆記Code First 方式生成數據庫及初始數據庫實際操作

    view sqlserver 4.5 xpl 安裝 右鍵 ef6 字符串 ref 參考原文地址: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-wit

    真實感海洋的繪制基於統計學模型的水面模擬方法詳解

    最簡 自動生成 nbsp imu gif bubuko fourier div img 真實感海洋的繪制(一):基於統計學模型的水面模擬方法詳解 學習了基本的OpenGL和圖形學知識後,第一個想做的事情就是畫水(笑),因為對我而言各種遊戲裏面往往最令人印象深刻的就是那波光粼

    Java併發volatile的實現原理 Java併發Java記憶體模型乾貨總結

    synchronized是一個重量級的鎖,volatile通常被比喻成輕量級的synchronized volatile是一個變數修飾符,只能用來修飾變數。 volatile寫:當寫一個volatile變數時,JMM會把該執行緒對應的本地記憶體中的共享變數重新整理到主記憶體。 volatile讀:當讀一

    小白的Flink學習計劃以及進度表

    文章目錄 學習計劃 以下幾個階段,其實並不是這麼界限分明(比如你在學視訊時,也完全可以看書看原始碼什麼的),這只是我的大致劃分,適合自己的才是最好的。 第一階段 看視訊 在我看來,看視訊是快速的、粗

    Java設計模式單例模式,防止反射和反序列漏洞

    package com.iter.devbox.singleton; import java.io.ObjectStreamException; import java.io.Serializable; /** * 靜態內部類實現方式(也是一種懶載入方式) * 這種方式:執行緒安全,呼叫效率高,並且實

    文字分類實戰—— word2vec訓練詞向量

    1 大綱概述   文字分類這個系列將會有十篇左右,包括基於word2vec預訓練的文字分類,與及基於最新的預訓練模型(ELMo,BERT等)的文字分類。總共有以下系列:   word2vec預訓練詞向量   textCNN 模型   charCNN 模型   Bi-LSTM 模型   Bi-LST

    文字分類實戰—— Bi-LSTM模型 文字分類實戰—— word2vec訓練詞向量

    1 大綱概述   文字分類這個系列將會有十篇左右,包括基於word2vec預訓練的文字分類,與及基於最新的預訓練模型(ELMo,BERT等)的文字分類。總共有以下系列:   word2vec預訓練詞向量   textCNN 模型   charCNN 模型   Bi-LSTM 模型   Bi-LST

    文字分類實戰—— Adversarial LSTM模型 文字分類實戰—— word2vec訓練詞向量

    1 大綱概述   文字分類這個系列將會有十篇左右,包括基於word2vec預訓練的文字分類,與及基於最新的預訓練模型(ELMo,BERT等)的文字分類。總共有以下系列:   word2vec預訓練詞向量   textCNN 模型   charCNN 模型   Bi-LSTM 模型   Bi-LST

    不耗電傳輸資料高效網路連線下載優化

    Contents 高效網路連線下載優化... 1 無線狀態機... 1 應用如何影響無線狀態機... 2 預取資料... 2 批量傳輸和連線... 3 降低連線數量... 4 用網路分析器定位問題... 4   高效網絡連線下載優化 用無線網路傳輸資

    計算機圖形學 學習筆記概述,直線掃描轉換演算法DDA,中點畫線演算法,Bresenham演算法

    前言 感謝中國農大 趙明老師的分享~ 現在我要為我自己走向遊戲程式設計打下基石~ 1 計算機圖形學概論 1.1 計算機圖形學課程簡介 《計算機圖形學》是計算機、地理資訊系統、應用數學、機械、建築等專業本科教學中的一門重要的專業基礎課 如影

    誰擋了我的神經網路?—— 如何在訓練中得到更好的結果

    誰擋了我的神經網路?(一)—— 如何在訓練中得到更好的結果 博主最近在嘗試訓練自己新設計的神經網路,但是網路收斂到的損失並不讓人滿意。於是,博主決定在這裡記錄下在嘗試讓網路收斂得更好的過程中,成功與失敗的經驗(包括實驗)。這一系列會隨著博主研究的不斷深入,有選擇地更新。本文更新於20

    機器學習演算法邏輯迴歸模型Logistic Regression, LR

    轉自:https://blog.csdn.net/weixin_39910711/article/details/81607386 線性分類器:模型是引數的線性函式,分類平面是(超)平面;非線性分類器:模型分介面可以是曲面或者超平面的組合。 典型的線性分類器有感知機,LDA,邏輯斯特迴歸,SVM

    文字分類實戰—— BERT 訓練模型 文字分類實戰—— word2vec訓練詞向量

    1 大綱概述   文字分類這個系列將會有十篇左右,包括基於word2vec預訓練的文字分類,與及基於最新的預訓練模型(ELMo,BERT等)的文字分類。總共有以下系列:   word2vec預訓練詞向量   textCNN 模型   charCNN 模型   Bi-LSTM 模型   Bi-LST