본문 바로가기
산업&공학/기계

#2 압연강판 품질 이상 검출 프로젝트

by choiyeong 2025. 5. 13.

압연강판 표면 이상 검출을 위한 표면 데이터셋이 필요하여 자료를 찾았다.

https://www.vicos.si/resources/kolektorsdd/
 

Kolektor Surface-Defect Dataset (KolektorSDD/KSDD)

Dataset for defect-detection in industrial surfaces

www.vicos.si

더보기

The dataset consists of:

  • 399 images:
    • 52 images with visible defects
    • 347 images without any defect
  • Original images of sizes:
    • width: 500 px
    • height: from 1240 to 1270 px
  • For training and evaluation images should be resized to 512 x 1408 px

데이터셋을 399개의 이미지 중 52개의 표면 이상 이미지, 347개의 정상 이미지를 모아놨고

모두 500px 너비에 1240~1270px 높이의 이미지를 갖고 있다. (학습을 위해 512x1408px로 리사이즈를 할것을 추천하고있다.)

문제는 해당 이미지셋은 폴더정리가 1~50개의 폴더마다 1~7개의 jpg와 bmp가 쌍으로 있어서 스크립트를 작성할 때 모든 폴더를 열어보며 이미지를 사용해야한다.

수작업으로 폴더 속 이미지를 모두 꺼낼 수 있지만 이름이 같아서 중복된 파일이 되어버려서 이름도 수작업으로 바꿔줘야한다.

 

python으로 간단하게 해결했다.

import os
import shutil

source_root = 'KolektorSDD'         # 50개 폴더가 있는 상위 폴더
target_folder = 'surfaceDataset'         # 합쳐진 이미지 폴더

os.makedirs(target_folder, exist_ok=True)
existing_names = set()

count = 1
for root, dirs, files in os.walk(source_root):
    for file in files:
        if file.lower().endswith(('.jpg', '.bmp')):
            original_path = os.path.join(root, file)
            
            # 중복 방지용 이름 재조정
            name, ext = os.path.splitext(file)
            folder_name = os.path.basename(root)
            new_name = f"{folder_name}_{name}{ext}"
            while new_name in existing_names:
                new_name = f"{name}_{count:03d}{ext}"
                count += 1

            existing_names.add(new_name)
            target_path = os.path.join(target_folder, new_name)
            shutil.copy2(original_path, target_path)

print("모든 이미지가 중복 없이 병합되었습니다.")

 

 

덤으로 GitHub도 생성하였다.

https://github.com/choi-yeong/POSFRAME

 

GitHub - choi-yeong/POSFRAME: 포스코 포스프레임 따라해보기

포스코 포스프레임 따라해보기. Contribute to choi-yeong/POSFRAME development by creating an account on GitHub.

github.com

 

트리구조를 어떻게 구현할지 생각해보는데

팀원들과 프로젝트 합본의 편의성을 위해 각자의 기능을 스크립트파일로 구현하여

헤더파일로 main스크립트에 선언문으로 선언하여 사용할 수 있도록 할 것이다.

다만, main스크립트 파일은 어떻게 꾸며줘야 합본을 했을 때 모든 기능을 표현하기 좋을지 구상이 필요하다.

 

'산업&공학 > 기계' 카테고리의 다른 글

[철강] 압연강판의 불량처리  (0) 2025.05.12