Реализовал в программе сравнение по SSIM - индекс структурного сходства (от англ. SSIM -- structure similarity). Этот алгоритм находит сильно обрезанные, измененные картинки и в то же время картинки где много однотонного фона не валит в одну группу. Но там другие размеры разницы. Похожие картинки где-то до 40% различия встречаются. Так что одновременно не получится применять быстрй и точные методы. Сейчас в программе 3 метода используются: до 1000 картинок сумма квадратных отклонений пикселей считается, от 1000 до 10000 и большом заданном отличие подсчет суммы на очень сильно уменьшенных изображениях и третий, в остальных случаях, с помощью многомерных индексов. Если вместо первого поставить точный метод, то не будут совпадать заданые проценты различия. Или сделать задания различй для обеих методов отдельно, или просто их переключать в настройках и одновременно не применять. Как лучше? И этот SSIM гораздо затратнее в ресурсах. Некоторые значения можно в базе сохранить, но вот как ускорить с помошью SSE2 надо ковыряться. И еще кто может выложить образцы которые ошибочно детектируются при малом различие или наоборот не рапознаются как дубликаты.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2018-06-22
Post awaiting moderation.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Кто хочет потестировать вот альфа версия и наборы картинок, которые прошлая версия не находила. Только надо убрать учитывать соотношение ширины-высоты и поставить 40% различия.
Только скачал, потестить получится скорее всего - завтра, но уже возникли вопросы по описанию методов. А с чем связано именно такие пороги их переключение (1К/10К/прочие)? Может имеет смысл не пытаться "додумать" за пользователя, какой метод когда применять, а предложить ему самому выставить желаемый в настройках? Вот что-то мне подсказывает, что все эти расширения функционала (2 новых вида дефектов, 1 вид сравнения) уже превысили некоторый порог, при котором единственно разумный путь выбора нужной в данный момент комбинации параметров - решение самого пользователя. В соседней ветке я уже предлагал полностью разделить функции поиска дублей и дефектов. Добавить в тот же диалог выбора режима еще и выбор метода и не париться.
Upd
Не удержался - бегло посмотрел сегодня )
Честно говоря, в первом приближении я затрудняюсь сказать, какой из методов лучше. На вашей подборке вроде вывод очевиден, а вот попробуйте на моей https://yadi.sk/d/qnd1QmS9ePsaq ... SSIM немного лучше "отсеивает однородный тон", но вероятно как следствие - вообще не находит дублей 5141/5142. Зато находит якобы дубли 2872/2873, которые, имхо, оными не являются (вероятно домик сбивает с толку).
Last edit: Anonymous 2015-02-01
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ну во-первых ложных срабатываний у обоих методов много. Но у среднеквадратичного режима их 60 при 15%, а у SSIM - 23 при 30%.
Дубликаты DSCN2870_1.jpg-DSCN2870_2.jpg у квадратичного при 10,54%, у SSIM - 16.70%.
Дубликаты DSCN2872.JPG-DSCN2872_1.jpg у квадратичного не найдены, у SSIM найдены только при 44,6%, когда дубликатов уже 69.
Дубликаты IMG_5141.JPG-IMG_5142.JPG у квадратичного при 4,9%, у SSIM - 15.8%.
Так что второй алгоритм определенно нужен. Думаю надо просто добавить переключение.
Да, как бы я хотел автоматическое удаление плохой каринки а также ее перемещение... Это не реально. Сначала смотришь в какой папке лежит, и надо ее перемещать в папку соседа или наоборот, потом смотришь на имя, человекопонятное или случайно сгенерированое, потом смотришь есть ли этой серии снимки дальше и обоих картинок, чтобы знать какую удалять, потом уже смотришь на показатели, причем блочность часто врет, и надо оставить картинку с большим размером, а не меньшей блочностью. Но это не всегда так, надо переименовать их, поглядеть крупным планом, EXIF еще оценить. А потом уже заменять или перемещать. Короче алгоритм трудно формализуется.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
"Короче алгоритм трудно формализуется." - это вы очень мягко сказали. Он в принципе не формализуется хотя бы потому, что критерии "ценности" картинки вовсе не обязательно связаны с объективными ее параметрами. Почему и предлагаю тупо поручить выбор пользователю. К тому же, очень существенно на результат (количество и "качество" найденных дублей) влияют прочие флаги поиска (размер, переворот, отношение сторон). Например пару 5141/5142 вчерась у меня SSIM не находил вовсе даже при 50%, а у вас нашел при 15,8 (какие флаги были у меня включены - не помню, пишу не из дому).
Кстати говоря, насчет "...потом смотришь есть ли этой серии снимки дальше и обоих картинок..." - было бы крайне удобно, чтобы при нахождении в пути поиска более 2-х попарно похожих картинок выводились все они одной группой, а не попарно. Понимаю, что это потребует в корне изменить весь интерфейс, но может имеет смысл рассмотреть и это дело?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Я о том, чтобы все картинки из одной группы выводились не попарно, а одной сплошной лентой. Все эти кнопочки перемещения/удаления нижнего/верхнего по большому счету не очень-то и нужны. Имхо, в идеале хотелось бы интерфейс подобный тому же XnView, те же 3 области: вместо дерева папок - список групп похожих плюс группы по видам дефектов; эскизы (текущей группы) с минимумом инфы о файле; и превью с подробной информацией о картинке (текущем эскизе). Сначала тыкаем группу, по эскизам отсеиваем/удаляем совсем плохие (кропы, низкое разрешение и т.п.), по превью уже выбираем окнчательно, что и в какой папке оставить.
Last edit: Anonymous 2015-02-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ага! Почти замечательно! Думается не стоит выводить эскизы всех групп сразу. Разумнее видеть список групп и эскизы текущей группы, выводимые не в одну строку, а на всей площади окошка. И еще бы на левой превьюшке либо под картинкой, либо на закладке - подробную информацию об изображении и рассчитанных характеристиках (похожесть, дефекты). Ну и единственно, с чем я, размышляя в первом приближении, так и не определился, это как наиболее удобно помещать оставленные экземпляры в нужное место. Как вариант: по правому клику на эскизе или превью, по которому выпадает меню с предложением (в т.ч.) удалить или переместить/скопировать в одну из папок, в которых найдены дубли группы.
Last edit: Anonymous 2015-02-03
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Я первое, что делаю, установив программу и зайдя в настройки - переключаю на 128. Так что все мои тесты были только со 128. 256 - очень интересно было бы пощупать...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
В свете релиза 233: рекомендация для SSIM "...убрать учитывать соотношение ширины-высоты...", - остается в силе? Если ответ - да, то может стоит в диалоге настроек делать недоступным выбор SSIM при включенной проверке соотношения (и наоборот).
PS Отличный стресс-тест получился. Впервые с момента покупки i3-4330 наблюдаю, чтобы прикладная программа грузила все 4 потока на все 100% :)
Last edit: Anonymous 2015-02-04
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
А я постоянно наблюдаю как мои два ядра грузятся кодировкой x264. Но 4 ядра мало, 4 ядра еще в 2007 году было. А вот настоящие 8 ядер сейчас 60-70 тысяч стоят(
Так как этот SSIM, круче базового? Алгоритм правда не до конца ускорен, подсчет сигмы от двух значений делается без SSE2. Но автор может позже оптимизирует. А мне только осталось группы сделать хоть как-то.
Убирать я думаю не стоит настройки. Но единственным верным способом остается отключить учитывание соотношение размеров, типов, ширины, установить размер эскизов на 128. Насчет рамки не знаю, как влияет.
Last edit: Dmitry Borisov 2015-02-04
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Я бы так сказал - они просто существенно разные и дополняют один другого. В той-же моей подборке они при разумном установленном проценте (дабы не было много мусора) находят разные дубли. SSIM - ловит цветы уже при 20%, но не находит птичек на проводах даже при 50%. А среднеквадратичный - находит птичек уже при 7%, но цветы появляются только при 8%. Прочие параметры относительно дефолтных: только дубли; искать повернутые; 128*128.
"грузятся кодировкой x264" - интел/амд?
Last edit: Anonymous 2015-02-04
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
К сожалению и SSIM не находит средне и сильно обрезанные картинки вроде этих. Думаю тут поможет или поиск дескрипторов изображения или перцептивные хэши, но это уже будет другая программа.
Реализовал в программе сравнение по SSIM - индекс структурного сходства (от англ. SSIM -- structure similarity). Этот алгоритм находит сильно обрезанные, измененные картинки и в то же время картинки где много однотонного фона не валит в одну группу. Но там другие размеры разницы. Похожие картинки где-то до 40% различия встречаются. Так что одновременно не получится применять быстрй и точные методы. Сейчас в программе 3 метода используются: до 1000 картинок сумма квадратных отклонений пикселей считается, от 1000 до 10000 и большом заданном отличие подсчет суммы на очень сильно уменьшенных изображениях и третий, в остальных случаях, с помощью многомерных индексов. Если вместо первого поставить точный метод, то не будут совпадать заданые проценты различия. Или сделать задания различй для обеих методов отдельно, или просто их переключать в настройках и одновременно не применять. Как лучше? И этот SSIM гораздо затратнее в ресурсах. Некоторые значения можно в базе сохранить, но вот как ускорить с помошью SSE2 надо ковыряться. И еще кто может выложить образцы которые ошибочно детектируются при малом различие или наоборот не рапознаются как дубликаты.
Кто хочет потестировать вот альфа версия и наборы картинок, которые прошлая версия не находила. Только надо убрать учитывать соотношение ширины-высоты и поставить 40% различия.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Только скачал, потестить получится скорее всего - завтра, но уже возникли вопросы по описанию методов. А с чем связано именно такие пороги их переключение (1К/10К/прочие)? Может имеет смысл не пытаться "додумать" за пользователя, какой метод когда применять, а предложить ему самому выставить желаемый в настройках? Вот что-то мне подсказывает, что все эти расширения функционала (2 новых вида дефектов, 1 вид сравнения) уже превысили некоторый порог, при котором единственно разумный путь выбора нужной в данный момент комбинации параметров - решение самого пользователя. В соседней ветке я уже предлагал полностью разделить функции поиска дублей и дефектов. Добавить в тот же диалог выбора режима еще и выбор метода и не париться.
Upd
Не удержался - бегло посмотрел сегодня )
Честно говоря, в первом приближении я затрудняюсь сказать, какой из методов лучше. На вашей подборке вроде вывод очевиден, а вот попробуйте на моей https://yadi.sk/d/qnd1QmS9ePsaq ... SSIM немного лучше "отсеивает однородный тон", но вероятно как следствие - вообще не находит дублей 5141/5142. Зато находит якобы дубли 2872/2873, которые, имхо, оными не являются (вероятно домик сбивает с толку).
Last edit: Anonymous 2015-02-01
Ну во-первых ложных срабатываний у обоих методов много. Но у среднеквадратичного режима их 60 при 15%, а у SSIM - 23 при 30%.
Дубликаты DSCN2870_1.jpg-DSCN2870_2.jpg у квадратичного при 10,54%, у SSIM - 16.70%.
Дубликаты DSCN2872.JPG-DSCN2872_1.jpg у квадратичного не найдены, у SSIM найдены только при 44,6%, когда дубликатов уже 69.
Дубликаты IMG_5141.JPG-IMG_5142.JPG у квадратичного при 4,9%, у SSIM - 15.8%.
Так что второй алгоритм определенно нужен. Думаю надо просто добавить переключение.
Да, как бы я хотел автоматическое удаление плохой каринки а также ее перемещение... Это не реально. Сначала смотришь в какой папке лежит, и надо ее перемещать в папку соседа или наоборот, потом смотришь на имя, человекопонятное или случайно сгенерированое, потом смотришь есть ли этой серии снимки дальше и обоих картинок, чтобы знать какую удалять, потом уже смотришь на показатели, причем блочность часто врет, и надо оставить картинку с большим размером, а не меньшей блочностью. Но это не всегда так, надо переименовать их, поглядеть крупным планом, EXIF еще оценить. А потом уже заменять или перемещать. Короче алгоритм трудно формализуется.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
"Короче алгоритм трудно формализуется." - это вы очень мягко сказали. Он в принципе не формализуется хотя бы потому, что критерии "ценности" картинки вовсе не обязательно связаны с объективными ее параметрами. Почему и предлагаю тупо поручить выбор пользователю. К тому же, очень существенно на результат (количество и "качество" найденных дублей) влияют прочие флаги поиска (размер, переворот, отношение сторон). Например пару 5141/5142 вчерась у меня SSIM не находил вовсе даже при 50%, а у вас нашел при 15,8 (какие флаги были у меня включены - не помню, пишу не из дому).
Кстати говоря, насчет "...потом смотришь есть ли этой серии снимки дальше и обоих картинок..." - было бы крайне удобно, чтобы при нахождении в пути поиска более 2-х попарно похожих картинок выводились все они одной группой, а не попарно. Понимаю, что это потребует в корне изменить весь интерфейс, но может имеет смысл рассмотреть и это дело?
Группы создаются исходя из похожести изображений. Для путей есть сортировка.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Я о том, чтобы все картинки из одной группы выводились не попарно, а одной сплошной лентой. Все эти кнопочки перемещения/удаления нижнего/верхнего по большому счету не очень-то и нужны. Имхо, в идеале хотелось бы интерфейс подобный тому же XnView, те же 3 области: вместо дерева папок - список групп похожих плюс группы по видам дефектов; эскизы (текущей группы) с минимумом инфы о файле; и превью с подробной информацией о картинке (текущем эскизе). Сначала тыкаем группу, по эскизам отсеиваем/удаляем совсем плохие (кропы, низкое разрешение и т.п.), по превью уже выбираем окнчательно, что и в какой папке оставить.
Last edit: Anonymous 2015-02-02
Вот так?
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Ага! Почти замечательно! Думается не стоит выводить эскизы всех групп сразу. Разумнее видеть список групп и эскизы текущей группы, выводимые не в одну строку, а на всей площади окошка. И еще бы на левой превьюшке либо под картинкой, либо на закладке - подробную информацию об изображении и рассчитанных характеристиках (похожесть, дефекты). Ну и единственно, с чем я, размышляя в первом приближении, так и не определился, это как наиболее удобно помещать оставленные экземпляры в нужное место. Как вариант: по правому клику на эскизе или превью, по которому выпадает меню с предложением (в т.ч.) удалить или переместить/скопировать в одну из папок, в которых найдены дубли группы.
Last edit: Anonymous 2015-02-03
Оказывается SSIM очень чувствителен к размерам эскизов. Меньше 128 просто зашкаливают ошибки. Надо добавить 256.
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Я первое, что делаю, установив программу и зайдя в настройки - переключаю на 128. Так что все мои тесты были только со 128. 256 - очень интересно было бы пощупать...
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
В свете релиза 233: рекомендация для SSIM "...убрать учитывать соотношение ширины-высоты...", - остается в силе? Если ответ - да, то может стоит в диалоге настроек делать недоступным выбор SSIM при включенной проверке соотношения (и наоборот).
PS Отличный стресс-тест получился. Впервые с момента покупки i3-4330 наблюдаю, чтобы прикладная программа грузила все 4 потока на все 100% :)
Last edit: Anonymous 2015-02-04
А я постоянно наблюдаю как мои два ядра грузятся кодировкой x264. Но 4 ядра мало, 4 ядра еще в 2007 году было. А вот настоящие 8 ядер сейчас 60-70 тысяч стоят(
Так как этот SSIM, круче базового? Алгоритм правда не до конца ускорен, подсчет сигмы от двух значений делается без SSE2. Но автор может позже оптимизирует. А мне только осталось группы сделать хоть как-то.
Убирать я думаю не стоит настройки. Но единственным верным способом остается отключить учитывание соотношение размеров, типов, ширины, установить размер эскизов на 128. Насчет рамки не знаю, как влияет.
Last edit: Dmitry Borisov 2015-02-04
View and moderate all "Русский Общий Форум" comments posted by this user
Mark all as spam, and block user from posting to "Discussion"
Я бы так сказал - они просто существенно разные и дополняют один другого. В той-же моей подборке они при разумном установленном проценте (дабы не было много мусора) находят разные дубли. SSIM - ловит цветы уже при 20%, но не находит птичек на проводах даже при 50%. А среднеквадратичный - находит птичек уже при 7%, но цветы появляются только при 8%. Прочие параметры относительно дефолтных: только дубли; искать повернутые; 128*128.
"грузятся кодировкой x264" - интел/амд?
Last edit: Anonymous 2015-02-04
Intel, AMD проигрывают давно в производительности.
К сожалению и SSIM не находит средне и сильно обрезанные картинки вроде этих. Думаю тут поможет или поиск дескрипторов изображения или перцептивные хэши, но это уже будет другая программа.