ProgRoman 9 Жалоба Опубликовано November 23, 2012 У меня вопрос о правильном понимании оценок алгоритмов компьютерного зрения Есть Precision(Это точность) считается как общее число положительных срабатываний алгоритма на выборке к общему числу элементов в выборке я не очень понимаю чем от Precision отличается Accuracy Average Precision (AP)(средняя точность) как я понимаю считается просто как среднее арифметическое всех Precision на выборке Recall как я понял это отношение положительных срабатываний к сумме положительных срабатываний и неверно распознанных объектов. И ещё такой вопрос не очень понятно почему две таблицы из конкурса PASCAL в 2007 и 2012 годах выглядят настолько различно вроде бы обе в Average Precision PASCSL 2007 PASCAL 2012 меня интересуют первые таблицы с результатами на этих страницах или их как то по другому надо интерпретировать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано November 24, 2012 да там просто в одномслучае поделено на 100, а в другом нет. т.е. например 0.748 = 74,8% Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано November 24, 2012 спасибо за ответ, меня что смутило, так это низкие проценты в распознавании в 2007 да и для некоторых категорий в 2012 тоже очень низкие INRIA_Genetic 0.775 т.е. 77.5% правильно распознанных это в 2007 на aeroplane NUSPSL_CTX_GPM_SCM 97.3 уже значительно лучше в 2012 тоже на aeroplane для cow 77.8 в 2012 сейчас думаю, что всё действительно так у самолётов приблизительно даже форма одна и наверно варьируется она не так сильно как к примеру у коровы или у бутылки у которой средняя точность распознавания 60.8 спасибо за ответ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано December 6, 2012 у меня ещё вопрос по тестированию алгоритмов я скачал два архива VOCtrainval_06-Nov-2007.tar и VOCtest_06-Nov-2007.tar ну как я понял соответственно для обучения и тестирования зашёл в папку ImageSets\Main и для обучения для каждого из классов есть 3-и файла aeroplane_train.txt aeroplane_trainval.txt и aeroplane_val.txt я не совсем понимаю почему(зачем) их там 3-и) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано December 6, 2012 (i) methods which are trained using only the provided "trainval" (training + validation) data; (ii) methods built or trained using any data except the provided test data может это? скорее всего внутри aeroplane_val.txt= aeroplane_train.txt + aeroplane_trainval.txt Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано February 11, 2013 То что есть оставим тут, если есть желание продолжать, то лучше здесь: http://www.compvisio...?showtopic=1099 Что касается Recall, то это можно объяснить так: У вас есть всего 200 объектов класса 1 и 200 объектов класса -1. Класс 1 - это и есть основной класс. Обучаете классификатор Вы на первой сотне объектов каждого класса, а качество работы классификатора Вы проверяете на тестовой выборке в которой содержится по M=100 объектов, не встречавшихся в обучающей выборке. Классификатор может ошибаться и ошибки могут быть такие: Неправильно распознанный объект класса 1 (был принят за объект класса -1) Неправильно распознанный объект класса -1 (был принят за объект класса 1) Остальное, это корректно распознанные классы: Правильно распознанные объекты основного класса это те объекты из тестовой выборки которые имеют класс 1 и были распознаны как класс 1. (количество обозначим как N) Правильно распознанные объекты неосновного класса это те объекты из тестовой выборки которые имеют класс -1 и были распознаны как класс -1. Так вот, вернемся к recall, тут получается что Recall=N/M. то есть получается Recall - это отношение Правильно распознанных объектов основного класса к количеству объектов основного класса из тестовой выборки или просто к количеству объектов из тестовой выборки не важно к основному классу или нет.. ещё тогда не совсем ясно и precision вот определение Точность (Precision) • Доля истинных объектов основного класса среди всех классифицированных, как первый класс это из Лекций получается, что по этим формулировкам и precision, и recall одно и то же?... ещё вопрос можно ведь просто оценить алгоритм так к примеру общее число положительных срабатываний алгоритма на тестовой выборке к общему числу элементов на тестовой выборке, я думал раньше, что так вычисляется точность.. подскажите тогда что это? а то мне кажется я путаюсь Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 11, 2013 Так разница видна ? Картинка отсюда: http://en.wikipedia.org/wiki/Precision_and_recall То есть, если нам важно чтобы результат классификации содержал как можно меньше неправильно принятых за основной класс объектов, то отдаем предпочтение высокой Precision (платим тем, что классифицируем как неосновной класс достаточно много объектов основного класса, т.е. падает Recall). Если-же нам нужно чтобы классификатор упустил как можно меньше объектов основного класса (платим большим количеством объектов неосновного класса классифицированных как основной класс, т.е. падает Precision), то предпочтение отдаем более высокой Recall. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 11, 2013 интересно, а как считают tn тру негативы? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 11, 2013 Вот расшифровка (если я ничего не перепутал): tn-Неосновной класс, классифицированный как неосновной класс, то есть когда классификатор сработал правильно на отсутствие искомого объекта. (объекта нет, и он не обнаружен). fn-Основной класс, классифицированный как неосновной класс, то есть когда классификатор сработал неправильно на присутствие искомого объекта. (объект есть, но не обнаружен). fp-Неосновной класс, классифицированный как основной класс, то есть когда классификатор сработал неправильно на отсутствие искомого объекта. (объекта нет, но он обнаружен). tp-Основной класс, классифицированный как основной класс, то есть когда классификатор сработал правильно на присутствие искомого объекта. (объект есть, и он обнаружен). 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 12, 2013 да это то понятно, но объекта нет, и он не обнаружен может быть сколько угодно. хотя tn вроде в формулах то и не используется. кстати если речь идет о рамочных детекторах, то интересно как они считают попадание, ведь рамки могут перекрываться просто на какой то процент и всё. и еще обычно на одном месте находит много ректов, как они их фильтруют в один(вроде там не тупо усреднение). вообще если немного философски подойти к проблеме, то ведь объект не совсем хорошо описывать в виде рамки. даже непонятно как точно объект надо обводить рамкой. для меня например непонятно, что в рамку попадает часть бэкграунда. есть такой документ к размышлению What is an object ? Bogdan Alexe, Thomas Deselaers, Vittorio Ferrari Computer Vision Laboratory, ETH Zurich fbogdan, deselaers, ferrarig@vision.ee.ethz.ch ftp://ftp.vision.ee.ethz.ch/publications/proceedings/eth_biwi_00728.pdf +еще для объекта важен контекст, но что то я не припомню работ на эту тему. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано February 12, 2013 У меня ещё один вопрос я не совсем понимаю как можно строить графики зависимости Precision от Recall, как я понимаю они же постоянны для выборки а тут Classification Results: VOC2007 data вполне себе строят не понятно как это у них выходит... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 12, 2013 Тут все нормально, предположим снижаем порог срабатывания детектора, получаем рост Recall и падение Precision. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 12, 2013 ну а чтобы настроить наш детектор на нужные параметры Recall\Precision нам получается нужно решить оптимизационную задачу от параметров нашего детектора? что если как в случае обучения каскада хаара начальный этап длиться долго, можем ли мы как то это изначально запрогнозировать требуемый Recall\Precision? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 12, 2013 Я так понимаю, чтобы построить график, переобучать детектор не нужно. Просто он выдает степень уверенности, а мы устанавливаем, на модуле принятия решения нужный нам порог, при превышении которого класс считается основным, чем и задаем Recall\Precision. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgRoman 9 Жалоба Опубликовано February 12, 2013 порог это к примеру такое задание тут он равен T float response = svm.predict(descr); if(response>T)//базовый класс else//не базовый Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 15, 2013 Я так понимаю, чтобы построить график, переобучать детектор не нужно. да я даже не совсем об этом. допустим у нас есть HOG у которого есть N параметров + у нас есть SVM у которой вроде как есть тоже параметры (хотя там вроде как можно как то поставить чтобы они сами выбрались оптимальные? вроде бы kernel learning) в том же OpenCV CvSVM::train_auto Trains SVM with optimal parameters. т.е. я так понимаю там происходит настройка под данные. так вот можно ли сделать так, чтобы настраивались вообще все параметры и у HOG и у SVM? т.е. это получается какая то оптимизационная задача чтоли. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах