728x90
반응형
- 데이터 셋을 분리하는 코드에 멘토님이 코드 리뷰를 해주셨는데,
현재는 확장자가 png 하나이지만, 나중에는 어떻게 될 지 모르기 때문에
replace()로 단순히 대치 하는 것보다 다른 방법을 추천해 주셨다.
- 학습할 데이터 셋을 나누는 과정에서, 라벨 리스트를 따로 추출함.
-> train 폴더에 있기 때문에 그냥 같은 제목으로 나눠도 되지만,
정확하게 각 img에 대응되는 txt인지 확인 하기 위해서 이 과정을 거침.
=> 이 부분이 사실 좀 이해가 안 갔었음. 어차피 퍼센트로 나눌 건데? 이런 느낌이었는데
이미지와 라벨 파일을 서로 연경하는 과정을 정확하게 트랙킹하기 위함이었다고 해서 이해가 감.
수정 전
all_labels = [img.replace(".png", ".txt") for img in imgs]
# replace()로 단순 대치하는 것은 직관적
#but, 여러 확장자가 있을 때 처리를 추가적으로 해줘야 함.. -> 이 부분을 리뷰해주심
수정 후
- 2가지 방법을 추천해 주셨음.
data_dir에 있는 모든 파일을 basename만 불러와서 .txt 만들기 |
os.path.splitext() | |
동작 원리 | 파일 이름만 추출 후 .txt로 변경 (split('.')[0]) | 파일 이름과 확장자를 안전하게 분리하고 .txt로 변경 |
장점 | - 코드 간결하고 직관적 - 다양한 확장자에 유연함 - 빠르게 처리 가능 |
- 확장자 분리 및 처리에 안전 - 여러 점을 포함한 파일 이름에 문제 없음 - 다양한 확장자 안전 처리 |
단점 | - 파일 이름에 여러 개의 점이 있을 경우 문제 - 경로 처리나 특수한 경우에는 추가 처리 필요 |
- 코드가 상대적으로 길어질 수 있음 |
적합한 상황 | - 확장자와 관계없이 파일 이름만 기준으로 라벨을 만들고 싶을 때 (확장자가 고정) | - 다양한 확장자와 파일 형식에 대해 안전하게 처리하고 싶을 때 |
- 2가지 방법중 os.path.splitext()가 더 적절하다고 판단되어서 그것으로 수정함.
all_labels = [os.path.splitext(img)[0] + '.txt' for img in imgs] # os.path.splitext() 방식
728x90
반응형
'Projects > Comento_cctv_object_detection' 카테고리의 다른 글
[trouble_shooting] yolov5랑 8, 11은 wandb 결과 값이 다름. 굳이 같게 x (0) | 2025.03.21 |
---|---|
[모델 학습] batch와 epoch // 맥북 에어 m1도 GPU 사용 가능!! (0) | 2025.03.19 |
[trouble_shooting] 이미지 크기 비교의 속도를 위해서ThreadPoolExecutor 사용 (0) | 2025.03.15 |
[코멘토 1차 과제 피드백] 꼼꼼하게 과제물의 장단점을 나열하고, 질문에 답해주심. (0) | 2025.03.15 |
[객체 탐지] 객체 탐지 모델 선정 (1) | 2025.03.12 |