wakame
ukiyoe-train-imgs.npz / ukiyoe-test-imgs.npz共に重複画像が存在しました。 それら重複画像をどうやって調べたかまた各自で再現できるよう下記コードに記します。
import numpy as np
from PIL import Image
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
from pathlib import Path
dataset_path = Path("/content/drive/My Drive/competition/ProbSpace/ukiyoe")
list(dataset_path.glob("*"))
[PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/ukiyoe-train-imgs.npz'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/ukiyoe-test-imgs.npz'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/ukiyoe-train-labels.npz'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/eda.ipynb'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/submit.csv'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/label_counts.png'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/ukiyoe.ipynb'), PosixPath('/content/drive/My Drive/competition/ProbSpace/ukiyoe/duplicate_images.ipynb')]
train_image_path = dataset_path / "ukiyoe-train-imgs.npz"
train_label_path = dataset_path / "ukiyoe-train-labels.npz"
test_image_path = dataset_path / "ukiyoe-test-imgs.npz"
Y_train = np.load(train_label_path)["arr_0"].astype(np.int)
X_train = np.load(train_image_path)["arr_0"].astype(np.float)
test = np.load(test_image_path)["arr_0"].astype(np.float)
X_train = X_train / 255.0
test = test / 255.0
GoogleColabで動作させる場合ここでKernelの再起動を促されるので再起動してください。 再起動後、再起動前に初期化した変数等はすべてクリアされているのでこちらのJupyterNotebooksの先頭から再度セルを実行し直してください。
ただし注意点として下記pipインストールは再起動後のセル実行ではスキップするようにしてください。
# https://github.com/idealo/imagededup
!pip install imagededup
train_path = Path("train_images")
test_path = Path("test_images")
if not train_path.exists():
train_path.mkdir()
if not test_path.exists():
test_path.mkdir()
num_classes = 10
for label in range(num_classes):
label_index = np.where(Y_train == label)[0]
for idx, data in enumerate(X_train[label_index]):
image_path = train_path / "{}_{}.jpg".format(label, idx)
Image.fromarray(np.uint8(data * 255)).save(image_path)
画像の重複を見つけるためにPHashというアルゴリズムを用いていますが一例でPHashを用いているだけでDHash/AHashなどでも重複は見つけられると思います。各自で別のアルゴリズムを試してみてください。
またしきい値もデフォルト値にしていますがこれも各自で調整してみてください。
詳細はhttps://github.com/idealo/imagededupを参照してください。
from imagededup.methods import PHash
phasher = PHash()
encodings = phasher.encode_images(image_dir=str(train_path))
duplicates = phasher.find_duplicates(encoding_map=encodings)
Start: Calculating hashes... 100%|██████████| 3158/3158 [00:11<00:00, 278.30it/s] End: Calculating hashes! Start: Evaluating hamming distances for getting duplicates Start: Retrieving duplicates using BKTree algorithm 100%|██████████| 3158/3158 [05:11<00:00, 10.14it/s] End: Retrieving duplicates using BKTree algorithm End: Evaluating hamming distances for getting duplicates
以下で重複画像を表示しています。こちらは訓練画像(ukiyoe-train-imgs.npz)について重複を探しています。比較の仕方として0-9までのラベルがついた画像全て混ぜたディレクトリを作り、その中で重複がないか探しています。
from imagededup.utils import plot_duplicates
plot_duplicates(image_dir=str(train_path),
duplicate_map=duplicates,
filename='0_0.jpg')
/usr/local/lib/python3.6/dist-packages/imagededup/utils/plotter.py:66: UserWarning: tight_layout : falling back to Agg renderer gs.tight_layout(fig)
重複であると判断した画像のファイル名一覧を表示しています。ファイル名は{label}_{index}.jpgというフォーマットになっています。
for k, v in duplicates.items():
if v:
print(k, v)
8_126.jpg ['8_128.jpg'] 8_125.jpg ['7_48.jpg', '8_140.jpg'] 3_167.jpg ['3_168.jpg'] 0_6.jpg ['0_339.jpg', '0_586.jpg'] 1_487.jpg ['1_590.jpg'] 1_93.jpg ['1_205.jpg', '1_534.jpg'] 1_119.jpg ['1_308.jpg'] 0_255.jpg ['0_423.jpg', '0_329.jpg'] 3_163.jpg ['3_187.jpg'] 6_108.jpg ['6_237.jpg'] 1_597.jpg ['1_517.jpg', '1_368.jpg'] 8_57.jpg ['8_12.jpg'] 1_636.jpg ['1_351.jpg'] 1_231.jpg ['1_475.jpg'] 0_229.jpg ['0_463.jpg'] 4_275.jpg ['4_284.jpg'] 6_354.jpg ['6_298.jpg'] 4_280.jpg ['4_125.jpg'] 3_213.jpg ['7_6.jpg'] 0_456.jpg ['0_325.jpg', '0_500.jpg'] 6_84.jpg ['6_291.jpg', '6_13.jpg', '1_133.jpg'] 4_276.jpg ['4_366.jpg'] 6_218.jpg ['6_321.jpg', '6_366.jpg'] 6_235.jpg ['6_221.jpg', '6_124.jpg', '6_389.jpg', '6_337.jpg', '6_86.jpg'] 0_147.jpg ['0_247.jpg'] 5_169.jpg ['5_44.jpg'] 0_335.jpg ['0_196.jpg'] 0_500.jpg ['0_325.jpg', '0_456.jpg'] 1_139.jpg ['1_232.jpg'] 6_21.jpg ['6_299.jpg'] 0_230.jpg ['0_468.jpg'] 1_589.jpg ['1_217.jpg', '1_343.jpg', '1_473.jpg'] 4_292.jpg ['4_303.jpg'] 8_62.jpg ['8_97.jpg'] 7_48.jpg ['8_125.jpg'] 4_232.jpg ['4_254.jpg'] 0_346.jpg ['0_326.jpg'] 0_262.jpg ['0_533.jpg'] 4_347.jpg ['4_108.jpg'] 0_418.jpg ['0_439.jpg'] 4_32.jpg ['4_46.jpg'] 4_67.jpg ['4_132.jpg'] 1_13.jpg ['1_204.jpg', '1_291.jpg'] 0_348.jpg ['0_428.jpg', '0_465.jpg'] 0_560.jpg ['0_19.jpg'] 7_50.jpg ['7_33.jpg'] 4_224.jpg ['4_155.jpg', '4_169.jpg'] 1_205.jpg ['1_93.jpg'] 4_104.jpg ['4_269.jpg'] 8_102.jpg ['8_135.jpg'] 4_78.jpg ['4_362.jpg'] 1_342.jpg ['1_0.jpg'] 4_345.jpg ['4_263.jpg'] 0_9.jpg ['0_357.jpg'] 0_516.jpg ['0_212.jpg'] 0_519.jpg ['1_320.jpg'] 0_461.jpg ['0_450.jpg'] 1_451.jpg ['1_263.jpg'] 1_221.jpg ['1_157.jpg'] 6_233.jpg ['6_225.jpg'] 1_567.jpg ['1_370.jpg'] 2_80.jpg ['0_96.jpg'] 1_263.jpg ['1_451.jpg'] 1_232.jpg ['1_139.jpg'] 6_141.jpg ['6_337.jpg'] 0_324.jpg ['0_466.jpg'] 1_360.jpg ['1_257.jpg'] 0_109.jpg ['0_554.jpg'] 0_406.jpg ['0_45.jpg'] 1_618.jpg ['1_42.jpg', '1_573.jpg', '1_563.jpg'] 1_61.jpg ['1_323.jpg'] 4_12.jpg ['4_297.jpg'] 3_70.jpg ['3_131.jpg'] 6_337.jpg ['6_235.jpg', '6_141.jpg'] 4_362.jpg ['4_78.jpg'] 1_413.jpg ['0_86.jpg'] 6_327.jpg ['6_39.jpg'] 4_83.jpg ['4_160.jpg'] 0_475.jpg ['0_448.jpg', '0_546.jpg'] 0_403.jpg ['0_393.jpg'] 1_291.jpg ['1_204.jpg', '1_13.jpg'] 4_160.jpg ['4_83.jpg'] 0_371.jpg ['0_359.jpg'] 1_233.jpg ['0_86.jpg'] 0_517.jpg ['0_521.jpg'] 1_264.jpg ['1_381.jpg'] 3_54.jpg ['3_210.jpg'] 6_170.jpg ['6_121.jpg'] 5_44.jpg ['5_169.jpg'] 0_441.jpg ['0_610.jpg'] 1_189.jpg ['3_214.jpg'] 1_533.jpg ['1_173.jpg'] 1_4.jpg ['1_283.jpg'] 6_159.jpg ['6_120.jpg'] 0_588.jpg ['0_368.jpg'] 0_323.jpg ['0_545.jpg'] 8_128.jpg ['8_126.jpg'] 3_40.jpg ['3_1.jpg'] 4_358.jpg ['4_234.jpg'] 4_270.jpg ['4_158.jpg'] 7_33.jpg ['7_50.jpg'] 4_0.jpg ['4_69.jpg', '4_306.jpg'] 4_269.jpg ['4_104.jpg'] 1_245.jpg ['1_514.jpg', '1_524.jpg'] 4_366.jpg ['4_276.jpg'] 0_359.jpg ['0_371.jpg'] 0_247.jpg ['0_147.jpg'] 4_306.jpg ['4_69.jpg', '4_0.jpg'] 0_83.jpg ['0_55.jpg'] 0_149.jpg ['0_508.jpg'] 6_255.jpg ['6_173.jpg'] 1_201.jpg ['6_48.jpg'] 2_295.jpg ['2_42.jpg'] 0_615.jpg ['0_55.jpg'] 0_545.jpg ['0_323.jpg'] 0_326.jpg ['0_346.jpg'] 5_121.jpg ['5_107.jpg'] 0_5.jpg ['0_584.jpg'] 4_63.jpg ['4_314.jpg'] 0_428.jpg ['0_348.jpg', '0_465.jpg'] 6_209.jpg ['6_48.jpg'] 0_212.jpg ['0_516.jpg'] 0_96.jpg ['2_80.jpg'] 0_325.jpg ['0_500.jpg', '0_456.jpg'] 4_291.jpg ['4_80.jpg'] 0_550.jpg ['0_479.jpg'] 0_339.jpg ['0_586.jpg', '0_6.jpg'] 6_76.jpg ['6_222.jpg'] 0_265.jpg ['0_58.jpg'] 1_560.jpg ['1_283.jpg', '1_622.jpg'] 4_190.jpg ['4_48.jpg'] 1_7.jpg ['1_478.jpg'] 0_307.jpg ['0_427.jpg'] 0_521.jpg ['0_517.jpg'] 4_98.jpg ['4_320.jpg'] 4_176.jpg ['4_58.jpg'] 4_284.jpg ['4_154.jpg', '4_275.jpg'] 0_304.jpg ['0_108.jpg'] 0_310.jpg ['0_180.jpg'] 1_73.jpg ['1_356.jpg'] 0_55.jpg ['0_83.jpg', '0_615.jpg'] 1_123.jpg ['1_552.jpg'] 4_169.jpg ['4_224.jpg', '4_155.jpg'] 1_56.jpg ['1_5.jpg'] 0_123.jpg ['0_133.jpg'] 1_42.jpg ['1_563.jpg', '1_618.jpg', '1_573.jpg'] 0_137.jpg ['0_496.jpg', '0_48.jpg'] 0_135.jpg ['0_118.jpg'] 1_107.jpg ['1_36.jpg'] 1_427.jpg ['7_131.jpg'] 4_252.jpg ['4_203.jpg'] 6_373.jpg ['6_32.jpg', '6_165.jpg'] 0_317.jpg ['0_506.jpg'] 6_32.jpg ['6_373.jpg'] 2_42.jpg ['2_295.jpg'] 0_423.jpg ['0_255.jpg'] 9_55.jpg ['0_352.jpg'] 6_120.jpg ['6_159.jpg'] 1_478.jpg ['1_7.jpg'] 0_352.jpg ['9_55.jpg'] 8_134.jpg ['8_52.jpg'] 3_181.jpg ['1_410.jpg'] 4_303.jpg ['4_292.jpg'] 6_152.jpg ['0_11.jpg'] 4_77.jpg ['4_127.jpg'] 1_406.jpg ['1_130.jpg'] 1_392.jpg ['1_3.jpg'] 4_254.jpg ['4_232.jpg'] 0_118.jpg ['0_135.jpg'] 6_95.jpg ['6_263.jpg', '6_304.jpg'] 0_496.jpg ['0_137.jpg', '0_48.jpg'] 8_98.jpg ['8_147.jpg'] 0_292.jpg ['0_266.jpg'] 0_539.jpg ['0_410.jpg'] 6_263.jpg ['6_95.jpg', '6_304.jpg', '6_291.jpg', '6_107.jpg'] 0_62.jpg ['0_0.jpg'] 3_120.jpg ['3_195.jpg'] 1_36.jpg ['1_107.jpg'] 7_131.jpg ['1_427.jpg'] 6_13.jpg ['6_291.jpg', '6_84.jpg'] 0_554.jpg ['0_109.jpg'] 2_128.jpg ['2_277.jpg'] 1_308.jpg ['1_119.jpg'] 0_448.jpg ['0_475.jpg', '0_546.jpg'] 4_48.jpg ['4_190.jpg'] 1_401.jpg ['1_526.jpg'] 6_62.jpg ['6_9.jpg'] 4_46.jpg ['4_32.jpg'] 4_168.jpg ['4_110.jpg'] 0_546.jpg ['0_475.jpg', '0_448.jpg'] 6_379.jpg ['6_158.jpg'] 5_107.jpg ['5_121.jpg'] 0_393.jpg ['0_403.jpg'] 1_534.jpg ['1_93.jpg'] 4_80.jpg ['4_291.jpg'] 1_514.jpg ['1_245.jpg', '1_524.jpg'] 1_473.jpg ['1_589.jpg'] 1_283.jpg ['1_465.jpg', '1_560.jpg', '1_622.jpg', '1_4.jpg'] 1_414.jpg ['1_153.jpg', '1_225.jpg'] 0_574.jpg ['0_446.jpg'] 0_266.jpg ['0_292.jpg'] 0_282.jpg ['0_501.jpg'] 1_610.jpg ['1_472.jpg'] 0_264.jpg ['0_306.jpg'] 1_320.jpg ['0_519.jpg'] 0_0.jpg ['0_62.jpg'] 0_86.jpg ['1_233.jpg', '1_413.jpg'] 6_9.jpg ['6_62.jpg'] 5_88.jpg ['5_30.jpg'] 1_5.jpg ['1_56.jpg'] 9_79.jpg ['0_538.jpg'] 0_573.jpg ['0_218.jpg'] 6_321.jpg ['6_218.jpg'] 1_410.jpg ['3_101.jpg', '3_181.jpg'] 0_58.jpg ['0_265.jpg'] 1_377.jpg ['1_125.jpg'] 3_11.jpg ['3_208.jpg'] 0_466.jpg ['0_324.jpg'] 6_366.jpg ['6_218.jpg', '6_302.jpg'] 6_75.jpg ['6_385.jpg', '6_124.jpg'] 1_111.jpg ['1_145.jpg'] 0_506.jpg ['0_317.jpg'] 0_48.jpg ['0_496.jpg', '0_137.jpg'] 8_52.jpg ['8_134.jpg'] 1_180.jpg ['1_280.jpg'] 6_48.jpg ['1_201.jpg', '6_209.jpg'] 3_35.jpg ['3_178.jpg'] 6_225.jpg ['6_233.jpg'] 5_109.jpg ['1_411.jpg'] 1_504.jpg ['1_267.jpg'] 6_385.jpg ['6_75.jpg'] 0_501.jpg ['0_282.jpg'] 3_1.jpg ['3_40.jpg'] 1_99.jpg ['1_641.jpg'] 6_158.jpg ['6_379.jpg'] 1_667.jpg ['1_3.jpg'] 0_358.jpg ['0_526.jpg'] 3_195.jpg ['3_120.jpg', '1_163.jpg'] 3_208.jpg ['3_11.jpg'] 2_218.jpg ['2_203.jpg'] 6_187.jpg ['6_228.jpg', '6_144.jpg'] 4_132.jpg ['4_67.jpg'] 3_210.jpg ['3_54.jpg'] 0_168.jpg ['0_125.jpg'] 0_494.jpg ['0_178.jpg'] 4_92.jpg ['0_387.jpg'] 1_204.jpg ['1_291.jpg', '1_13.jpg'] 0_298.jpg ['0_367.jpg'] 6_222.jpg ['6_76.jpg'] 0_415.jpg ['0_562.jpg'] 1_368.jpg ['1_597.jpg', '1_517.jpg'] 0_306.jpg ['0_264.jpg'] 0_59.jpg ['0_481.jpg'] 0_481.jpg ['0_59.jpg'] 6_165.jpg ['6_373.jpg'] 6_140.jpg ['6_173.jpg'] 4_314.jpg ['4_63.jpg'] 6_205.jpg ['6_318.jpg'] 1_491.jpg ['1_259.jpg'] 0_252.jpg ['0_445.jpg'] 4_335.jpg ['4_216.jpg'] 0_613.jpg ['0_387.jpg'] 6_228.jpg ['6_187.jpg'] 0_412.jpg ['0_188.jpg'] 3_178.jpg ['3_35.jpg'] 0_108.jpg ['0_304.jpg', '0_534.jpg'] 1_552.jpg ['1_123.jpg'] 1_659.jpg ['1_580.jpg'] 6_173.jpg ['6_140.jpg', '6_255.jpg'] 0_439.jpg ['0_418.jpg'] 0_610.jpg ['0_441.jpg'] 3_131.jpg ['3_70.jpg'] 8_132.jpg ['8_115.jpg'] 0_368.jpg ['0_588.jpg'] 1_434.jpg ['1_280.jpg'] 1_622.jpg ['1_560.jpg', '1_283.jpg'] 6_291.jpg ['6_13.jpg', '6_84.jpg', '6_263.jpg'] 1_517.jpg ['1_597.jpg', '1_368.jpg'] 0_533.jpg ['0_262.jpg'] 8_140.jpg ['8_125.jpg'] 0_367.jpg ['0_298.jpg'] 0_221.jpg ['0_617.jpg'] 4_206.jpg ['4_50.jpg', '4_279.jpg'] 0_596.jpg ['0_538.jpg'] 1_356.jpg ['1_73.jpg'] 1_225.jpg ['1_414.jpg'] 3_101.jpg ['1_410.jpg'] 6_389.jpg ['6_235.jpg'] 0_445.jpg ['0_252.jpg'] 4_203.jpg ['4_252.jpg'] 0_387.jpg ['0_613.jpg', '4_92.jpg'] 0_224.jpg ['0_510.jpg'] 0_45.jpg ['0_406.jpg'] 4_349.jpg ['4_152.jpg'] 6_318.jpg ['6_205.jpg'] 1_130.jpg ['1_406.jpg'] 8_110.jpg ['2_269.jpg'] 8_135.jpg ['8_102.jpg'] 2_269.jpg ['8_110.jpg'] 1_0.jpg ['1_342.jpg'] 1_173.jpg ['1_533.jpg'] 0_375.jpg ['0_515.jpg'] 0_468.jpg ['0_230.jpg'] 0_541.jpg ['0_236.jpg'] 7_6.jpg ['3_213.jpg'] 0_508.jpg ['0_149.jpg'] 1_267.jpg ['1_504.jpg'] 0_617.jpg ['0_221.jpg'] 4_108.jpg ['4_347.jpg'] 1_125.jpg ['1_377.jpg'] 1_103.jpg ['2_289.jpg'] 0_472.jpg ['0_111.jpg'] 6_221.jpg ['6_235.jpg'] 4_297.jpg ['4_12.jpg'] 1_475.jpg ['1_231.jpg'] 5_30.jpg ['5_88.jpg'] 0_463.jpg ['0_229.jpg'] 2_289.jpg ['1_103.jpg'] 4_127.jpg ['4_77.jpg'] 1_471.jpg ['1_172.jpg'] 0_19.jpg ['0_560.jpg'] 6_121.jpg ['6_170.jpg'] 0_427.jpg ['0_307.jpg'] 1_133.jpg ['6_84.jpg'] 1_259.jpg ['1_491.jpg'] 4_69.jpg ['4_306.jpg', '4_0.jpg'] 0_125.jpg ['0_168.jpg'] 4_155.jpg ['4_224.jpg', '4_169.jpg'] 0_538.jpg ['0_596.jpg', '9_79.jpg'] 4_158.jpg ['4_270.jpg'] 6_304.jpg ['6_263.jpg', '6_95.jpg'] 1_641.jpg ['1_99.jpg', '1_540.jpg'] 1_145.jpg ['1_111.jpg'] 1_383.jpg ['1_503.jpg'] 0_357.jpg ['0_9.jpg'] 0_196.jpg ['0_335.jpg'] 0_562.jpg ['0_415.jpg'] 0_465.jpg ['0_348.jpg', '0_428.jpg'] 3_89.jpg ['7_26.jpg'] 8_115.jpg ['8_132.jpg'] 0_584.jpg ['0_5.jpg'] 4_73.jpg ['4_76.jpg'] 6_131.jpg ['6_298.jpg'] 6_237.jpg ['6_108.jpg'] 0_134.jpg ['0_299.jpg'] 4_125.jpg ['4_280.jpg'] 4_152.jpg ['4_349.jpg'] 0_586.jpg ['0_339.jpg', '0_6.jpg'] 6_107.jpg ['6_263.jpg'] 1_540.jpg ['1_641.jpg'] 4_234.jpg ['4_358.jpg'] 8_147.jpg ['8_98.jpg'] 1_343.jpg ['1_217.jpg', '1_589.jpg'] 1_257.jpg ['1_360.jpg'] 1_465.jpg ['1_283.jpg'] 0_236.jpg ['0_541.jpg'] 0_157.jpg ['0_284.jpg'] 1_526.jpg ['1_401.jpg'] 0_299.jpg ['0_134.jpg'] 1_460.jpg ['1_172.jpg'] 1_163.jpg ['3_195.jpg'] 0_293.jpg ['8_93.jpg'] 1_573.jpg ['1_563.jpg', '1_618.jpg', '1_42.jpg'] 0_526.jpg ['0_358.jpg'] 6_144.jpg ['6_187.jpg'] 0_39.jpg ['0_43.jpg'] 6_39.jpg ['6_327.jpg'] 4_263.jpg ['4_345.jpg'] 1_280.jpg ['1_434.jpg', '1_180.jpg'] 8_71.jpg ['8_161.jpg'] 8_97.jpg ['8_62.jpg'] 0_188.jpg ['0_412.jpg'] 0_283.jpg ['0_133.jpg'] 0_410.jpg ['0_539.jpg'] 4_58.jpg ['4_176.jpg'] 0_111.jpg ['0_472.jpg'] 8_161.jpg ['8_71.jpg'] 7_26.jpg ['3_89.jpg'] 3_214.jpg ['1_189.jpg'] 0_180.jpg ['0_310.jpg'] 1_323.jpg ['1_61.jpg'] 4_76.jpg ['4_73.jpg'] 2_203.jpg ['2_218.jpg'] 1_157.jpg ['1_221.jpg'] 0_329.jpg ['0_255.jpg'] 0_43.jpg ['0_39.jpg'] 4_154.jpg ['4_284.jpg'] 4_110.jpg ['4_168.jpg'] 1_370.jpg ['1_567.jpg'] 0_11.jpg ['6_152.jpg'] 0_133.jpg ['0_123.jpg', '0_283.jpg'] 2_277.jpg ['2_128.jpg'] 1_503.jpg ['1_383.jpg'] 1_3.jpg ['1_392.jpg', '1_667.jpg'] 6_86.jpg ['6_235.jpg'] 1_563.jpg ['1_573.jpg', '1_42.jpg', '1_618.jpg'] 4_216.jpg ['4_335.jpg'] 0_450.jpg ['0_461.jpg'] 3_168.jpg ['3_167.jpg'] 0_534.jpg ['0_108.jpg'] 1_580.jpg ['1_659.jpg'] 4_320.jpg ['4_98.jpg'] 3_187.jpg ['3_163.jpg'] 6_124.jpg ['6_235.jpg', '6_75.jpg'] 0_510.jpg ['0_224.jpg'] 4_50.jpg ['4_206.jpg', '4_279.jpg'] 0_479.jpg ['0_550.jpg'] 6_298.jpg ['6_354.jpg', '6_131.jpg'] 1_217.jpg ['1_343.jpg', '1_589.jpg'] 0_515.jpg ['0_375.jpg'] 0_284.jpg ['0_157.jpg'] 1_472.jpg ['1_610.jpg'] 1_381.jpg ['1_264.jpg'] 4_279.jpg ['4_50.jpg', '4_206.jpg'] 6_299.jpg ['6_21.jpg'] 1_411.jpg ['5_109.jpg'] 8_12.jpg ['8_57.jpg'] 0_178.jpg ['0_494.jpg'] 1_524.jpg ['1_514.jpg', '1_245.jpg'] 0_446.jpg ['0_574.jpg'] 0_218.jpg ['0_573.jpg'] 8_93.jpg ['0_293.jpg'] 1_590.jpg ['1_487.jpg'] 6_302.jpg ['6_366.jpg'] 1_172.jpg ['1_460.jpg', '1_471.jpg'] 1_153.jpg ['1_414.jpg'] 1_351.jpg ['1_636.jpg']
for idx, data in enumerate(test):
Image.fromarray(np.uint8(data*255)).save(test_path / "{}.jpg".format(idx))
こちらはテスト画像(ukiyoe-test-imgs.npz)について重複を探しています。
encodings = phasher.encode_images(image_dir=str(test_path))
duplicates = phasher.find_duplicates(encoding_map=encodings)
Start: Calculating hashes... 100%|██████████| 397/397 [00:02<00:00, 183.28it/s] End: Calculating hashes! Start: Evaluating hamming distances for getting duplicates Start: Retrieving duplicates using BKTree algorithm 100%|██████████| 397/397 [00:04<00:00, 87.79it/s] End: Retrieving duplicates using BKTree algorithm End: Evaluating hamming distances for getting duplicates
for k, v in duplicates.items():
if v:
print(k, v)
349.jpg ['1.jpg'] 1.jpg ['349.jpg'] 229.jpg ['197.jpg'] 197.jpg ['229.jpg']
plot_duplicates(image_dir=str(test_path),
duplicate_map=duplicates,
filename='1.jpg')
/usr/local/lib/python3.6/dist-packages/imagededup/utils/plotter.py:66: UserWarning: tight_layout : falling back to Agg renderer gs.tight_layout(fig)
plot_duplicates(image_dir=str(test_path),
duplicate_map=duplicates,
filename='197.jpg')
/usr/local/lib/python3.6/dist-packages/imagededup/utils/plotter.py:66: UserWarning: tight_layout : falling back to Agg renderer gs.tight_layout(fig)