Как найти дубликаты фотографий в очень большом пуле данных (от десятков до сотен гигов)?

16

Может кто-нибудь предложить хорошую утилиту обнаружения дублирования фотографий, которая хорошо работает, когда я имею дело с данными объемом около 100 ГБ (собранными за эти годы)?

Я бы предпочел что-то, что работает на Ubuntu.

Заранее спасибо!

Изменить: Есть ли инструмент, который поможет мне реорганизовать мою коллекцию и удалить дубликаты, как только они были обнаружены?

Edit2: сложная часть состоит в том, чтобы выяснить, что делать, когда у меня есть вывод, состоящий из тысяч дублирующихся файлов (например, вывод fdupes).

Это не очевидно, если я все еще могу безопасно удалить каталог (то есть, если каталог может содержать уникальные файлы), какие каталоги являются подмножествами других каталогов и так далее. Идеальный инструмент для этой проблемы должен уметь определять дублирование файлов и затем предоставлять мощные средства реструктуризации ваших файлов и папок. Выполнение слияния с помощью жестких ссылок (как это делает fslint) действительно освобождает дисковое пространство, но не решает основную проблему, которая привела к дублированию, то есть с плохой организации файла / каталога.

Fasterz
источник
Также посмотрите эти связанные вопросы на AskUbuntu , unix.stackexchange и superuser .
BioGeek

Ответы:

7

ImageMagick на помощь. Я думаю, что первым шагом к любому решению является уменьшение размера вашей коллекции. Если вы хотите сравнить фотографии по их содержанию , особенно когда некоторые из них являются слегка измененными версиями друг друга, очень хорошим началом будет сокращение их до миниатюр, а затем сравнение миниатюр. Это особенно полезно, когда вы хотите найти почти одинаковые фотографии и «игнорировать» несущественные различия во время сравнения.

На высоком уровне я предлагаю вам:
1- использовать инструмент mogrify ImageMagick, чтобы превратить фотографии в миниатюры. Это займет некоторое время, но сделает шаги сравнения намного быстрее и точнее.
2- Используйте инструмент сравнения ImageMagick, который позволяет вам установить порог для сравнения, т.е. он позволяет вам находить фотографии, которые похожи на 85%. Вы хотели бы провести контролируемый эксперимент, чтобы найти пороговое значение, которое вам больше всего нравится.

Коди
источник
Мне очень нравится эта идея сначала делать миниатюры. Что он делает, когда вы нашли дубликаты? Это просто отображает список? У меня есть десятки тысяч дубликатов, и хороший графический интерфейс, помогающий решить их, был бы очень полезен.
Fasterz
2
Поскольку вы используете Ubuntu, вы автоматически получаете доступ к целому ряду специализированных инструментов, каждый из которых решает очень специфическую задачу, такую ​​как две задачи, которые я упомянул. Это игра Lego, вы можете делать все, что захотите, вам просто нужно собрать все воедино. Технически, вы подаете 2 фотографии в инструмент сравнения, и он скажет вам, насколько одна из них похожа на другую. Один из способов решить вашу проблему - сгруппировать все похожие фотографии в папки, чтобы вы могли просматривать их, чтобы отфильтровать ложные срабатывания. Затем вы снова запускаете «сравнение» ложных срабатываний и повторяете процесс, пока все не будут на своих местах.
Коди
4

Geeqie с открытым исходным кодом просмотра фотографий и организатор имеет мощную функцию поиска дубликатов . Он может использовать несколько разных стратегий для поиска дубликатов:

  • Имя файла (чувствительно к регистру или нечувствительно)
  • Размер файла
  • Дата файла
  • Размеры изображения
  • Контрольная сумма MD5.
  • Подобное содержание изображения (с несколькими порогами)

Это дает список результатов, который может включать в себя эскизы, чтобы вы могли подтвердить вручную.

Это будет , вероятно , будет медленным для тысяч файлов, но я думаю , просто использовать его и дать ему поработать в течение нескольких дней или что - то, вероятно , меньше усилий , в целом , чем найти или сделать что - то специально для случая - если матч контрольной суммы не все , что вам нужно.

mattdm
источник
Звучит неплохо. Что он делает, когда вы нашли дубликаты? Это просто отображает список? У меня есть десятки тысяч дубликатов, и хороший графический интерфейс, помогающий решить их, был бы очень полезен.
Fasterz
Он отображает их в окне графического интерфейса.
Mattdm
3

Есть небольшая утилита под названием "fdupes", которая может делать то, что вы хотите?

Есть также другая утилита под названием "fslint", которую вы тоже можете попробовать. (У этого есть GUI).

Майк
источник
Я только что попробовал fslint на меньшем наборе картинок (несколько концертов или около того), и это расстраивает, что он просто сидит и вращается. Нет индикатора прогресса, оценка оставшегося времени, ничего.
Fasterz
1
Эти инструменты, кажется, ищут идентичные файлы. Даже идентичное (пиксель за пикселем) изображение может иметь различное содержимое файла. Я предполагаю, что вы хотите сопоставить не только одно и то же похожее изображение, но и сделать это в разных форматах и ​​размерах, включая кадрирование и другую обработку, которую вы сделали, например, чтобы собрать все варианты одной и той же фотографии в одном каталог. Это будет мягкое сравнение изображений, которые будут иметь коэффициент совпадения достоверности и могут сопоставить разные фотографии одной и той же сцены.
Skaperen
@Skaperen То, что вы предлагаете, прекрасно, но существуют ли такие инструменты для Ubuntu? Я видел где-то упомянутое где-то для Windows - но у этого, казалось, был отвратительный интерфейс .. и т. Д.
Fasterz
ImageDupeless - это приложение для Windows, которое будет захватывать фотографии, которые похожи друг на друга, но имеют некоторые различия. Он будет улавливать некоторые повороты, кадрирование, изменение размера, изменение цветового оттенка, водяные знаки и т. Д. Вы должны отсканировать свою библиотеку и сказать, какую разницу вы принимаете, и она весело покажет вам файлы. НО это было бы чрезвычайно громоздким для сотен файлов, а тысячи файлов были бы ужасны. Я тоже ищу Linux, эквивалентный ImageDupeless. Приложение, которое делает вейвлеты или другую магию обработки изображений, чтобы сказать, когда изображения похожи.
Therealstubot
Прочитайте параметры страницы руководства для fdupes- есть возможность удалить дубликаты. askubuntu.com/a/476732
rrauenza
1

dupeGuru Picture Edition - настраиваемый инструмент поиска дубликатов изображений для Windows, Mac OS X и Linux.

Существует несколько версий dupeGuru (стандартные, музыкальные и графические издания), а редакция изображений позволяет вам находить визуально похожие изображения с помощью алгоритма сравнения с растровыми изображениями , среди других методов (таких как временная метка исходного изображения EXIF ​​или просто идентичные файлы) ,

У него есть множество других полезных функций, таких как исключенные папки, поддержка библиотек iPhoto / Aperture и значительная настройка того, как он обнаруживает дубликаты и что с ними делает.

drfrogsplat
источник
0

Что вы имеете в виду под дубликатами фотографий? Вы имеете в виду файлы, которые идентичны, скажем, просто скопированы дополнительное время или два? или вы имеете в виду фотографии, которые «выглядят» одинаковыми.

Если вы имеете в виду идентичные файлы, вы можете использовать 'shasum' для всех файлов, затем упорядочить результаты и найти уникальные строки с 'uniq' и запустить 'diff', чтобы увидеть, что было удалено. Все просто в оболочке Ubuntu.

Пэт Фаррелл
источник
Все это не легко и не удобно. Упомянутые ниже fdupes уже будут работать лучше, чем просто вычисление SHA. Есть ли сейчас инструменты Unix, которые будут искать сходство изображений? Если это так, это было бы здорово.
Fasterz
Легко и удобно для тех, кто привык пользоваться инструментами Unix, такими как uniq, sort, diff, shasum и т. Д. Но я согласен, что если вы не используете их регулярно, их может быть сложно использовать. Я не знаю ничего, что могло бы сделать "выглядит как" Все, что я видел, в том числе в Aperture и Lightroom, делает файл идентичным, что на самом деле просто md5 или shasum
Пэт Фаррелл
Я регулярно использую инструменты Unix и нахожу этот ответ несколько глупым. Во-первых, слепое медленное выполнение SHA, когда сравнение размеров файлов решает проблему. Во-вторых, SHA или MD5 могут сталкиваться - поэтому одних сравнений SHA недостаточно. Если вы учтете оба этих фактора, вы получите то, что делает fdupes.
Fasterz
Кроме того, как только вы правильно заклинали заклинание, которое делает это, вывод все еще не очень полезен. В лучшем случае вы получите вывод fdupes, который представляет собой просто дамп похожих файлов. В моем случае у меня десятки тысяч, и мне очень сложно просмотреть эти данные, чтобы понять, как я могу устранить дубликаты.
Fasterz
1
SHA сталкиваются в теории, но не на практике. Да, это занимает вечность. Все, что будет работать, не будет быстрым. Но вы должны быть в состоянии начать и вернуться через день или два. Это всего лишь предположение, я не собираюсь вступать в войну из-за этого.
Пэт Фаррелл
0

Существует приложение под названием «bleachbit», которое находит дубликаты файлов по размеру, имени и другим фильтрам. Вы можете установить его из менеджера пакетов synapctic в Ubuntu.

chuisco
источник
Что он делает, когда вы нашли дубликаты? Это просто отображает список? У меня есть десятки тысяч дубликатов, и хороший графический интерфейс, помогающий решить их, был бы очень полезен.
Fasterz