[ PhotoHash ] 利用 PhotoHash篩選相似度過高的圖像
子瑜在這部影片中,前 14秒幾乎沒有任何的動作。 若用 " 利用 Dlib進行臉部捕捉 " 該文中提供的程式碼,這 14秒的影片大約會擷取300多張的圖像。 用這筆數據訓練後,可能會導致權重失衡。 為了避免權重失衡影響辨識結果,有必要對圖像進行一些篩選。 用爬蟲爬取圖片的時候也容易爬到不同出處但卻是同一張照片,這麼做也很方便呦。 Hamming distance可以作為數據差異度的基準,詳細可以到 維基百科 了解一下。 對於圖像差異度的比較,Python也有一套 Library叫 PhotoHash 可以幫忙比較圖像的差異。 先計算整張圖像的平均 Hash值後,再計算 Hamming distance。 import os import glob import photohash def filter(member): img_list = glob.glob('./{0}/*.png'.format(member)) # def order_by_num(num): # return int(num.split('/')[-1].split('.')[0]) # img_list.sort(key=order_by_num) img_list.sort(key=lambda num: int(num.split('/')[-1].split('.')[0])) for img in img_list: hash_one_path = img hash_one = photohash.average_hash(hash_one_path) if 'hash_two' in locals(): distance = photohash.hash_distance(hash_one, hash_two) if distance <= 2: if not os.path.isdir("./{0}/similar".format