본문 바로가기
Project/Wall Climb Situation

[Project] 월담 행위 인식 모델 - 1. 라벨링 및 이미지 전처리

by hotelshoe 2022. 1. 24.
반응형

머신러닝을 통해 커스텀 모델을 구현하는 프로젝트

요즘의 경우 곳곳의 CCTV의 활성화로 치안 문제가 어느 정도 완화되는 듯하지만 이 또한 사람이 하나하나 영상을 감시해야 하는 문제가 있기 때문에, 컴퓨터상에서 이를 먼저 인지하여 알려주면 어떨까 하는 아이디어에서 시작하였습니다. 여러가지 치안과 관련된 모델을 구상해 볼 수 있겠지만, 이번 프로젝트는 현재 관심 있는 월담(담을 넘는 행위) 인식 모델로 진행해 보았습니다.

 

개발 환경의 경우 코랩을 활용하였으며 개별 IDE로 구현하면 좋겠지만 gpu 연동 문제(cuda, ...)로 구글에서 제공하는 코랩의 GPU 환경을 이용하기로 하였습니다.

 


1.1 이미지 저장 및 라벨링

a. 이미지 넘버링

구글링 등으로 직접 다운로드하거나 여러 크롤링 툴로 필요한 이미지를 다운로드 합니다. 이때 라벨링 하기 편하도록 이미지에 넘버링을 해야하는데, 이미지 파일명 넘버링의 경우 수월하게 진행할 수 있도록 따로 포스팅했으니 링크를 통해 이용하면 되겠습니다.

https://prlabhotelshoe.tistory.com/22

다운로드 후 넘버링을 마친 이미지들

보통의 데이터와 비교하면 상당히 적은 양이지만 연습의 목적을 두고 50장 내외로 준비하길 권장합니다. 저의 경우 train 이미지로 48장 test 이미지로 12장, 총 60장을 준비하였습니다.

 

b. 이미지 라벨링

라벨링은 널리 쓰이는 labelImg 툴을 활용하였습니다.

https://github.com/tzutalin/labelImg

 

GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images

🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images - GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding b...

github.com

위의 링크를 통해 직접 내려받아 사용할 수 있겠지만, 다음의 간단한 방법을 소개합니다.

pip install labelImg

아나콘다의 가상환경 혹은 개별 IDE의 커맨드창에 pip 명령어로 labelImg를 설치합니다. 그 후 다음의 명령어로 간단하게 툴을 실행시킬 수 있습니다.

labelImg

명령어를 입력하면 위와 같이 labelImg가 실행됩니다.

Open Dir 을 클릭하여 이미지가 저장된 폴더를 선택합니다. 이때 주의할 점은 왼쪽에 즐비된 아이콘 중 YOLO라 표시된 아이콘을 확인하여 라벨링의 포맷 형태가 YOLO 포맷인지 꼭 확인합니다.(클릭하여 변경 가능)

 

그다음 키보드의 w를 누르면 커서가 크로스헤어로 바뀌고, 클릭 후 드래그하여 원하는 영역을 선택할 수 있습니다. 자신이 원하는 모델에 맞게 이미지 영역을 선택한 후 클릭을 떼면 클래스를 생성에 대한 알림 창이 뜨고 모델에 맞게 클래스를 입력하면 됩니다. 저의 경우 월담은 climb, 일반적인 보행은 walk 두 가지의 클래스를 생성하였습니다.

 

한 이미지에서 두 가지 클래스를 라벨링한 모습

이미지의 영역을 지정하여 클래스를 생성한 뒤 반드시 작업한 이미지마다 save를 눌러 저장해야 합니다. 이후 모든 이미지에 같은 절차를 거쳐 본인의 모델에 적절하도록 라벨링 합니다.

 

라벨링을 마치면 classes.txt 파일과 각 이미지에서 선택한 영역에 해당하는 값의 txt 파일이 생성된다.

 

생성 파일 예시

classes.txt에 자신이 지정한 클래스가 입력되어 있으며, 각 이미지별 선택 영역에 대한 좌표와 해당 영역의 클래스 레이블이 입력되어 있습니다. 이제 이미지에 대한 라벨링을 완료하였고 다음 포스팅에서 다룰 학습할 준비가 되었습니다.

 

반응형

댓글