본문 바로가기
Daily Coding

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

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

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

안녕하세요

어제는 싱어게인을 보다나 늦게 잤더니 하루 종일 너무 피곤하네요

날씨도 꿀꿀하고 해서 집에서 잠만 자고 있습니다.

시간이 있을 때 뭔가 더 발전적인 것들을 하기로 마음먹었었는데

막상 시간이 있어도 잘 되지 않는 것 같습니다 

그래도 코딩공부는 빼먹지 않고 하고 있어요 ㅎㅎ

 

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

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

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

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

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

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

 

 

오늘은 어제 배운 이동평균 알고리즘의 문제점을 보완하기 위한 캠 시프트 알고리즘을 배워봤습니다. 이동평균 알고리즘에서는 객체를 추적하는 사각형의 크기가 일정해서 거리에 따른 보정을 못해주고 있었는데요.

캠 시프트는 최 근접점을 찾은 후 사각형을 키워가면서 내부에 타원을 그리고 타원 크기에 맞게 사각형을 다시 키워주거나 줄여주는 형태로 객체를 추적하면서 사각형 사이즈도 조정해주는 방법이었습니다.

camshift

관련 함수는

cv2.CamShift(probImage, window, criteria) -> retval, window

여기서 retval 은 추적하는 객체의 모양을 나타내는 회전된 사각형 정보를 반환합니다.

 

다음은 객체를 추적하는 루카스-카나데 옵티컬 플로우를 배워봤습니다.

옵티컬 플로우는 연속하는 두 프레임에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 말합니다. 옵티컬 플로우는 밝기는 변하지 않는다는 가정하에 두 영상의 차이 값에 대해 성분별로 미분하여 더하면 그 결과가 0이 된어야 한다는 원칙에서 나온 방법입니다. 

OpenCV 에서 제공하는 옵티컬 플로우 계산 함수는 루카스-카나데 알고리즘과 파네빅 알고리즘이 있는데 특정 픽셀에서 계산함에 따라 속도측면에서 장점이 있는 루카스 카나데 옵티컬 플로우를 배워봤습니다.

 

 

루카스 카나데 옵티컬플로우

위 사진처럼 두장의 사진에서 변화한 방향으로 화살표를 그려주었습니다.

관련 함수는

cv2.calcOpticalFlowPyrLK(prevImg, nextImg, prevPts, nextPts, status=None, err=None, winSize=None, maxLevel=None, criteria=None, flags=None, minEigThreshold=None)->nextPts, status, err

nextPts는 보통 입력에 None으로 입력하고 출력으로 받아주는 게 좋다고 합니다.

 

주말도 얼마 남지 않았는데

남은 시간이라도 알차게 보내봐야겠어요

 

그나저나 코로나 확진자가 다시 증가 추세에 있는데 걱정입니다.

모두들 안전한 하루 보내세요~ ^^

 

 

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

 

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

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

www.fastcampus.co.kr

 

댓글