인공지능/2021 AI엔지니어 고급반

2021AI엔지니어 고급반 - YOLO with deep learning 교육 프로그램 참가 후기 3일차

Razelo 2021. 8. 25. 17:08

YOLO를 활용한 프로그램이 3일차에 접어들었다. 3일차인 오늘은 각 팀별로 데이터셋을 만들어보는 시간을 가졌다. 

우리 조는 인종을 구분하기 위해 백인, 흑인, 황인의 데이터를 모았다. (사실 중동, 인도와 같은 사진을 섞게 되면 확실하게 원하는 결과를 얻기 힘들어서 아직은 추가하지 않았다. 나중에 조금 더 성능을 개선할때 좀더 디테일하게 구분하기 위해서 추가할 예정이다. 지금 목표는 성능개선이 아니라 아예 결과가 잘 나오는지 안나오는지 자체를 확인하기 위함이기 때문이다. )

 

백인의 경우 British, France, Italy, American등의 연관 키워드들로 사람사진만 뽑아서 저장하였다. 황인의 경우 Asian이라고 치면 연관 검색으로 일본인, 중국인, 한국인의 수많은 검색어가 나와서 손쉽게 찾을 수 있었다. 흑인의 경우도 마찬가지였다. 

 

검색을 할때 활용한 도구가 있다. 굉장히 유용했다. 

이미지 데이터를 수집하기 위해서는 크롤러가 필요했는데 사실 이 도구를 알기 전에는 직접 파이썬으로 만들어서 사용하려고 했다. 그런데 강사님이 너무 좋은 툴을 소개해주셨다. 크롬 확장 프로그램 중 하나인데 Image Downloader이다. 

 

아래 링크에서 다운 받을 수 있다.

https://chrome.google.com/webstore/detail/image-downloader/cnpniohnfphhjihaiiggeabnkjhpaldj

 

Image Downloader

Browse and download images on the web

chrome.google.com

 

사용법은 아주 간단하다.

1. 구글 이미지 검색창에서 원하는 키워드를 검색한다.

2. Image Downloader 확장 프로그램을 클릭한다. 

3. download를 클릭한다. 

4. yes, download를 클릭한다. 

 

3번의 과정 중간에서 이미지의 크기를 선택할 수도 있다. 이렇게 다운로드 하면 저절로 기본 Downloads 폴더에 다운이 된다.  

( 단점도 존재한다. 이렇게 긁게 되면 화질이 좋지 않은 사진이라도 모두 다운로드 된다. 팀원분중에서 직접 파이썬코드를 짜셔서 화질 좋은 이미지만 긁으신 분이 있는데, 차라리 이렇게 하는 것도 방법이다. 화질 좋은 데이터셋을 구성하고 싶다면 직접 파이썬 코드를 작성하는 것을 추천한다. ) 

 

이렇게 아주 많은 데이터를 손쉽게 모을 수 있었다. 

그리고 리눅스에서 Yolo_mark를 이용해서 각자 맡은 인종에 대해 라벨링(박스 치기)을 진행했다. txt파일이 생성되는 것을 확인하였고 조원들과 파일명을 통일하여 세명 모두의 파일을 합쳐서 학습을 진행할 수 있었다. 

 

custom.data 혹은 custom.names 파일에서는 인식하려는 종류가 3개이므로 클래스도 3개이므로 모두 3으로 맞춰주었다. 

마찬가지로 yolov4-custom.cfg파일에서도 [YOLO]태그에 있는 classes도 3으로 수정하였고 바로 위에 있는 filter설정에서도 3에 맞는 공식을 적용하여 24로 수정하였다.

 

공식 -> (클래스개수 + 5) * 3 이다. 

 

그렇게 적용하여 학습을 진행하고 그래프에 점이 찍히는 것을 확인할 수 있었다. 조원 한분이 미리 테스트를 진행했는데 상당히 인식을 잘하고 있었다. 

 

아직 노인이나 아이에 대해서는 테스트를 진행하지 않아서 시간이 남을때 계속 데이터를 보충하면서 데이터셋을 확장시켜야할 것 같다. 

 

첫날에는 세팅때문에 조금 고생을 했지만 결국 2,3일차에는 너무나 재밌게 수업을 이어나가고 있어서 다행이다. 팀원분들과 함께 데이터를 주고받고 서로의 인식률을 비교하면서 개선시켜나가는 과정이 재밌었다. 

 

물론 내 의견도 항상 적극 수용해주셔서 감사할 따름이다. 

 

진행하면서 많은 것을 배울 수 있었다. 또한 이 기술은 정말 많은 것이 가능하구나라는 것을 느끼게 되었다. 

 

또한 웹상에는 아주 다양한 오픈 데이터셋이 존재한다는 것을 알게 되었다. MS COCO데이터를 비롯해서 AI HUB에서 제공하는 데이터도 존재했고, 누군가가 대가를 바라지 않고 무상으로 올려놓은 데이터를 활용할 수 있다는 것이 정말 좋은 환경이 마련되었다고 생각한다. 

 

관련 colab 코드는 아주 좋은 교육자료라는 생각이 든다. 처음부터 따라하기만해도 완벽하게 실습을 할 수 있도록 구성이 되어 있다. 

 

아래는 데이터셋을 구할 수 있는 링크이다. 

 

https://cocodataset.org/#home

 

COCO - Common Objects in Context

 

cocodataset.org

https://aihub.or.kr/

 

홈 | AI 허브

AI 데이터를 찾으시나요? AI 학습에 필요한 다양한 데이터를 제공합니다. 원하시는 분야를 선택해 보세요.

aihub.or.kr


글을 쓴지 한참이 지났지만 자기전에 덧붙일 내용이 있어서 추가한다. 

 

오늘은 피곤해서 블로그 글을 짧게 쓰고 자려고 했는데 자려고 정리하는 와중에 colab을 확인해보니 얼추 학습이 완성되어가고 있었다. 거의 6시간은 족히 넘게 걸린것 같다. 인식률이 낮게 나올줄 알았는데 라벨링을 잘해서 그런건지 아니면 애초에 꽤 많은 이미지를 넣어서 그런건지는 정확하지 않지만 내 예상보다는 수치가 높게 나왔다. (사실 완전 바닥을 칠줄알았는데 93% 가 한번 나올줄은 몰랐다. )

 

그리고 지금 문제점은 백인 이미지 500장 + 흑인 이미지 192장 + 황인 이미지 300장 으로 총 992장을 넣었는데 백인에 비해서 흑인과 황인의 개수가 적어서 인식이 좋지 못할 수도 있다고 생각된다. 사실 흑인은 가장 구분하기가 쉽다. 그런데 내 예상으로는 황인과 백인을 구분하는 것이 가장 어려울 것이라고 생각한다. 황인과 백인을 구분하기 위해서는 피부톤이 아니라 이목구비 혹은 눈색깔로 구분되기 때문이다. 따라서 황인의 이미지를 조금 더 보충할 필요가 있겠다 싶었다.  

그래도 사실 속마음은 인식률이 어떻든 작동이라도 해서 다행이다. colab에 있던 코드 중 한 두개가 말썽을 부려서 꾸역꾸역 고치긴 했는데 (yolov4-custom.cfg파일에서도 [YOLO] 태그에서 classes를 3으로 바꿨는데 그 위에 filter 숫자를 안바꿔서 Wrong Annotation에러가 발생하기도 했다. 이외에 자잘한 문제가 꽤 있었다. ) 현재로서는 잘 돌아간다. 

 

이제 앞으로 해줄 일은 최적화만 남았다. (인식률 높이기!)

반응형