λ₯λ¬λ νμ΅μ μ§ννλ€ λ³΄λ©΄ μλμ κ°μ μλ¬ λ©μμ§λ₯Ό λ§λκ³€ ν©λλ€:
cppCopyEdittensorflow.python.framework.errors_impl.InvalidArgumentError: jpeg::Uncompress failed. Invalid JPEG data or crop window.
μ΄ μλ¬λ λλΆλΆ μμλ μ΄λ―Έμ§ νμΌ λλ¬Έμ λ°μν©λλ€. νΉν ν¬λ‘€λ§ λ°μ΄ν°, μμ§λ λ°μ΄ν°μ , λλ μμΆ ν΄μ λ λμ©λ zip νμΌμ μ¬μ©ν λ μ΄λ° λ¬Έμ κ° μμ£Ό λνλ©λλ€.
βοΈλ¬Έμ μ μμΈ: μμλ JPEG νμΌ
- μ΄λ―Έμ§κ° 0λ°μ΄νΈκ±°λ,
- JPEG ν¬λ§·μ λ΄λΆ κ΅¬μ‘°κ° λ§κ°μ‘κ±°λ,
- μ€μ λ‘λ μ΄λ―Έμ§κ° μλλ°
.jpg
νμ₯μλ₯Ό κ°μ‘κ±°λ…
μ΄λ° νμΌμ΄ νλλΌλ νμ΅ νμ΄νλΌμΈμ λ€μ΄μ€λ©΄, TensorFlow/PyTorchκ° νμ΅ μ€λ¨λ μ μμ΅λλ€.
β ν΄κ²° λ°©λ²: νμ΅ μ μ μμ μ΄λ―Έμ§ μ κ±°
νμ΅ μ μ λͺ¨λ μ΄λ―Έμ§κ° μ μμ μΌλ‘ μ΄λ¦¬λμ§ λ―Έλ¦¬ νμΈνλ κ²μ΄ μμ ν©λλ€. μλλ Python μ½λλ‘ μμλ μ΄λ―Έμ§λ₯Ό μλμΌλ‘ νμ§νκ³ μμ νλ λ°©λ²μ λλ€.
pythonCopyEditimport os
from PIL import Image
def remove_corrupted_jpgs(base_dir='./'):
removed = 0
for root, _, files in os.walk(base_dir):
for file in files:
if file.lower().endswith(('.jpg', '.jpeg')):
file_path = os.path.join(root, file)
try:
with Image.open(file_path) as img:
img.verify()
except Exception as e:
print(f"μμ : {file_path} ({e})")
os.remove(file_path)
removed += 1
print(f"μ΄ {removed}κ° μμλ μ΄λ―Έμ§ μμ μλ£.")
if __name__ == "__main__":
remove_corrupted_jpgs('./')
π‘ μ£Όμ νΉμ§
./
νμ ν΄λ μ 체 νμ.jpg
,.jpeg
νμΌλ§ κ²μ¬- μμ μ΄λ―Έμ§ λ°κ²¬ μ μλ μμ
- PIL(Pillow) λΌμ΄λΈλ¬λ¦¬ μ¬μ©
π§ͺ μ€μ μ μ© μμ
μ΄λ―Έμ§λ₯Ό μλ μμ§ν΄μ νμ΅ν λͺ¨λΈμμ λ€μκ³Ό κ°μ λ¬Έμ κ° λ°μνμ΅λλ€:
bashCopyEdittensorflow.python.framework.errors_impl.InvalidArgumentError: jpeg::Uncompress failed
μ Python μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ 200μ¬ κ°μ μμ νμΌμ μ κ±°ν λ€ νμ΅μ μ¬μμνμ, λ¬Έμ μμ΄ νμ΅μ΄ μ μμ μΌλ‘ μλ£λμμ΅λλ€.
π λ₯λ¬λ λ°μ΄ν° μ μ²λ¦¬ ν
- νλ ¨ μ μ΄λ―Έμ§ μ ν¨μ± κ²μ¦ νμ
Image.verify()
λ λΉ λ₯΄κ³ ν¨κ³Όμ - λ°μ΄ν° μμ§ λλ μμΆ ν΄μ μ§ν μ€ν¬λ¦½νΈ μλ μ€ν μΆμ²
- PyTorchμ
Dataset
ꡬμ±μμλ try-exceptλ‘ μΌλΆ λ°©μ΄ κ°λ₯
π― λ§λ¬΄λ¦¬
λ₯λ¬λ νμ΅μμ λͺ¨λΈλ³΄λ€ μ€μν κ²μ λ°μ΄ν° νμ§μ λλ€. μμλ μ΄λ―Έμ§ νλλ‘ νμ΅μ΄ μ€λ¨λλ κ²μ λ°©μ§νκΈ° μν΄, κΌ νμ΅ μ μ λ°μ΄ν°λ₯Ό ν λ² “κ²μ§”ν΄ μ£ΌμΈμ.
π μλ¬ μλ λ₯λ¬λ, λ°μ΄ν°λΆν° μμλ©λλ€!
λ΅κΈ λ¨κΈ°κΈ°