Use GOT10K kit de ferramentas eo uso da versão python do contraste kit de ferramentas rastreador OTB

Este artigo é sobre o registro é como usar GOT10K kit de ferramentas para avaliar o rastreador, eo uso da versão python OTB kit de ferramentas para desenhar os resultados finais da Fig. Middle também encontrou um monte de lugares não entendem o processo de tropeço registro branco.

GOT10K kit de ferramentas de avaliar o rastreador em diferentes conjuntos de dados

GOT-10k Python Toolkit é um kit ferramenta muito poderosa, o kit de ferramentas para rastrear valores de referência definidos são usados ​​principalmente para fornecer interface de download de dados não oficiais, bem como para o acompanhamento de: OTB (2013/2015), VOT (2013 ~ 2018), DTB70, TColor128, NFS (30/240 fps), UAV (123/20 L), e LaSOT TrackingNet valores de referência. (ILSVRC VID e YouTube-BoundingBox (vindo logo!))

Aqui vamos descrever como usar:

1 Baixe e instale

uso recomendado

pip install --upgrade got10k

2 definições precisamos rastreador teste

from got10k.trackers import Tracker

class IdentityTracker(Tracker):
    def __init__(self):
        super(IdentityTracker, self).__init__(
            name='IdentityTracker',  # tracker name
            is_deterministic=True    # stochastic (False) or deterministic (True)
        )
    
    def init(self, image, box):
        self.box = box

    def update(self, image):
        return self.box

Quando eles precisam rastreador definição de pacote de teste com a ferramenta, simplesmente definido dentro IdentityTracker classe de inicialização e atualização função pode ser.

  • função init: bbox quadro inicial é recebido e a estrutura inicial entre as sequências de vídeo de teste.
  • função de atualização: quadro posterior é recebido, retorna o bbox atualizadas.

3 é executado no GOT10K avaliar rastreador diferente

from got10k.experiments import ExperimentGOT10k

# ... tracker definition ...

# instantiate a tracker
tracker = IdentityTracker()

# setup experiment (validation subset)
experiment = ExperimentGOT10k(
    root_dir='data/GOT-10k',    # GOT-10k's root directory
    subset='val',               # 'train' | 'val' | 'test'
    result_dir='results',       # where to store tracking results
    report_dir='reports'        # where to store evaluation reports
)
experiment.run(tracker, visualize=True)

# report tracking performance
experiment.report([tracker.name])

Se outros conjuntos de dados, apenas ligeiramente modificado:

experiments = [
        # ExperimentVOT('data/VOT2019', version=2019)
        # ExperimentGOT10k('data/GOT-10k', subset='test'),
        ExperimentOTB('data/OTB', version=2013),
        # ExperimentOTB('data/OTB', version=2015),
        # ExperimentDTB70('data/DTB70'),
        # ExperimentTColor128('data/Temple-color-128'),
        # ExperimentUAV123('data/UAV123', version='UAV123'),
        # ExperimentUAV123('data/UAV123', version='UAV20L'),
        # ExperimentNfS('data/nfs', fps=30),
        # ExperimentNfS('data/nfs', fps=240)
    ]

    # run tracking experiments and report performance
    for e in experiments:
        e.run(tracker, visualize=False)
        e.report([tracker.name])

processo de rastreamento é implementado em todos os conjuntos de dados em e.run

Os resultados obtidos apresentam result_dir, padrão / resultados / e / trackername

Resultados Há / relatórios / e / Relatório trackername

4 Próximo principalmente devido ao uso OTB Kit chamar a comparação entre os trackers, por isso vamos analisar os resultados após ExperimentOTB.run e ExperimentOTB.report

Num exemplo OTB2015
quando e.run (rastreador, visualizar = FALSE) ( onde E pode ser qualquer base de dados de interface dentro do pacote got10k)

ExperimentOTB.run entra pela primeira vez a função,
de acordo com o
for s, (img_files, anno) in enumerate(self.dataset):
retirado, e determina se a sequência de teste de corrente ter sido há bons resultados no conjunto de dados para cada sequência, se não, então:

boxes, times = tracker.track( img_files, anno[0, :], visualize=visualize)

Em seguida, para
got10k.trackers.__init__.pya função de pista,
for f, img_file in enumerate(img_files):
para cada um de uma sequência de iterações de cada quadro é retirado ou função de actualização alimentado Init

Então nosso tracker (rastreador sua definição, herdando de rastreadores para baixo) já foram definidos função init e a função de atualização, para cada seqüência, o valor da caixa delimitadora para fora somente o primeiro quadro, o primeiro quadro e o primeiro quadro o valor da caixa delimitadora em função init. O próximo quadro será enviado a função de atualização.

E.report focada olhada nos resultados, seguida pela versão python do pacote usará principalmente esse OTB
Aqui Insert Picture Descrição
I utilizado para comparar a minha principal perseguidor teste SiamFC, você pode ver o diretório diretamente gerar três arquivos
Aqui Insert Picture Descrição
Aqui Insert Picture Descrição

Pode ver diretamente o enredo sucesso é gerado e enredo de precisão, se não em comparação com outros trackers, a que pode acabar.

Mais importante ainda, o arquivo json dados:
Aqui Insert Picture Descrição

Você pode ler pontuação sucesso e pontuação de precisão, e fps velocidade.

versão python do contraste kit de ferramentas rastreador OTB

1 Instalação e Configuração do Ambiente

Primeiro Quguan download de rede versão do pacote python de OTB
OTB site oficial
Aqui Insert Picture Descrição
também pode ir diretamente para o download no GitHub

Em segundo lugar, você pode ver os requisitos de configuração relevantes no github:
Aqui Insert Picture Descrição
onde o primeiro pacote que entender que, se você precisa para avaliar o código Matlab rastreador está escrito, você precisa usar para usar esta chamada pacote em python. Mas eu usar python para rever principalmente porque o meu código é escrito em python, Matlab embalar demais para mim, eu não quero virar arquivo mat. Portanto, este pacote não é próximo. Os outros três pacotes são apenas grandes para fugir. Há pouca atenção: a necessidade de versão uso python2.7! ! !

FIG 2 Comparação!

Antecedência Descrição: . Porque eu já concluiu a avaliação de seguimento do pacote do tracker na OTB (2013 ou 2015) (Nota got10k só geram resultados da OPE) por ferramentas got10k nesta etapa é apenas para colocar o nosso rastreador e 2013 ou 2015 das pessoas OTB têm bons resultados de teste foram comparados com rastreador basal (linha de base rastreador 34). Por isso, só estão preocupados com a forma como um gráfico de comparação.

Então nós só precisa se concentrar em resultados arquivos / OPE nesta pasta (OTB trata da primeira ASLA base rastreador por exemplo):
Aqui Insert Picture Descrição

  • Há três pastas para armazenar os resultados da pista de teste resultados / OPE / ASLA / abaixo: scores_tb50 e socres_cvpr2013 são armazenados OTB2013 resultado, scores_tb100 armazenar os resultados de OTB2015.
  • No exemplo scores_tb50, o seguinte 14, respectivamente, são armazenados em ficheiros diferentes json desafio (por exemplo, oclusão, movimento rápido) do resultado de seguimento. sequências de teste diferentes que correspondem a diferentes desafios, ALL.json única sequência de todas as sequências (50) correspondente.
  • Na verdade, olhamos para o resultado ALL.json dentro quando desenho.
  • Então, só precisamos de acompanhar os resultados de nosso tracker feita ALL.json, colocado sob a pasta correspondente, por exemplo, o meu perseguidor é SiamFC, para colocar resultados / OPE / SiamFC / (resultados OTB2013 scores_tb50 colocado , o resultado é colocado sob OTB2015 scores_tb100) pode ser mostrá-lo diretamente!
  • Sobre como alterar ALL.json é simples: para scores_tb50 como um exemplo ou
    copiá-lo para outros trackers ALL.json, e então nós gostaria de melhorar os seus parâmetros
{"name": "ALL", "desc": "All attributes", "tracker": "SiamFC", "evalType": "OPE", "seqs": ["BasketBall", "Biker", "Bird1", "BlurBody", "BlurCar2", "BlurFace", "BlurOwl", "Bolt", "Box", "Car1", "Car4", "CarDark", "CarScale", "ClifBar", "Couple", "Crowds", "David", "Deer", "Diving", "DragonBaby", "Dudek", "Football", "Freeman4", "Girl", "Human3", "Human4-2", "Human6", "Human9", "Ironman", "Jump", "Jumping", "Liquor", "Matrix", "MotorRolling", "Panda", "RedTeam", "Shaking", "Singer2", "Skating1", "Skating2-1", "Skating2-2", "Skiing", "Soccer", "Surfer", "Sylvester", "Tiger2", "Trellis", "Walking", "Walking2", "Woman"],
    "overlap": 58.7795880263541,
    "error": 7.794622900737891,
    "overlapScores": [0.38392220858021286, 0.3883923043332954, 0.04390543001550806, 0.194683655138013, 0.15915973959142307, 0.0894964239129424, 0.22384329718365356, 0.011058817570470185, 0.34823984258950896, 0.6508906923934548, 0.7535802226025262, 0.8491585239311483, 0.6070066757641235, 0.15502168012198222, 0.07585873833995199, 0.67882906764084, 0.7484439296263788, 0.03283713375317789, 0.17190439303587005, 0.18311095262425905, 0.7365616854638956, 0.5309180662873945, 0.12747598289090473, 0.7111340918940541, 0.007423368132814519, 0.4085822187597404, 0.3808077356687787, 0.20574960140747073, 0.11846672425697576, 0.09741395465333871, 0.2264789895501827, 0.247066828890485, 0.12122690433373202, 0.10554569108891122, 0.5015786486577571, 0.6174378729799935, 0.46219086168452955, 0.04375909192824903, 0.49555436149055704, 0.08219681780947928, 0.28238781793584533, 0.09248756804048978, 0.11262941193015051, 0.40300662549663674, 0.5912677351263589, 0.14533729914861213, 0.8026553889859993, 0.7717167796943779, 0.3712854356456783, 0.1479269294507216],
    "errorNum": [4.441379310344828, 5.563380281690141, 9.632352941176471, 8.203592814371257, 8.76923076923077, 9.24949290060852, 8.240887480190175, 9.857142857142858, 5.693367786391042, 0.029411764705882353, 0.0, 0.0, 3.0952380952380953, 7.598784194528876, 9.142857142857142, 1.0951008645533142, 0.4246284501061571, 9.71830985915493, 8.232558139534884, 8.495575221238937, 1.0305676855895196, 3.4806629834254146, 8.303886925795053, 0.9199999999999999, 9.935217903415783, 4.002998500749625, 5.416666666666666, 8.327868852459016, 8.734939759036145, 9.180327868852459, 8.338658146964855, 7.610568638713383, 9.8, 9.02439024390244, 5.8999999999999995, 2.226277372262774, 6.219178082191781, 9.6448087431694, 3.1, 9.365750528541225, 7.991543340380549, 8.88888888888889, 8.75, 4.867021276595745, 2.505576208178439, 8.575342465753424, 1.4235500878734622, 0.02427184466019417, 6.02, 8.056951423785595],
    "successRateList": [],
    "precisionList": []}

Como podemos ver é medido OTB2013, então PDCs é o nome de 50 seqüências; corresponde "sobreposição" success_score entramos em got10k, ie AUC, mas aqui estão * 100, a última faixa é de acordo com a classificação de; corresponde "erro" precision_score, aqui eu não entendo por que todos × 10, mas não afeta, porque a última vez que um mapa é inútil; "overlapScores" "ERRORNUM fútil", não mudam; o mais importante ele veio! ! ! Success_curve got10k pasta obtida com o valor no "successRateList", o valor na pasta precision_curve para "precisionList" in.

  • O passo final:
Success rate plotting command: `python draw_graph.py`
  Precision plotting commaind: `python draw_graph.py precision`

No draw_graph.py

def main():
    evalTypes = ['OPE'] # 使用哪种评估方式
    testname = 'tb50'  # 是测OTB2013还是2015
    graph = 'overlap'   # 默认画的是successplot
    if len(sys.argv) >= 2:
        graph = sys.argv[1]
  • O resultado final (a exibição padrão apenas o primeiro 10)

Aqui Insert Picture Descrição

Aqui Insert Picture Descrição

Ele é branco puro, apenas começou a monitorar o campo um pouco, pode haver algumas pessoas locais para resolver, de repente, eu ainda preciso ter uma longa choramingar. Alguns lugares não acolher correção figurões.

Lançou dois artigos originais · ganhou elogios 9 · visualizações 161

Acho que você gosta

Origin blog.csdn.net/qq_45171138/article/details/104846847
Recomendado
Clasificación