커넥to 딥러닝 편, 정*영 님

딥러닝 대표 기법, 이미지 인식 모델 CNN에 대하여

이미지 인식 모델 CNN 알아보기


  • 네이버의 스마트렌즈, 구글 이미지 검색을 활용하면 한 장의 사진으로 어떤 종의 식물인지, 어떤 브랜드의 제품인지를 알 수 있죠. 여기에는 딥러닝, 그중에서도 CNN(Convolutional Neural Network)기술이 활용되고 있습니다.

    이미지에서 특징을 추출하고, 예측하는 데 쓰이는 CNN 기법. 어떤 원리로 작동될까요? 커넥to 데이터 사이언스 수강생 정*영 님이 자세히 들려드립니다.

Q. 안녕하세요. 자기소개 부탁드립니다.


안녕하세요. 데이터 사이언스 수강생 정*영입니다. 대학에서는 통계학을 전공했습니다. 전공 수업 중에 ‘통계 모델링 및 컨설팅’이라고 하는 데이터 사이언스, 머신러닝 관련 과목이 있었는데 흥미롭게 들은 기억이 있어 좀 더 공부해보고자 마음먹었습니다. 이를 계기로 커넥to을 신청, 입과하게 되었습니다.

제로베이스 네카라쿠배 데이터 사이언스

△ 커넥to 데이터 사이언스 정*영 님

Q. 반갑습니다. 오늘 어떤 개념에 대해 설명하실 예정인가요?


CNN(Convolutional Neural Network)이라고 하는 개념인데요. CNN은 이미지, 영상에 대한 분석을 실시할 때 사용되는 딥러닝의 가장 대표적인 기법이라고 할 수 있습니다. 간단히 말씀드리자면 입력된 이미지로부터 특징을 추출하고 입력 이미지가 어떤 이미지인지 분류해내는 모델입니다.

CNN 개념 설명

 Q. CNN에 대해 쉽게 예를 들어 설명해주실 수 있을까요? 


예를 들어, 이미지 분류라고 하면 어떤 동물 사진이 입력됐을 때, 개인지 고양이인지 판단해내는 것이 쉬운 예가 될 수 있습니다. 눈은 어떻고, 귀는 어떻고, 다리는 네개고… 엄청나게 많은 특징이 있을 텐데, 이를 먼저 학습시키는 것이 첫 번째 단계입니다. 학습이 끝나고 나면 분류하는 게 두 번째 단계예요. 학습된 바에 따라서 고양이일 확률은 몇 퍼센트인지 구하고, 고양이일 확률이 높다면 고양이라고 판단하는 것이죠. 이 분류 단계가 두 번째 단계입니다.

Q. 이번에는 좀 더 구체적으로 CNN의 작동 원리에 대해 들려주세요.


앞서 말씀드렸듯이 CNN의 첫 단계는 이미지의 '특징'에 대해 학습하는 단계, 두 번째는 학습한 특징을 기반으로 이미지를 '분류' 하는 단계입니다. 첫 번째 단계에서는 Convolution과 Activation Function을 가지고 이미지의 특징을 출력합니다. 이 과정에서 Pooling이라는 작업을 수행하는데, 이는 특징을 추출하는 마지막 단계로 Activation Map의 크기를 줄이거나 특정 부분을 강조하는 역할을 합니다. 이와 같은 과정을 계속해서 반복하면서 이미지의 특징을 추출하게 됩니다. 두 번째 단계에서는 먼저 첫번째 단계에서 생성된 2차원 매트릭스를 Neural Network에 적용 될 수 있도록 1열로 펼치는 Flatten작업을 수행합니다. 그다음 완전연결망을 거쳐서 Softmax함수를 활용해 이미지의 최종 분류를 하게 됩니다.

Q. 데이터 사이언스에서 배우는 다양한 개념 중, CNN을 선정한 이유는 무엇이었나요?


딥러닝은 이미지, 영상, 음성 데이터와 같은 시청각적 데이터 분석에서 많이 활용되고 있는데요. 이때 이미지, 영상 데이터를 분석하는 데 딥러닝이 가장 많이 사용됩니다. 커넥to 데이터사이언스에서 최근 딥러닝을 배우기 시작했는데, 딥러닝의 첫 주자로서 CNN을 배우게 됐죠. 이전까지는 행과 열로 이루어진 각종 table 데이터에 대해서만 다루어 보았는데 CNN을 통해서 시청각적 자료를 분석할 수 있다는 점이 매우 흥미로웠고 재밌었습니다.

Q. 커넥to 데이터 사이언스을 수강하면서 실력이 크게 상승한 부분이 있나요?


입과하기 전에는 머신러닝의 주요 개념에 대해서만 알고있었고, 딥러닝에 대한 부분은 처음 접하는 내용들이 대부분이었습니다. 머신러닝과는 어떻게 다른지 비교하면서 새로운 개념들을 배워나가고 있고, 나중에 현업에서는 어떻게 활용될 수 있을지 하루하루 즐겁게 상상해보면서 공부하고 있습니다.

그 외의 부분으로는, 파이썬, SQL 실력이 많이 성장한 것 같습니다. 그동안 학교에서는 R 프로그래밍 위주로 배웠는데, 실제 현업에서는 파이썬을 좀 더 많이 쓰는 추세라고 하더라고요. 파이썬은 기초밖에 모르는 상황이었는데 커넥to에서는 모든 공부를 파이썬으로 하다 보니 실력이 빠르게 성장할 수밖에 없었습니다. SQL도 학교에서는 기초적인 수준만 배울 수 있었다면, 커넥to 강사님께 배우는 수업은 달랐습니다. 현업에 계신 분이어서 실제 활용도를 고려한 관점으로 수업을 진행해주셨습니다. 학교에서 배웠을 때보다 실력이 많이 늘고 있다는 걸 체감하고 있습니다.

Q. 커넥to 수업시간에 진행한 프로젝트는 어떠셨나요?


학교 수업 이외에는 처음이었는데, 어떤 데이터를 사용할지에 대한 제한 사항 없이 데이터 전처리, 모델링 모두 자유롭게 시도해볼 수 있어 좋았습니다. 저희 팀의 구체적인 주제는 지하철역 혼잡도에 따른 장소 추천 서비스였는데요. 어떤 지하철역이 혼잡한가에 대한 데이터를 토대로 문화시설 등을 추천하는 것이 주된 내용이였습니다.

Q. 수업 이외에도 수강생 분들과 스터디, 개인 기술 블로그도 운영하신다고 들었어요.


네. 먼저 코딩테스트 대비를 위해 팀원들과 자료구조 알고리즘에 대해 스터디를 하고 있습니다. 이전까지는 문제를 풀고 답만 맞춰보는 단순한 방법으로 공부를 했는데, 스터디를 하다 보니까 미처 생각지 못했던 부분을 알 수 있었습니다. 직접 설명하고, 대화하다 보면 조금 더 확실하게 기억할 수 있다는 장점도 있고요.

두 번째로, 기술 블로그는 커넥to에서 학습한 내용을 다시 한 번 복습한다는 생각으로 작성하고 있습니다. 주로 쓰는 내용은 제가 자주 놓쳤던 부분이나 잘 이해하지 못했던 중요한 개념들이 대부분입니다. 잘 정리해 두면 언제든지 확인할 수 있으니, 부록처럼 블로그를 사용하고 있고, 앞으로도 더 잘 활용할 생각입니다.

Q. 앞으로 어떤 데이터 사이언티스트가 되고 싶으신가요?


회사에서 의사결정을 할 때 명확한 근거를 제시해서 도움을 줄 수 있는 데이터 사이언티스트가 되고 싶습니다. 이전에 학교에서 학교에서 데이터 분석 관련 프로젝트를 한 적이 있는데요. 데이터 전처리를 하면서 이상치에 대해서 구체적인 근거 없이, 임의로 처리를 한 적이 있었습니다. 프로젝트 후 피드백을 받을 때 적절한 근거를 말씀드리지 못했던 경험이 있어요. 이 경험으로 데이터 사이언티스트라면, 어떤 데이터를 기반으로 어떻게 진행하고, 어떤 결과가 나왔는지에 대해 명확하게 제시할 수 있어야한다는 생각이 들었습니다.

Q. 종강 이후의 목표, 그리고 마지막 각오 한마디 들려주세요.


네카라쿠배 다섯 곳 중 하나에 가면 가장 좋겠죠. 구체적으로는 금융 분야에 관심이 있어서 핀테크를 담당하는 서비스에서 커리어를 시작해보고 싶습니다. 커넥to를 시작한지는 벌써 두달이 지났는데요. 평일 10 to 10에 주말까지 수업이 있는 일정을 소화하다 보니 시간이 어떻게 흐르는지도 모르게 공부한 것 같습니다. 심적으로도 신체적으로도 힘든 것이 사실이지만 이전보다 성장한 오늘의 나를 격려하면서 하루하루 공부하고 있습니다. 같이 열심히 공부하고 있는 수강생 분들과 함께 좋은 결과를 만들었으면 좋겠습니다.


제로베이스와 함께한 이야기가 더 궁금하다면,