9월 마침표

wonsik·2021년 9월 27일
1
post-thumbnail

오늘은 학부 연구생 첫 프로젝트가 전부 마무리 되어서 이번 한 달 동안 어떤 점들이 변화했는지 생각해보았다.

1. ETRI 대회

처음으로 스스로 찾아보면서 생각하고 코딩하면서 어떤 식으로 코드를 짜야 더 편하게 데이터를 사용할 수 있을까에 대한 생각을 하게 되었다. 또한 차원축소의 향상을 위해 어떤 노력을 해야하는지 배웠다. MNIST가 아닌 실제 데이터를 이용했기에 뭔가 신기하면서도 재밌었다.

2. 학부연구생

첫 번째 프로젝트

9월 1일부로 시작한 학부연구생. 내가 들어간 랩실은 의료영상을 머신러닝과 접목시킨 곳이다. 내가 맡은 첫 과업은 기존 Resnet 모델을 통해 이미지의 악성/양성 정확도를 검증하는 것이었다. 딥러닝에 대한 지식이 전무해서 너무 힘들었던 기간을 보냈었다. 깃 허브, 리눅스 환경도 처음이라 너무 생소했고 어디서부터 시작할지 몰랐던게 가장 힘들었었다. 하지만 누구나 처음엔 몰랐을거라 생각하면서 정말 처음부터 하나하나 시작했다. 파이토치가 무엇인지, 깃 허브 사용법, 터미널 사용법, 처음 보는 파이썬 모듈들에 대한 정보들을 공부하면서 자츰 익숙해졌고, 랩실 사람들의 도움도 받아 거의 내것으로 흡수할 수 있게 되었다. 딥러닝 모델을 사용할 때 나름의 규칙이 있다는 것을 알게 되자 확실히 이해속도가 빨라졌던거 같다.
프로젝트의 기본적인 순서는 다음과 같다.

  1. 의료영상 데이터(dcm파일), 환자 정보 excel파일 준비
  2. dcm파일 -> png파일 변환(이때 excel파일에서 환자 ID를 가져온다.)
    각기 다른 이미지 사이즈를 고정시킨다.
  3. png파일 -> dataset
    Train,Val,Test로 나누어 dataset을 만드는데 기존 프로젝트에선 random하게 10%씩 추출하여 각각 Val, Test로 넣어준다.
  4. main 파일 실행
    여러 파라미터 인자 값들을 설정하고 실행하면 Train한 데이터를 통해 Val,Test를 진행한다. 이때 전체 epoch중에 Val f1-score가 가장 높을 때의 Test f1-score를 사용한다.

내가 맡은 과업은 우선 기존 데이터를 가지고 cross-validation을 진행하는 것이었다. 그리고 excel환자 파일 중 한가지 특성 중 특정 값을 가지는 환자를 제거하여 다시 F1-score를 구하는 것이었다.(그 특정 값을 가지는 환자를 제거하는게 도움이 될 것이라는 교수님의 의견을 통해)

처음엔 고생이었지만 흐름과 각 파일의 코드를 이해하게 되니까 일이 수월했다. 오늘 마지막 ppt를 작성했고 이에 대해선 따로 나중에 포스팅을 해야겠다.(아니면 이곳에 조금 수정)

이번 프로젝트를 통해 상승된 점
1. 코드리뷰는 처음이었는데 이제 좀 익숙해진 느낌이 들었다. 어떤 부분을 우선적으로 보아야하는지 어떤 구조로 돌아가는지 이해했다. 특히 이전엔 ReadMe를 읽어도 뭐가 뭔지 도통몰랐는데 이제는 프로젝트에 대해 전반적인 이해가 된다.
2. 프로젝트에 사용되는 모듈들이 익숙해졌다.
os 모듈, sys 모듈 등 하나씩 전부 구글링해보고 예시들도 직접 구현해보니 이제는 보면 바로 이해하게 되었다.
3. 모델 돌리기(?)가 익숙해졌다.
터미널 상에서 인자들을 파싱하고 값들을 조절하는게 나름 익숙해졌다. 그래도 이론에서 배웠던 것들이라 익숙했고, 터미널에서 모델이 돌아가는 모습을 보니 이해도 더 잘가지고 뭔가 열정이 끌어오르는 느낌(🙄??)이 생긴다ㅋㅋ
4. 무엇보다도 할 수 있다는 자신감이 생겼다.
이 외에도 여러가지를 배우고 느꼈지만 자신감이 생겨서 너무 좋았다. 무언갈 배우는건 원래 그리 즐겁지 않을 수 있는데 이번엔 직접 내가 찾아보고 배운 것들이 많다. 이렇게 한 프로젝트를 마치고나니 내 꿈이 좀더 명확해지고 어떤 방향으로 나가야하는지 보이고 자신감이 생겼다.

두 번째 프로젝트

현재는 새로운 과업이 부여됐다.
이전엔 classification이었지만 이번엔 detection이다.

큰 프로젝트의 내용은 사출품을 intel사의 Realsense를 통해 사진을 찍어 결함을 detection하는 것이다.
사실 기존에 있던 프로젝트라 detection을 99% 이상으로 이미 가능하다고 했다.

내가 맡은 역할은 새로 받은 사출품들을 라벨링하는 것인데 기존에는 CVAT를 통해 직접 진행했다. 여기서 나는 이미 기존에 99% detection이 가능하면 굳이 직접하지 않고 모델에 test로 돌리면 되지 않나라는 생각을 가지고 있다.

그래도 우선 프로젝트를 내것으로 만들기 위해 Realsense를 파이썬 내에서 찍고 저장하는 방법(OpenCV와 numpy가 사용된다.)을 익혔고, detection하는 모델(Yolov5) 구조를 알기 위해 코드리뷰를 하는 중이다.

정말 놀랬던 점은 과업을 진행하는 속도가 내가 느껴질 정도로 수월해졌다는 점이다. 이에 자만하지 않고 더 열심히 공부하고 알아보아야겠다.

3. 앨리스 AI 기본과정 수료

이건 특별한건 아니고 학교 메일에서 무료로 AI관련 내용을 공부할 수 있다는 것을 발견해 신청했다. 앨리스라는 코딩을 교육하는 사이트에서 AI 기본/응용과정이 있는데 우선 기본으로 시작했다. 기초적인 프로그래밍, 모듈 사용, Numpy, Pandas, Matplotlib에 대한 내용을 배웠고 array나 DataFrame에 대해 나름 개념적으로 확실히 이해했다. 아직 직접 응용해보지는 않아서 나중에 캐클이나 다이콘 같은 사이트에서 대회에 참가해서 익혀야 겠다고 생각 중이다.
그래도 추석 연휴동안 나름 공부해 수료하여 커피도 받았다(개꿀!😀)

4. 알고리즘 연습(백준, 프로그래머스)

현재 내가 가고자 하고 싶은 분야는 AI쪽이다. 더 자세히는 데이터 사이언스나 분석쪽이다. 아마 이젠 웬만해선 바뀌지 않을 것이다. 근데 저 꿈을 이루기 위해서 다양한 경로가 있는데 나는 유튜브에서 AI Holic이라는 분의 영상을 보고 경로를 결정했다.
백엔드에서 시작해서 서버, 빅테이터를 자유롭게 다루는 실력을 먼저 키우고 싶다.
이를 위해선 우선 백엔드 엔지니어가 되어야 한다. 좋은 백엔드 엔지니어가 되기 위해선 트래픽과 데이터가 많은 회사여야 한다고 생각한다. 따라서 IT계열 회사에 들어가고 싶다. 요즘엔 소셜, 커머스 앱들같은 경우에도 사용자가 많기 때문에 결국 큰 회사 다시말해 대기업에 들어가는게 첫 목표이다. 대기업들은 대체적으로 코딩테스트를 기본관문으로 둔다. 따라서 나는 코딩테스트에 통과하는 실력을 갖춰야한다. 다행히 자료구조와 알고리즘을 모두 수강했기에 이론적인 부분에선 어려움이 없고, 지금은 가물하지만 과제를 진행하면서 나름 코딩을 했었다.

알고리즘 문제를 풀기위해 여러 사이트를 알아보았고 백준, 프로그래머스에서 연습하기로 결정했다. 사실 코딩을 많이 한 것도 아니고 잘하는 것도 아니라고 생각하지만 모르는 문제에서 많이 알아가는 느낌이다. 그리고 하나씩 배울 때 엄청 재밌고 이런걸 만드는 사람들이 참 대단하다고 생각한다.
여튼 한 달 동안 약 80문제 정도 풀었다. 현재 탐색쪽을 풀고 있는데 여기부턴 정말 한 문제 한 문제가 새롭게 배우는 느낌이라 더 좋은 것 같다. 하지만 그만큼 잘 안풀려서 머리가 깨질 것 같긴 하다. 아 그리고 깃허브에 익숙해질겸 문제 푼 것들을 1일1커밋 하듯이 올리고 있다.

마치며...

그래도 써보니 9월 동안 많은 것들을 하려고 노력했다. 이제는 약간 삶이 컴퓨터에 맞춰진 것 같기도 하다. 이것들 말고도 여러 일들이 있었지만 벨로그에 쓸 것들은 이정도면 전부 적은 것 같다. 어찌보면 아직 출발선에 서있는 상태도 아니기 때문에 더 열심히 해야 된다고 생각한다.

profile
새로운 기술을 배우는 것을 좋아하는 엔지니어입니다!

0개의 댓글