спасибо за ответ разработчика! так какая методика поиска подобных изображений? отключать соотношение шир/выс? ведь реально одинаковое изображение... просто при 26% представляете сколько будет ложных пар.
и прошу прощения за офтоп - сделайте удаление к примеру "фото меньшего размера (по пикселям)" или "фото меньшего размера (по байтам)".. когда после поиска выдает результат, где пользователю предлагается самому выбрать, предпочтительно большее изображение но меньший вес или наоборот. Я всегда выбираю большее по размеру сторон, очень муторно ручками делать
вот к примеру https://yadi.sk/d/oPkEwWcXvsqUY 2 изображения, одно (большего размера) очевидно лучшего кач-ва, хоть и размытие больше, программа не определяет сама, какую картинку удалить. Хочется чекбоксик, мол "оставлять такого то размера"
а так - программа Ваша шикардос! Тестировал наверное 2 десятка - лучшей нет, только очень долго удаляет с диска дубли, если их тысячи
Last edit: Anonymous 2016-09-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Вообще-говоря, чудес не бывает. Чем более надежно хочется найти дубли, тем большее количество ложных срабатываний придется обработать. Плюс при наличии в области поиска кадрированных картинок процесс выявления дублей сильно усложняется. У меня, например, "соотношение ширины/высоты" вообще выключено всегда и везде. А 26% SSIM - это не так и много, вполне в пределах разумного.
MiAMi
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Не обязательно увеличивать количество ложных срабатываний. Надо искать сравнивая ключевые точки изображения. Ну времени на это побольше должно уйти. Яндекс вот хоршо обрезанные картинки ищет.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Вот, переделал на C++. https://sourceforge.net/projects/imagecomparer/files/Release.7z/download
Но ищет ОЧЕНЬ медленно. 70 файлов 5 мин проверяет. Дескрипторы быстро извлекаются, но сравнивать 500 хешей, каждой картинки с остальными очень долго выходит, даже с помощью бинарного поиска. И я не знаю как можно ускорить. Стоит вообще делать GUI к этому тормозу? Единственное где может быстро сработать, это найти дубликат к одному изображению на больщой базе.
Last edit: Dmitry Borisov 2016-11-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Единственное где может быстро сработать, это найти дубликат к одному изображению на больщой базе.
Весьма востребованный режим: "Где-то я уже видел это лицо/пейзаж и т.п..."
MiAMi
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Немного погонял... Из того, что всплыло сразу.
Кропы находит на порядок лучше AntiDupl. Но только при обрезании где-то до 30% исходной площади (что приятно - пропорции картинки и фрагмента не играют существенной роли), фрагменты меньшего размера - увы. Хотя тут, наверно, отчасти можно поиграться параметром Hamming distance (что это, кстати, такое)?
Ну и пара моментов по собственно проге/GUI (есс-но, что на столь ранней стадии баги выискивать малоосмысленно, но вдруг пригодится...):
На большой выборке картинок (4000+, может порог и меньше, просто первая попавшаяся под руку папка содержала именно столько) стабильно вылетает на рабочий стол на втором проходе индикатора (Win10x64 16GB).
Нажатие на Стоп в процессе обработки приводит к бесконечному циклу, причем оное нажатие при первом проходе индикатора еще и тормозит систему так, что попасть мышкой на кнопку закрытия окна - непросто.
По завершении обработки кнопка обработки (на закладке tab Page1) не сбрасывается на Старт (остается Стоп), а индикатор - в исходное (пустое) состояние.
MiAMi
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Да, 30% находит, но может и меньше. Все зависит от того количества точек что найдутся на фрагменте. Вот тома круза обрезанного нашло и хорошо.
Hamming distance - задает насколько бит отличающиеся хеши будут выдаваться в выборке одинаковых.
А количество хещей просто не возврашает дибликаты у которых совпадающех хещей меньше заданного.
Добавил еще поиск перевернутых. Увеличивает в два раза поиск почти.
Да, на больших объемах происхисходит падение. Где-то в HEngine. Может памяти нехватает. И создание 64 битной dll помогло бы, но я пока не умею.
Стоп не работал вообще. Сейчас поправил, как и кеш эскизов. Но все это надо на WPF переводить. Да и базу данных надо прикрутить, чтобы не считалось по два раза.
Так что пользую для маленьких объемов пока.
Добавил 64 битную dll. Теперь может всю память сожрать. Я со своими 4 Гб не смог 4000 картинок просканировать, надо гига 4 свободных. И добавил медленный режим сравнения, для таких старых компов.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ну как-то так (см.картинку)... Диспетчер показывал немного больше - 2,8ГБ
А с чем связано ограничение в максимум 100 хэшей у дублей? Для отсева мусора иногда просятся большие значения.
Ну и насчет режима "где-то я видел это лицо". А такое сделать реально? Сравнивать один портрет с папкой-архивом? Подозреваю, правда, что тут дополнительно нужно нечто подобное фотоаппаратным системам распознавания лиц?
MiAMi
Майями, если будешь тестировать еще, пользоваться, то писать лучше в форуме той проги https://sourceforge.net/p/imagecomparer/discussion/, все же тут другая программа.
Нет ограничения в 100 хешей, это первоначальное предраспределение памяти для вектора, потом оно вырастет. Количество хешей примерно берется как ширина и высота пополам.
Распознать лицо можно достаточно надежно, даже пол. А вот возраст и кому оно принадлежит с помощью OpenCV не узнаешь. Прическа другая или поворот головы и все. В Picasa и DigiCam есть режими сортировки по лицам. И в OpenCV есть FisherFace, но процент плохой. Есть на основе нейронных сетей и собственных признаков хорошие системы, вроде сайта findface. Не знаю, что там с открытостью, но знаю что надо по крайней мере мощную видеокарту чтобы обучить на примерах эту сеть.
То есть я понимаю, нужна прога, чтобы в нее залил одну фотку, а она выдала все фотки с этим лицом?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Там перед нейронной сетью достаточно много этапов с нормализацией лиц (яркостной, пространственной) и верификацией. Да и с нейронно сетью тоже нюансы - для хорошего распознавания нужна огромная обучающая выборка (миллионы примеров). Это минимум годы работы.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Нужна - это громко сказано ) Просто первое, что сразу пришло в голову, когда возник разговор о скорости обработки (несколькими комментариями выше). Но иногда, действительно, такая задачка в бытовой практике встает. Например, не так давно захотелось сменить себе аватарку в соцсети на что-то более актуальное, убил несколько дней на перепросмотр моря фоток из семейного архива, отсеивая глазом растительность, зверушек, птичек и т.п.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Дмитрий, привет. Я топикстартер, теперь зарегистрировался)) хочу сказать, что оооочень не хватает возможности удаления (в случает без рекомендаций) тупо "меньшего размера". В обсуждениях есть рохожая ветка, там что то про нейронную сеть, ааааааааааа. Хочу попросту удалить все меньшего размера по кол-ву пикселов и хрен с блочностью и прочим
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Нейронная сеть не будет удалять только меньшего размера, хотя как натренируется. Да и не нейронная сеть, алгоритм Boost показал на малой базе обучения наилучший результат.
А почему надо именно меньшего размера удалять? А если размер чуть-чуть меньше, но зато резкий и не блочный? Тогда как?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
https://yadi.sk/d/lnovLfG8vryGq
на дефолтных настройках и на любых других! бился до иступления!! ааааааа... в чем причина?
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Отключите "учитывать соотношение ширины/высоты" - при 26% SSIM - начинает находить.
MiAMi
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
ну да... я вчера пробовал. приходится в 2 прогона искать
Это изображения по разному обрезаны, потому и не находит.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
спасибо за ответ разработчика! так какая методика поиска подобных изображений? отключать соотношение шир/выс? ведь реально одинаковое изображение... просто при 26% представляете сколько будет ложных пар.
и прошу прощения за офтоп - сделайте удаление к примеру "фото меньшего размера (по пикселям)" или "фото меньшего размера (по байтам)".. когда после поиска выдает результат, где пользователю предлагается самому выбрать, предпочтительно большее изображение но меньший вес или наоборот. Я всегда выбираю большее по размеру сторон, очень муторно ручками делать
вот к примеру https://yadi.sk/d/oPkEwWcXvsqUY 2 изображения, одно (большего размера) очевидно лучшего кач-ва, хоть и размытие больше, программа не определяет сама, какую картинку удалить. Хочется чекбоксик, мол "оставлять такого то размера"
а так - программа Ваша шикардос! Тестировал наверное 2 десятка - лучшей нет, только очень долго удаляет с диска дубли, если их тысячи
Last edit: Anonymous 2016-09-29
Для ускорения удаления нужно выставить параметр "Опции - Дополнительные - Размер очереди отмены" в 0.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Вообще-говоря, чудес не бывает. Чем более надежно хочется найти дубли, тем большее количество ложных срабатываний придется обработать. Плюс при наличии в области поиска кадрированных картинок процесс выявления дублей сильно усложняется. У меня, например, "соотношение ширины/высоты" вообще выключено всегда и везде. А 26% SSIM - это не так и много, вполне в пределах разумного.
MiAMi
Не обязательно увеличивать количество ложных срабатываний. Надо искать сравнивая ключевые точки изображения. Ну времени на это побольше должно уйти. Яндекс вот хоршо обрезанные картинки ищет.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
А каким образом это может быть реализовано в AntiDupl?
MiAMi
Именно здесь как прикрутить ещё не знаю. Но написать на основе детекторов из OpenCV можно.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Было бы очень интересно пощупать нечто подобное...
MiAMi
Пожалуйста, вот статья https://habrahabr.ru/post/211773/ Вот прототип https://github.com/valbok/img.chk
На питоне и OpenCV работает. К питону надо поставить numpy. Под 64 вообще проблемы. Я так и не запустил еще. Но может тут люди поумнее и шустрее?
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Ну это точно не про меня... )
MiAMi
Вот, переделал на C++. https://sourceforge.net/projects/imagecomparer/files/Release.7z/download
Но ищет ОЧЕНЬ медленно. 70 файлов 5 мин проверяет. Дескрипторы быстро извлекаются, но сравнивать 500 хешей, каждой картинки с остальными очень долго выходит, даже с помощью бинарного поиска. И я не знаю как можно ускорить. Стоит вообще делать GUI к этому тормозу? Единственное где может быстро сработать, это найти дубликат к одному изображению на больщой базе.
Last edit: Dmitry Borisov 2016-11-28
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Единственное где может быстро сработать, это найти дубликат к одному изображению на больщой базе.
Весьма востребованный режим: "Где-то я уже видел это лицо/пейзаж и т.п..."
MiAMi
Сделал рабочую версию с GUI на WinForms, добавил поиск и сравнение хещей в несколько потоков. Пользоваться можно, находит много обрезанных, но к сожалению не все. https://sourceforge.net/projects/imagecomparer/files/WithGUIalpha.7z/download
Last edit: Dmitry Borisov 2017-01-03
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Немного погонял... Из того, что всплыло сразу.
Кропы находит на порядок лучше AntiDupl. Но только при обрезании где-то до 30% исходной площади (что приятно - пропорции картинки и фрагмента не играют существенной роли), фрагменты меньшего размера - увы. Хотя тут, наверно, отчасти можно поиграться параметром Hamming distance (что это, кстати, такое)?
Ну и пара моментов по собственно проге/GUI (есс-но, что на столь ранней стадии баги выискивать малоосмысленно, но вдруг пригодится...):
На большой выборке картинок (4000+, может порог и меньше, просто первая попавшаяся под руку папка содержала именно столько) стабильно вылетает на рабочий стол на втором проходе индикатора (Win10x64 16GB).
Нажатие на Стоп в процессе обработки приводит к бесконечному циклу, причем оное нажатие при первом проходе индикатора еще и тормозит систему так, что попасть мышкой на кнопку закрытия окна - непросто.
По завершении обработки кнопка обработки (на закладке tab Page1) не сбрасывается на Старт (остается Стоп), а индикатор - в исходное (пустое) состояние.
MiAMi
Да, 30% находит, но может и меньше. Все зависит от того количества точек что найдутся на фрагменте. Вот тома круза обрезанного нашло и хорошо.
Hamming distance - задает насколько бит отличающиеся хеши будут выдаваться в выборке одинаковых.
А количество хещей просто не возврашает дибликаты у которых совпадающех хещей меньше заданного.
Добавил еще поиск перевернутых. Увеличивает в два раза поиск почти.
Да, на больших объемах происхисходит падение. Где-то в HEngine. Может памяти нехватает. И создание 64 битной dll помогло бы, но я пока не умею.
Стоп не работал вообще. Сейчас поправил, как и кеш эскизов. Но все это надо на WPF переводить. Да и базу данных надо прикрутить, чтобы не считалось по два раза.
Так что пользую для маленьких объемов пока.
Добавил 64 битную dll. Теперь может всю память сожрать. Я со своими 4 Гб не смог 4000 картинок просканировать, надо гига 4 свободных. И добавил медленный режим сравнения, для таких старых компов.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Ну как-то так (см.картинку)... Диспетчер показывал немного больше - 2,8ГБ
А с чем связано ограничение в максимум 100 хэшей у дублей? Для отсева мусора иногда просятся большие значения.
Ну и насчет режима "где-то я видел это лицо". А такое сделать реально? Сравнивать один портрет с папкой-архивом? Подозреваю, правда, что тут дополнительно нужно нечто подобное фотоаппаратным системам распознавания лиц?
MiAMi
Last edit: Anonymous 2017-01-08
Майями, если будешь тестировать еще, пользоваться, то писать лучше в форуме той проги https://sourceforge.net/p/imagecomparer/discussion/, все же тут другая программа.
Нет ограничения в 100 хешей, это первоначальное предраспределение памяти для вектора, потом оно вырастет. Количество хешей примерно берется как ширина и высота пополам.
Распознать лицо можно достаточно надежно, даже пол. А вот возраст и кому оно принадлежит с помощью OpenCV не узнаешь. Прическа другая или поворот головы и все. В Picasa и DigiCam есть режими сортировки по лицам. И в OpenCV есть FisherFace, но процент плохой. Есть на основе нейронных сетей и собственных признаков хорошие системы, вроде сайта findface. Не знаю, что там с открытостью, но знаю что надо по крайней мере мощную видеокарту чтобы обучить на примерах эту сеть.
То есть я понимаю, нужна прога, чтобы в нее залил одну фотку, а она выдала все фотки с этим лицом?
Там перед нейронной сетью достаточно много этапов с нормализацией лиц (яркостной, пространственной) и верификацией. Да и с нейронно сетью тоже нюансы - для хорошего распознавания нужна огромная обучающая выборка (миллионы примеров). Это минимум годы работы.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Нужна - это громко сказано ) Просто первое, что сразу пришло в голову, когда возник разговор о скорости обработки (несколькими комментариями выше). Но иногда, действительно, такая задачка в бытовой практике встает. Например, не так давно захотелось сменить себе аватарку в соцсети на что-то более актуальное, убил несколько дней на перепросмотр моря фоток из семейного архива, отсеивая глазом растительность, зверушек, птичек и т.п.
Дмитрий, привет. Я топикстартер, теперь зарегистрировался)) хочу сказать, что оооочень не хватает возможности удаления (в случает без рекомендаций) тупо "меньшего размера". В обсуждениях есть рохожая ветка, там что то про нейронную сеть, ааааааааааа. Хочу попросту удалить все меньшего размера по кол-ву пикселов и хрен с блочностью и прочим
Нейронная сеть не будет удалять только меньшего размера, хотя как натренируется. Да и не нейронная сеть, алгоритм Boost показал на малой базе обучения наилучший результат.
А почему надо именно меньшего размера удалять? А если размер чуть-чуть меньше, но зато резкий и не блочный? Тогда как?