본문 바로가기
Daily Coding

[패스트캠퍼스 수강 후기] {컴퓨터비전인강} 100% 환급 챌린지 - 38일차

by 브래드(Brad) 2020. 11. 25.

OpenCV를 활용한 컴퓨터비전과 딥러닝

안녕하세요.

어제는 아는 형님과 코딩에 대한 이야기를 나눴는데요

확실히 이런 생소한 분야에 대한 공부는 잘하는 분들과 이야기를 나누면서 인사이트를 얻는 게 정말 중요하다고 느낀 순간이었습니다.

강의만 듣고 제대로 실습도 안 해보면서 진도를 빼고 있는 자신이 너무 부끄럽게 느껴졌습니다.

매번 강의시간만 잘 따라서 실습해봐도 실력이 많이 늘었을 텐데

너무 안일한 건 아니었는지 반성하는 시간이었습니다. 

 

코딩 공부를 시작하게 된 배경을 다시 언급하자면,

인공지능이 앞으로 세상을 지배할 거라는데, 기계와 소통을 위해 코딩은 점점 필수 능력이 되어가는 것 같습니다.

파이썬으로 공부하면 쉽다는데, 왜 이렇게 어렵게 느껴지는 걸까요???

혼자 너튜브로 공부하려다 보니 두서없이 따라 하기만 하고, 정작 제가 하고 싶은 건 만들지 못하게 되는 것 같습니다.

아마도 제가 더 노력하지 않아서겠지요.

저는 뭔가를 할 수밖에 없는 환경에 놓여야만 움직이는 DNA를 가지고 있는 것 같아요

그래서 투자를 하고 본전심리가 장치가 되어 어쩔 수 없이 실행하게 만드는 유료수강제도를 이용하게 되는 것 같습니다.

 

요새 같은 코로나 시대에는 학원에 가기도 그렇고, 사람마다 이해도나 기본 실력이 다르니 수준이나 진도를 제가 정할 수 있는 온라인 교육이 좋은 것 같습니다.

FastCampus의 교육들은 커리큘럼들도 잘 짜여 있고, 한번 결제하면 평생 소장이 가능하다고 해서 종종 이용하고 있는데요.

이번에는 미션 수행하면 수강료 환급해주는 과정이 생겨서 도전해보기로 했습니다.

 

이번에 도전한 과정은 "OpenCV 를 활용한 컴퓨터 비전과 딥러닝"인데요.

마침 제가 요새 회사에서 추진하고 있는 프로젝트가 "지능형 CCTV 구축"과 관련된 것이어서,

관련 기술도 배울 겸 신청하게 되었어요

 

수강신청 후 환급 미션이 시작되기 전까지는 약간 시간이 있어서 Chapter 1 은 쉬엄쉬엄 들어봤는데요.

FastCampus 강의들의 장점은 영상 1개당 강의시간이 길어도 25분을 넘기지 않고 대체로 10분 안팎이어서

수강에 큰 부담이 없다는 것입니다.

문제는 본인이 꾸준히 하느냐에 대한 것인데 평생 소장이니 의지가 다시 타오를 때 또 보면 되죠 뭐...ㅋ

 

오늘은 어제에 이어 머신러닝을 OpenCV에서 구현하는 방법에 대해 배워봤습니다.

머신러닝의 클래스에 대해 배우고, 코드로 구현하는 순서에 대해 알게 되었습니다.

일단 머신러닝 객체를 생성하고 학습을 시킨 다음 예측을 해보는 순서였는데요

문제는 학습시킬만한 데이터가 마땅히 생각이 나질 않는다는 거였습니다.

어쨌든 이론은 아래와 같습니다 ㅎㅎ

 

 

머신러닝 알고리즘 중 가장 기본이 되는 k-NN에 대해 배워봤습니다.

k-NN은 k개의 근접점을 기준으로 분류를 한다는 이론이며, k개수에 따라 오버 피팅이 될 수도, 일반화가 될 수도, 언더 피팅이 될 수도 있었습니다.

학습할만한 예제가 없어서 데이터는 랜덤으로 생성해서 진행했고요.

어쨌든 이론을 이해하기에는 부족함이 없는 방법이었던 것 같습니다.

 

관련 함수는

먼저 객체 생성:

cv2.ml.KNearest_creat() -> retval

KNN 알고리즘으로 입력 데이터의 클래스를 예측하는 함수는

cv2.ml_KNearest.findNearest(samples, k, results=None, neighborResponses=None, dist=None, flags=None) -> retval, results, neighborResponses, dist

samples는 입력 벡터가 행단 위로 저장된 입력 샘플 행렬이며 numpy.ndarray.shape=(N, d), dtype=numpy.float32

k는 최근접 이웃 개수

results는 각 입력 샘플에 대한 예측(분류, 회귀) 결과를 저장한 행렬로 numpy.ndarray.shape=(N,1), dtype=numpy, float32

neighborResponses는 예측에 사용된 k개의 최근접 이웃 클래스 정보 행렬로 numpy.ndarray.shape=(N, k), dtype=numpy.float32

dist는 입력 벡터와 예측에 사용된 k개의 최근접 이웃과의 거리를 저장한 행렬로 numpy.ndarray.shape=(N, k), dtype=numpy.float32

retval 은 입력 벡터가 하나인 경우에 대한 응답입니다.

 

이제 미션도 얼마 남지 않았지만 환급보다 중요한 게 뭘 남기느냐 인 것 같습니다.

틈틈이 지난 예제들 복기하면서 진도를 다시 따라가 봐야겠어요.

 

그럼 모두 좋은 하루 보내세요~~~^^

 

강의 링크: https://bit.ly/2DBM8d4

 

OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online. | 패스트캠퍼스

황선규 박사에게 배우는 컴퓨터 비전과 딥러닝. 고급 알고리즘의 원리를 제대로 이해하고 수십 가지의 실습을 통해 내 것으로 만드세요.

www.fastcampus.co.kr

 

댓글