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

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

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

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

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

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

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

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

Ответы (7)

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

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

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

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

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

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

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

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

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

Существует также еще одна утилита под названием «fslint» , которую вы тоже можете попробовать. (У этого есть графический интерфейс).

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

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

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

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

Что вы имеете в виду под повторяющимися фотографиями? Вы имеете в виду файлы, которые идентичны, скажем, просто скопированы лишний раз или два? или вы имеете в виду фотографии, которые "выглядят" одинаковыми.

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

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

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

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

Существует совершенно новая версия Excire Foto (2.0), которая добавляет сложную и настраиваемую функцию поиска/удаления дубликатов на основе искусственного интеллекта.

Я был очень доволен Excire Foto 1.3.4 за его ключевые слова на основе AI и за его способность сортировать фотографии по сходству или по лицам. Но похоже, что поиск дубликатов версии 2.0 — это как раз то, что мне было нужно!

Вы можете установить ползунок, чтобы выбрать степень сходства, необходимую для того, чтобы назвать что-то «дубликатом». При самой строгой настройке изображения должны быть идентичными, хотя и с разными размерами в пикселях. При самых свободных настройках это может помочь вам отсеять лишние снимки, включив те, которые слегка отличаются, чтобы вы могли выбрать лучший.

Найти дубликаты Диалог Excire Foto 2.0 «Найти дубликаты».

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

Параметр последовательности

После того, как вы установили параметры, он отображает прогресс во время работы. Моя база изображений из нескольких сотен тысяч изображений (ранее проиндексированных Excire Foto) заняла около десяти минут, чтобы вернуть почти 70 000 дубликатов. (Это длинная и грустная история о многократных попытках получить мои изображения из Apple Aperture после того, как Apple внезапно прекратила его поддержку.)

Когда этот процесс завершится, ваши изображения будут сгруппированы по сходству.

Повторяющийся набор результатов. Это список примерно 70 000 дубликатов.

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

Помощник по отметке. Помощник по отметке. «Помощник по отметке» позволяет вам автоматически выбирать дубликаты.

Это позволяет вам выбирать и помечать изображения для просмотра (или нет!) И удаления на основе критериев, которые вы можете выбрать.

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

Дубликаты Группировка по возрастанию количества фотографий сначала показывает наименьшее количество дубликатов.

Я долго и упорно искал такой инструмент, и это лучшее, что мне попадалось для этой задачи! Он вышел еще не один день, так что мне еще предстоит много исследовать и учиться.

Создание начального индекса для больших коллекций занимает много времени. Мои ~300 000 изображений индексировались примерно за три дня. Если вы нетерпеливы и, как и я, у вас есть изображения в файловой иерархии, вы можете проиндексировать отдельные подиерархии, если хотите. Я просто закинул в него всю свою терабайтную Picturesпапку, чтобы посмотреть, как это будет работать!

Индексация требует времени, потому что она делает гораздо больше, чем поиск дубликатов — она использует модель, обученную ИИ, для назначения ключевых слов, что само по себе замечательно. Вот почему я изначально купил его, и я рад, что эта новая версия читала мои мысли и упростила поиск дубликатов!