Utilice la función de prueba de vot en pysot para probar el rendimiento de DIMP50 en vot2018


Se necesitaron dos días antes para usar vot-toolkit (matlab) para probar el rendimiento de la línea de base DIMP50 en VOT2018. Resultó que la inicialización falló después de que dimp50 fallara. Al final, siempre se reduce a errores como este:

AttributeError: module 'trax.server' has no attribute 'ServerOptions'
AttributeError: 'VOT' object has no attribute '_trax'

Debido a que no hay ServerOptions en la nueva versión de vot-trax, me siento impotente. Aunque vot-toolkit (matlab) se ha configurado correctamente, los errores específicos se pueden ver en los dos problemas siguientes:

No había manera. Más tarde, muchos amigos del grupo me aconsejaron que no lo intentara y que usara directamente la parte de prueba de voto de pysot. Lo probé hoy. Todavía es factible. Lo grabaré hoy para que otros amigos lo usen:

1. Agregue el experimento a myexperiments.py

En /home/lz/PycharmProjects/pytracking/pytracking/experiments/myexperiments.pycomplemento dentro de las siguientes líneas:

def dimp50_vot2018():
    trackers = trackerlist('dimp', 'dimp50_vot18', run_ids=10)
    dataset = get_dataset('vot')
    return trackers, dataset

2. Ajuste ligeramente la interfaz de ejecución de run_experiment.py

He reescrito la /home/lz/PycharmProjects/pytracking/pytracking/run_experiment.pyinterfaz en ejecución aquí, por lo que es conveniente ejecutarla directamente en pycharm haciendo clic derecho en Ejecutar. Si no debería, simplemente ejecútelo de acuerdo con la línea de comando en README . Después de reescribir, es como sigue:

def main(dataset):
    parser = argparse.ArgumentParser(description='Run tracker.')
    # parser.add_argument('experiment_module', type=str, help='Name of experiment module in the experiments/ folder.')
    # parser.add_argument('experiment_name', type=str, help='Name of the experiment function.')
    # parser.add_argument('--debug', type=int, default=0, help='Debug level.')
    # parser.add_argument('--threads', type=int, default=0, help='Number of threads.')
    #
    # args = parser.parse_args()
    # run_experiment(args.experiment_module, args.experiment_name, args.debug, args.threads)

    experiment_module = 'myexperiments'
    debug = 0
    threads = 0
    run_experiment(experiment_module, dataset, debug, threads)


if __name__ == '__main__':
    for dataset in ['dimp50_vot2018']: 
        main(dataset)

En tercer lugar, modifique el formato gt en votdataset.py

En el /home/lz/PycharmProjects/pytracking/pytracking/evaluation/votdataset.pyoriginal, existe tal parte, para convertir la raíz del polígono GT BBOX en VOT2018 en formato [x, y, w, h], aquí lo comentamos y luego usamos la función en pysot para procesar [What lo que debe hacer en este paso es comentar las siguientes oraciones en votdataset.py]:

# Convert gt
if ground_truth_rect.shape[1] > 4:
    gt_x_all = ground_truth_rect[:, [0, 2, 4, 6]]
    gt_y_all = ground_truth_rect[:, [1, 3, 5, 7]]

    x1 = np.amin(gt_x_all, 1).reshape(-1,1)
    y1 = np.amin(gt_y_all, 1).reshape(-1,1)
    x2 = np.amax(gt_x_all, 1).reshape(-1,1)
    y2 = np.amax(gt_y_all, 1).reshape(-1,1)

    ground_truth_rect = np.concatenate((x1, y1, x2-x1, y2-y1), 1)

Cuatro, es necesario modificar el archivo tracker.py

  1. Este paso es el más crítico y el que más ha cambiado, porque hay muchos cambios, aquí está el archivo tracker.py después de que se proporcione el cambio directamente .
  2. Al mismo tiempo, /home/lz/PycharmProjects/pytracking/pytrackingcree una nueva carpeta a continuación, llamada vot_utils , y luego vaya a pysot para copiar toda la región compilada, que es copiar todos /home/lz/PycharmProjects/pysot-master/toolkit/utilslos archivos en esta carpeta. Después de copiar, se verá así:
    Inserte la descripción de la imagen aquí

Cinco, modifique el lugar donde se guardan los resultados en running.py

En la /home/lz/PycharmProjects/pytracking/pytracking/evaluation/running.pyparte inicial del archivo se agrega a esta oración:

from pytracking.vot_utils.region import vot_float2str

En las [líneas 52-55] originales del archivo, originalmente era así:

else:
     # Single-object mode
     bbox_file = '{}.txt'.format(base_results_path)
     save_bb(bbox_file, data)

Modificado a lo siguiente:

else:
    # Single-object mode
    bbox_file = '{}.txt'.format(base_results_path)
    try:
        save_bb(bbox_file, data)
    except:
        save_vot_bb(bbox_file, data)

Naturalmente, necesitamos agregar una función save_vot_bb después de las 22 líneas originales de save_bb :

def save_vot_bb(file, data):
    with open(file, 'w') as f:
        for x in data:
            if isinstance(x, int):
                f.write("{:d}\n".format(x))
            else:
                f.write(','.join([vot_float2str("%.4f", i) for i in x]) + '\n')

Seis, para que puedas correr

Vaya al run_experiment.pysiguiente paso y haga clic con el botón derecho en Ejecutar en pycharm. Después de ejecutarlo, puede generar dichos archivos de resultados (dimp50_001, dimp50_002, dimp50_003 son otros experimentos que ejecuté antes, no se preocupe)
Inserte la descripción de la imagen aquí
y luego poner estos archivos en vot-toolkit y ejecutar (o funciona en pysot), y luego puede obtener el resultado, porque se ejecuta con el modelo del autor, que todavía está muy cerca del artículo (0.440):
Inserte la descripción de la imagen aquí

7. Explicación de otros resultados de vot-toolkit

  • La precisión (superposición) y EAO se pueden proporcionar directamente mediante vot-toolkit, principalmente Robustez (fallas), puede consultar esto:

en el documento de resultados del Desafío VOT18, se informa la solidez bruta. Puede convertir la salida del kit de herramientas en las puntuaciones del artículo de la siguiente manera:
solidez del papel = (solidez combinada / (número total de fotogramas en el conjunto de datos = 21356)) * 100
esto se puede interpretar como un número promedio de fallas por 100 fotogramas. La puntuación de solidez agrupada del informe del kit de herramientas representa el número total de fallas en todo el conjunto de datos.
感谢 @chunhui 小 伙伴 的 解答 和 帮助

Supongo que te gusta

Origin blog.csdn.net/laizi_laizi/article/details/109400356
Recomendado
Clasificación