MI Lab/Kinect - 2021.07~2021.10

[Kinect - Lab Meeting] 신경망과 CNN - 2021.08.10.화

코딩뽀시래기 2021. 8. 12. 16:10
728x90

저번주 랩미팅에서 퍼셉트론과 신경망에 대한 이해가 모호했던 것 같아 다시 공부했다. 그 내용을 바탕으로 CNN과 CPM을 다시 이해해보았다.

 

1

이번주 첫 슬라이드도 저번주랑 똑같다. 슬라이드 제목 밑에 소제목처럼 그 주차에 발표할 핵심 내용을 적어둘까 고민이다.(매번 너무 똑같은 거 같아서...)

2

저번주에 교수님이 피드백 해주신 대로 논문을 발행한 곳도 함께 적어주었다.

3

이번주 랩미팅에서 발표한 내용은 퍼셉트론, 신경망에 대한 개념적 공부와 활성화 함수에 대한 기초적인 개념, 그리고 CNN의 전체적인 구조에 대한 내용이다. 이런 기초 지식을 토대로 CPM에 대한 글을 다시 읽어보고 공부한 내용도 함께 발표하였다.

4

저번주 랩미팅에서 교수님께서 퍼셉트론과 신경망을 같은 것으로 보는 게 맞을 것 같다고 하셨는데, 책이나 여러 글들을 읽으면 퍼셉트론과 신경망의 차이를 정리해둔 것이 많았다. 그래서 활성화 함수로 계단 함수를 사용한 것이 퍼셉트론, 비선형 함수를 사용한 것이 신경망이라고 이해를 했다. 교수님께서 설명해주시기를, 구분하려고 하면 단계적으로 계단함수를 이용해서 퍼셉트론이 가장 먼저 등장했고, 시그모이드 함수를 이용한 신경망, 렐루 함수를 이용한 딥 신경망 순으로 나타낼 수는 있다고 하셨다. 단계적인 발전이 있었던 것은 맞지만 개념적으로 딱 구분하기에는 무리가 있다는 말인 것 같다.

5

활성화 함수에 대해서도 궁금해서 겉핥기식으로 공부를 해보았다. 일단 모든 활성화 함수를 다 공부할 수는 없어서 계단 함수, 시그모이드 함수, ReLU 함수만 가져와봤다. 계단 함수는 특정 임계값(여기서는 0)을 넘기면 활성화되는(1이 되는) 함수이고, 시그모이드 함수는 계단 함수와 비슷하지만 그 경계가 완만한 함수, ReLU 함수는 입력이 0을 넘으면 그 입력을 그대로 출력 하고 0 이하면 0을 출력하는 함수이다. 이러한 활성화 함수를 사용해 입력 데이터에 가중합을 주게 되는데, 활성화 함수로 선형 함수를 사용하면 아무리 여러번 쌓아도 한 번 사용하는 것과 같아서 신경망 층을 깊게 쌓는 의미가 없어진다. 때문에 활성화 함수로는 비선형 함수를 사용한다. 이 부분에서 교수님이 질문을 하셨다. 선형 함수를 사용하면 신경망 층을 깊게 쌓는 의미가 없다고 했는데, 왜 선형 함수는 여러 번 쌓아도 하나를 사용하는 것과 똑같은지, 그 문제를 비선형 함수가 해결할 수 있는 이유는 무엇인지에 대한 질문이었다. 나는 대답하지 못했고, 다음 랩미팅 때 그 질문에 대한 답을 찾아오기로 했다.

6

다음은 CNN에 대한 내용이다. CNN도 다시 공부를 하면서 컨볼루션 층과 풀링 층에 대해 더 정확히 이해를 하게 되었다. 컨볼루션 층에서는 커널(필터 또는 마스크)을 이용해 이미지 데이터에 합성곱을 진행하면 커널의 수만큼 채널이 만들어지게 된다. 해당 채널에 풀링 계층을 이용해 특징을 다시 추출하면서 동시에 이미지의 크기를 줄인다. 이 과정이 여러 번 반복되어 출력 이미지를 추출하는 것이 CNN이라고 할 수 있다.(핵심적인 부분만 설명한 것이지만) 그리고 여기에서 교수님의 질문이 또 있었다. CNN에서 풀링을 하는 이유는 무엇인지에 대한 질문이었다. 나는 이미지의 크기를 줄이기 위해서라고 답했고, 교수님은 그 이유 외에 또 다른 이유도 있다고 하셨다. 슬라이드의 왼쪽 이미지에서 하나, 오른쪽 이미지 하나, 총 2개의 이유를 찾을 수 있다고 하셨는데 그 자리에서는 도무지 생각이 나질 않아 다음 랩미팅까지 답을 찾아오기로 하였다.

7

CPM에 대한 설명을 다시 한 번 보았는데, CNN에 대한 개념이 전혀 잡혀있지 않았을 때보다는 더 잘 이해가 되는 듯 했다. 탐지 영역이 넓어질수록 정확도가 높아지는 이유도 어느 정도 이해할 수 있었다. 머리, 목, 어깨 등 움직임이 작아 비교적 고정적인 부분은 검출이 잘 되지만, 팔, 다리 등 움직임이 많고 변화가 큰 부분은 검출이 어렵다. 그러나 신체 부위 간의 일관된 기하학적 구조가 있기 때문에 고정적인 부분이 변동적인 부분의 검출을 위한 정보를 제공할 수 있게 된다. 따라서 검출 영역이 넓어지면 다른 신체 부위의 정보를 이용할 수 있게 되어 스테이지가 진행될수록 정확도가 높아지는 것이다.

여기서도 의문점이 있다. 각 신체 부위별로 따로 검출을 하는 것인지 한번에 검출을 하는 것인지에 대한 것이다. 저 이미지만 보면 각 신체 부위별로 따로 검출을 하는 것 같은데, 변동적인 부분이 고정적인 부분의 정보를 얻으려면 팔의 위치를 검출하는 이미지에 어깨의 위치에 대한 정보가 이미 있어야 활용을 할 수 있게 되는 것이다. 머리와 목은 고정적인 부분이니까 다른 부위보다 먼저 정확하게 확정을 지은 뒤에 다른 신체 부위 탐색에 정보를 제공해주어야지, 라는 프로그램이 설정이 되어있는 것인지에 대해 명확하게 이해를 해야 할 것 같다. 사실 영어 논문을 읽고 설명해둔 글을 보고 공부한 것이라서 그 사람의 해석이 틀렸거나 빠진 내용이 있을 수도 있다. 그래서 다음 랩미팅까지 그 원문을 읽고 공부를 하기로 했다.

 

<느낀 점>

확실히 기초 지식이 없을 때와 어느 정도 기초를 공부했을 때는 이해력에 차이가 나는 것 같다. 점점 공부하는 방법에 대해 터득하고 있는 것 같아서 재미있다. 다음주와 다다음주는 기숙사 퇴실 때문에 본가에 가있는다. 2주 동안 위에서 등장한 질문에 대해 답을 찾고 CPM 영어 논문을 읽으며 공부를 할 것이다. 별다른 일이 없다면 다음 랩미팅은 8월 31일 화요일이 될 것이다. 아마 개강을 하고나면 강의 시간과 교수님 일정에 맞춰서 시간이 바뀔 것 같다.

 

▼ 논문 관련 게시글

 

[Kinect - 논문 공부] Kinect를 이용한 손 제스처 인식 관련 연구 논문

Kinect를 이용하기 전에 관련 연구 논문을 읽으며 공부를 해보고 있다. 지금 읽고 있는 논문은 손 제스처 인식 관련 연구 논문이다. 장창용, 김태용. (2020). 손 제스처 인식을 위한 특징 강화 

coding-ga-ding.tistory.com

728x90