Datasetinizdeki Aynı Resimleri Bulma ve Silme

Merhaba, popülaritesini uzun bir süre devam edecek gibi olan yapay zekanın alt dallarından, derin öğrenmenin sevgili yolcuları, emniyet kemerlerinizi bağlayın ve heycanlı bir maceraya başlamadan önce tuvalete gitmeyi unutmayın. Derin öğrenme dedik, Tensorflow dedik, Keras dedik ama hala internette yapılan işlerden farklı bir iş yapamadık. Bunun sebebinin de kendimize has datasetimizin olmamasından kaynaklı olduğunu fark ettiğimizden sonra, paçalarımızı sıvayıp kendi data setimizi oluşturmak için dipsiz bir kuyu olan internete bir dalış yaptık. Dipsiz kuyudan aldığımız hazinelerle kendimize bir dataset oluşturduk. Yaptık yaptık yaptık veeeee sonuç ; teoride yüksek başarı ama pratikte hüsran, çünkü datasetimiz düzgün değil, aynı resimden 10 kere alıp tensorflowu kandırmışız haberimiz yok. Nasıl düzeltecez bunu şimdi, Heycanlanmayın kodu gönderiyorum. Bu kodla klasörünüzdeki aynı resimleri bulup, temiz bir dataset oluşturmayı sağlayabilirsiniz.

import hashlib
from scipy.misc import imread, imresize, imshow
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import os
import time
import numpy as np

def file_hash(filepath):
    with open(filepath, 'rb') as f:
        return md5(f.read()).hexdigest()
		
os.getcwd()
os.chdir(r'D:\images')
os.getcwd()
file_list = os.listdir()
print(len(file_list))



duplicates = []
hash_keys = dict()
for index, filename in  enumerate(os.listdir('.')):  #listdir('.') = current directory
    if os.path.isfile(filename):
        with open(filename, 'rb') as f:
            filehash = hashlib.md5(f.read()).hexdigest()
        if filehash not in hash_keys: 
            hash_keys[filehash] = index
        else:
            duplicates.append((index,hash_keys[filehash]))	
			
for file_indexes in duplicates[:30]:
    try:
    
        plt.subplot(121),plt.imshow(imread(file_list[file_indexes[1]]))
        plt.title(file_indexes[1]), plt.xticks([]), plt.yticks([])

        plt.subplot(122),plt.imshow(imread(file_list[file_indexes[0]]))
        plt.title(str(file_indexes[0]) + ' duplicate'), plt.xticks([]), plt.yticks([])
        plt.show()
    
    except OSError as e:
        continue	
	
for index in duplicates:
    os.remove(file_list[index[0]])	
		

Kanak : https://github.com/UrviSoni/remove_duplicate_image/blob/master/duplicate_image_remove.ipynb