본문 바로가기
코딩∙데이터분석🧑🏻‍💻/KT에이블스쿨_DX트랙

[KT에이블스쿨] 4차 미니프로젝트 후기 - 시각지능 편

by 빕비빅 2023. 10. 31.

ㅎㅎ 3차 스킵하고 쓰는 4차 미프 후기~~ 


이번 4차 미프는 5일간 진행되었는데, 월화 첫 이틀은 언어지능 미프를, 수목금 3일 간은 시각지능 미프를 수행했다.

 

1일차_10월 18일 수요일

google colab의 cv2_imshow 모듈을 사용해 영상데이터를 다루고, 프레임을 조정해가며 이미지 파일을 자동으로 추출하는 코드를 써보았다. 

어떤 비디오가 들어오더라도 이미지를 추출해낼 수 있는 코드를 만들어냈다. 있는 코드 틀에 짜깁기 한 것뿐이지만 그게 어디야🥹

Roboflow에도 있고 인스타그램 릴스 업로드 할 때 보면 영상에서 자동으로 썸네일 추천해주는 기능의 베이스가 바로 이 코드가 된다고 할 수 있겠다.

시각지능 이론 강의 들을 때는 정말 몸이 배배 꼬일 정도로 힘들었는데 코드로 하니까 괜찮은 느낌?

물론 아직 시각지능 모델링 시작도 안했지만^0^...

내일도 잘 해내기를! 


2일차_10월 19일 목요일

- 학습할 이미지 준비 - 기라벨링된 이미지 활용
- Roboflow에서 학습데이터 수집
- Yolov5학습을 위해 데이터 구조 세팅
- Yolov5를 통한 Object Detection 

CCTV영상에서 차와 바이크를 탐지하는 프로그램을 만들었는데, 

우리조는 한 사람 당 한 가지씩 파라미터를 바꾸고 차들이 인식되는 거 보자마자 축하하고는 시간 얼마 안남아서 놀았는데

발표하는 조들 보니까 파라미터 바꾸고, 결과 꼼꼼히 확인해서 전광판이 탐지되는 점, 오토바이를 탐지하지 못하는 점 등을 찾아내고 해결하기 위해 추가로 데이터셋을 열심히 찾아서 학습시킨 조들이 많아서 반성했다. 끝까지 최선을 다하자...! 

나름 열심히 씨름 했건만 탐지결과 비디오가 업데이트가 안돼서 그걸로 씨름하느라 데이터셋을 추가해볼 생각은 못했는데

우리 목표 데이터셋과 가장 흡사한 다른 데이터셋을 찾아서 차량 종류까지 구분해서 THreshold 0.5이상으로 올려서 정확도 미친듯이 높인 조가 있어서 정말 인상깊었다. 

전체조별 발표!


3일차_10월 20일 금요일

- Roboflow를 이용한 직접 데이터 라벨링
- 데이터 추가를 통한 모델 성능 개선(만든 라벨링데이터를 학습셋에 추가해 모델 학습)
- 최종 모델 발표

그간의 모든 미프 중에 가장 조용하고 평화로운? 날이었다.

왜냐?

Roboflow에서 직접 사진 데이터 13개씩 일일이 승용차, 트럭, 버스, 오토바이를 구분해 네모 박스치느라 다들 여념이 없었기 때문...
다들 미프에서 이렇게 뇌빼고 할 수 있는 작업이 얼마만이냐며 노가다 작업(?)을 오전 내내 했다ㅋㅋ

솔직히 데이터라벨링 그냥 눈으로 보고 트럭에는 트럭 박스치고, 오토바이는 오토바이, 네모박스로 표시만 해주면 되는 거라 쉬울 줄 알았고, 뇌빼고 해도 되는 줄 알았는데 아니었다.... 

첫번째 문제박스를 어떻게 칠 것인가?
한 사람이 100여 개의 사진을 일일이 다 라벨링을 짧은 미프 시간 내에 하는 것이 불가능하므로, 아웃소싱 기능을 사용해서 조원 8명이서 나누어 각자 데이터라벨링을 진행했다. 여기서 처음 우리가 맞딱트린 문제는 박스를 '어떻게' 칠 것인가였다. 이 말은, 박스를 차에 얼마나 가깝게 칠 것인지, 배경이 어느정도 섞여도 되는지, 박스는 네모로 칠지, 타원형으로 할지, 직접 선을 딸지(우리 조 꼼꼼바른생활사나이는 진짜 누끼 다 땄었다ㅋㅋ 정성 대박)에 대한 사전에 공통된 협의가 있어야한다는 뜻이다. 

두번째 문제라벨링을 어떻게 할 것인가?
추가로 불러올 학습데이터셋과 똑같이 라벨링 구분을 했어야했는데, 우리조는 그걸 미처 고려하지 못해서 Roboflow에서 쓸 만한 추가 학습데이터셋을 미리 찾아두지 않고 그냥 우리가 비디오에서 추출한 CCTV사진부터 라벨링을 시작해버려서, 추가 학습데이터셋과 우리 데이터셋의 라벨링이 달라지는 결과를 불러왔다..ㅠㅠ

그래서 추가학습 데이터셋을 못쓰고 CCTV캡쳐 130개의 데이터만 추가해서 학습을 시켰고 그래서 데이터 품질은 정말 좋았지만(정말 다들 열심히 라벨링 했다ㅋㅋ) 학습시킬 데이터를 충분히 확보하지 못하는 결과를 낳았다. 각자 다양하게 파라미터를 조정해보면서 성능을 올리려고 노력했지만 잘 안됐다(당연하다 어떻게 해도 얘는 학습이 덜 된 상태니까). 조별시간이 끝나갈 때쯤 '학습데이터가 작으니까 대신에 여러번 학습시키면 어떨까?'하는 생각이 들어서 소심하게 5, 10, 15, 30 이런 식으로 늘려보고 있다가 시간이 다돼서 아쉽게 마무리를 했다. 그래도 우리가 뭘 잘못했고, 어떤 부분을 놓쳤는지 조원들이랑 이야기를 계속 나누면서 덕분에 많이 배워서 괜찮았다!

발표한 조 중에서 가장 인상깊었던 조는 놀랍게도 우리처럼 학습데이터를 추가로 사용하지 못한 조였다!😂
이 조는 그래서 처음부터 epoch를 엄청나게 늘리는 방법을 생각해냈고, 한 500번 돌렸나 했나??
연산량이 많아서 이번 미프는 Google Colab Pro를 결제해서 다들 얼마 남았는지 맘졸이면서 이리저리 학습시켜봤는데
발표자분 컴퓨터에 성능 좋은 GPU있어서 냅다 500번 돌려놓고 기다렸다고😂
강사님도 "아 이런 생각은 못해봤는데요"하시면서 빵 터지셨다. 에이블스쿨에서 여태껏 이렇게 한 조는 처음 봤다며ㅋㅋ
성능이 정확하게는 기억안나지만 95%쯤? 암튼 되게 잘 나와서 모두가 깜짝 놀라워한 발표였다.

언어지능, 시각지능 배우면서는 언어지능이 훨씬 재밌다고 생각했는데(이론이 덜 어려워서 그랬을 수도 있다ㅋㄷㅋㄷ)
미니프로젝트 중에서는 시각지능편이 제일 재미있었다! 시행착오를 조원들이랑 같이 거치면서 실전을 통해서 배우는 것도 많았고(이론 수업 듣고 실습만 하는 걸로는 절대 이만큼 못배웠을 것 같다) 

마지막 날 중간에 병원을 다녀와야 해서 조별로 성능 개선 시간을 놓쳐서 나만 다양하게 시도해보지 못한 점이 개인적으로 아쉬웠지만

그래도 월화수목금의 긴 인공지능 프로젝트 대장정을 잘 마쳐서 뿌듯하고 앞으로가 더 기대가 되는 5차 미니프로젝트였다! 

 

댓글