Матлаб каскадный поезд для подсчета пчел
Я изучаю агрономию, и предмет моего последнего года обучения - оценить количество пчел на фотографиях. Я пробовал некоторые методы (thresolding, сопоставление шаблонов с алгоритмом ciratefi или с imageJ), но ни один не работает нормально.
Я новичок в matlab, и мне интересно, можно ли обучить каскадный детектор и использовать fonction vision.CascadeObjectDetector для подсчета пчел на изображениях.
Примеры двух картинок:
http://img4.hostingpics.net/pics/473650DSC0648.jpg и
http://img4.hostingpics.net/pics/978154DSC0660.jpg
Сколько положительных и отрицательных образцов мне нужно использовать? Боров? Хаар? LBP?
Спасибо за помощь
2 ответа
Это может сработать, но это будет сложно. Из предоставленных вами изображений я думаю, что у вас есть хорошие шансы обнаружить изолированных пчел, но будет трудно обнаружить скопившихся вместе. В последнем случае трудно увидеть контур формы каждой пчелы, и некоторые пчелы закрывают других пчел. Но ты не узнаешь, пока не попробуешь.:)
Также имейте в виду, что детектор каскадных объектов не обрабатывает вращение в плоскости. Это означает, что вам придется обучить несколько детекторов для разных ориентаций пчел. Вы можете использовать trainCascadeObjectDetector
функция для обучения детекторов.
Вам понадобится как минимум несколько сотен положительных образцов каждой ориентации. Вы можете использовать приложение Training Image Labeler, которое поставляется с последней версией Computer Vision System Toolbox, для маркировки пчел на изображениях.
Вам также понадобится много изображений сота без пчел, чтобы использовать их в качестве негативных изображений.
Что касается функций, я бы начал с HOG или LBP, потому что они намного быстрее, чем Haar. Если вы получаете обнадеживающие результаты, то вы можете попробовать Haar, чтобы увидеть, можете ли вы улучшить свою точность.
Если бы вы могли делать снимки ульев без пчел в одинаковых условиях освещения, это было бы здорово! попробуйте, а затем вычтите два изображения (пиксель за пикселем) и посмотрите, что вы получите. С этим разностным изображением будет гораздо проще работать.
Кроме того, что касается обучения классификатора: для просмотра изображений вам понадобится классификатор "инвариантности вращения". Это причудливый способ сказать, что пчелы могут быть под разными углами. Таким образом, вы должны взять несколько десятков изображений пчел и вращать их произвольно. Это даст вам несколько сотен положительных примеров. Тогда пробуйте места без пчел, я думаю, несколько десятков. Не вращайте их, так как места без пчел не являются инвариантными относительно вращения. Сейчас обучаем классификатор. Я не думаю, что это должно иметь значение, какой вы используете - просто используйте самый простой (например, Виола-Джонс).
Итак, подведем итоги: есть две основные части: 1) проверка того, сможете ли вы вычесть фон, 2) обучение вашего классификатора.
Пожалуйста, скажите мне, если это поможет!