티스토리 뷰

728x90

딥러닝 분야는 다양한 분야가 있지만 그중에 비젼분야 중 Detection 분야는 특정 객체를 바운딩박스로 표현해 주기때문에 시각적인 효과로 인해 엄청나게 큰 인상을 남길 수 있다.

하지만 딥러닝은 언제나 그렇듯 가장 처음 준비해야 할 것은 데이터라는 것을 알 수있을 것이다.

 

비젼 Classification의 경우 원하는 이미지를 크롤링, 다운로드 등 다양한 방법으로 수집만 하면 되지만,

디텍션같은 경우는 학습하고자 하는 객체의 Bbox(바운딩 박스)가 필요하여 사람이 수작업으로 표시해줘야 하는 경우가 많다. 즉, 디텍션 테스크를 하면 때놓은 수 없는것이 Bbox 라벨링 작업이다.

 

시중에 라벨링을 전문적으로 처리하는 회사는 자체적으로 웹상 툴을 제공하여 크라우드워커에게 제공을 해주만,

개인적인 프로젝트나, 자체 회사에서 라벨링 작업을 해야할 경우 공개된 툴을 이용하여 작업해야 한다.

 

공개된 툴이 굉장히 많겠지만, 필자는 LabelImg라는 툴을 소개하고자 한다.

대개 딥러닝 학습을 하고자하는 분들은 Anaconda를 설치하고 Conda 가상환경을 만든 후 딥러닝 작업을 진행할 것이다.

 

LabelImg는 pip로 설치가 가능하여 딥러닝 개발자가 손쉽게 접근할 수 있는 툴이라 생각하면 된다.

 

1.가상환경 생성

(여기부터는 Anaconda가 설치되어있다고 가정한다.)

일단, 가상환경부터 하나 만들어서 진행해보겠다. 

해당 커맨드로 yolo_ 라는 가상환경을 하나 새로 만들어 여기다가 LabelImg를 설치하겠다.

 

2.가상환경 접속

만든 가상환경에 접속을 하게되면 맨 앞에 가상환경 이름이 나오는 것을 볼 수 있다. ( 여기서는  yolo_)

 

3. LabelImg 설치

pip를 이용해 라이브러리를 설치하는 것은 아주 익숙할 것이다.

pip를 이용해 labelImg를 설치해준다. 여기서 주의할 점은, labelImg를 지켜서 깔아야한다.

( I 대문자임 )  

 

4. 실행

설치가 됐으면, 단순하게 labelImg를 입력하면 아래와같은 창이 뜨는 것을 볼 수 있다.

해당 창에서 이제 이미지를 가져오고, Bbox를 진행해주면 된다.

 

5. 사전 세팅

 

cat이라는 폴더를 하나 생성하여 내부에 이미지와 라벨을 따로 저장해 주기위해 2개의 폴더를 각각 만들어 놨다.

(한군데다 해도 되지만.. 나눠서 보관하는 것을 추천한다. 이유는 대개 YOLO 모델을 많이 사용할텐데, 가장 유명하게/ 널리 사용되는 ultralytics라이브러리를 사용하게되면 위와같이 나눠서 저장하는게 사용하기 쉽다. + 유지보수도 좋다. )

 

이미지 폴더에는 하나의 사진만 넣어놨다.

그 후 labelImg에서 살펴보자.

 

6. 이미지 불러오기 & 라벨링

빨간색으로 표시된 Open Dir로 위에 만들어 놓은 cat > img 폴더를 선택하면 해당폴더에 있는 모든 이미지를 가져올 수 있다. 그 후 바로 창이 하나 더 뜨는데, 이건 라벨링을 어디에다 저장할 것인지 물어보는 것이다.

즉, cat > label폴더를 선택해주면 된다,

 

선택해주고, labelImg에서 d를 누르면 사진이 나오는 것을 볼 수 있다.

 

라벨링 방법은 간단하다.

W를 누르면 위와같이 십자모양으로 바뀌고, 드레그를 이용하여 박스를 만들면 된다.

 

바운딩 박스를 하게되면 맨 처음 한번 위 빨간색 표시된 것처럼 라벨을 입력해야 한다.

여기서는 cat만 라벨링 하면 되기때문에 cat을 넣어 ok를 해준다.

 

(꿀팁. labelImg를 처음 시작하면 바운딩 박스를 여러개 생성하여 자신이 라벨링 해야하는 class를 모두 한번씩 만들어주고, 만든 bbox를 다시 제거하면, 예상치 못하게 labelImg가 꺼지는 경우 label번호가 꼬이는걸 방지할 수 있다.)

 

오른쪽에 cat이라는 라벨이 하나 생긴것을 볼 수 있다. 이 라벨은 라벨을 저장하고자 설정했던 폴더에서 볼 수 있다.

 

라벨링이 저장되는 폴더를 살펴보면 cat.txt 와 classes.txt가 생성된 것을 볼 수 있고, 각 파일은 아래와 같은 내용을 가지고있다.

 

cat.txt의 이름은 이미지의 이름과 똑같이 생성되며, YOLO 형식이라 위와같이 생성된것이다. ( 형식을 바꾸고 싶으면 labelImg의 왼편에서 YOLO, CreateML, PascalVOC 중 고를 수 있다.)

 

classes.txt는 어떤 클레스들이 있는지 적어놓은 파일이다.

여기서 **중요한건 적혀있는 순서가 중요하다.

cat이 첫줄에 적혀있어서 cat.txt에 맨 앞 부분이 0이다.

즉, classes.txt의 내용이 많아져 순서가 바뀌면, 라벨이 엉망으로되니 조심하길 바란다.

( 그래서 labelImg를 처음 시작했을때 모든 라벨링을 한번씩 순서에 맞게 생성하는걸 추천한 것이다.)

 

이것으로 Deteciion에서 필요한 Bbox를 만들 수 있는 툴을 소개했고 설명했다.

위에서도 언급했지만, 디텍팅의 경우 Bbox로 시각적인 효과를 나타낼 수 있기에 줄 수 있는 충격이 크다.

해당 테스크를 잘 이용하면 아무것도 아니지만 뭔가 대단한 것처럼 보일 수 있으니 한번 관심을 가져보길 바란다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함