RoboticsLabURJC / 2017-tfm-jorge_vela

1 stars 2 forks source link

Usar código matlab para detección multiclase con BAdaCost #2

Closed jmbuena closed 3 years ago

jmbuena commented 5 years ago

En este caso hay que usar el toolbox de Matlab modificado con BadaCost..

Aquí el script de detección es acfDetectBadacost. Este script llama a:

1) chnsPyramid 2) Llama para cada escala al código C++ para detección en ventana deslizante acfDetectBadacostTrees1.

Un ejemplo para jugar con la detección BAdaCost es el detector de coches.

jorgevelap commented 5 years ago

He intentado ejecutar el script del detector de coches pero me daba todo el rato el siguiente error: Undefined function 'chnsPyramid' for input arguments of type 'struct'. Error in acfDetect>acfDetectImg (line 91) P=chnsPyramid(I,pPyramid);

Error in acfDetect (line 41) if(~multiple), bbs=acfDetectImg(I,detector); else

Error in apply_detector_to_imgs (line 54) bbs = acfDetect(I, badacost_detector);

Error in main (line 98) apply_detector_to_imgs(badacost_detector, …

No he conseguido encontrar el fallo, he revisado la forma en que se leen las imágenes y como se pasan los parámetros pero no consigo detectar el fallo.

jmbuena commented 5 years ago

Hola Jorge,

Si estás usando el detector de coches entrenado, este tiene que usarse con acfDetectBadacost (el acfDetect sólo toma detectores entrenados con AdaBoost - con acfTrain -).

En la línea 52 de apply_detector_to_imgs.m se hace la selección de un detector AdaBoost (llamando a acfDetect) o uno BAdaCost (llamando a acfDetectBadacost). La selección se hace mirando si es un cellarray o no. Si es un cellarray (varios detectores juntos) se llama a acfDetect y si no lo es a acfDetectBadaCost.

Prueba sencillamente a llamar en cualquier caso a acfDetectBadacost (pasando por el else).

A ver si es eso ... JM

jmbuena commented 3 years ago

Ya sabemos usar el detector BadaCost en Matlab.