Utilice la función de prueba de vot en pysot para probar el rendimiento de DIMP50 en vot2018
-
- 1. Agregue el experimento a myexperiments.py
- 2. Ajuste ligeramente la interfaz de ejecución de run_experiment.py
- En tercer lugar, modifique el formato gt en votdataset.py
- Cuatro, es necesario modificar el archivo tracker.py
- Cinco, modifique el lugar donde se guardan los resultados en running.py
- Seis, para que puedas correr
- 7. Explicación de otros resultados de vot-toolkit
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:
- El error de compilación de PrPooling aparece cuando se evalúa en vot2018 en matlab # 171
- ¡necesitas ayuda! AttributeError: el módulo 'trax.server' no tiene el atributo 'ServerOptions' # 62
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.py
complemento 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.py
interfaz 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.py
original, 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
- 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 .
- Al mismo tiempo,
/home/lz/PycharmProjects/pytracking/pytracking
cree 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/utils
los archivos en esta carpeta. Después de copiar, se verá así:
Cinco, modifique el lugar donde se guardan los resultados en running.py
En la /home/lz/PycharmProjects/pytracking/pytracking/evaluation/running.py
parte 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.py
siguiente 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)
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):
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 小 伙伴 的 解答 和 帮助
- Para ver la introducción de algunos métodos de evaluación de los primeros años de vot, visite: Find in VOT Publications
- vot2020 nuevo protocolo de evaluación