-
패스트캠퍼스 환급챌린지 17일차 미션 (2월 17일) : 딥러닝·인공지능 Signature 초격차 패키지 Online. 강의 후기패스트캠퍼스 챌린지 2024. 2. 17. 13:01
자, 오늘은 또 새로운 파트로 넘어왔다.
내 졸업논문과 가장 필요한 부분인 CNN을 좀 깊게 파보도록 하자공?!
Part3. 인공지능의 이해 Lv2: 숲을 보는 인공지능
CH05-01. 컴퓨터 비전의 주요 TASK
CH05-01. 컴퓨터 비전의 주요 TASK
컴퓨터 비전....많이 들어봤지만 정작 뭐가 뭔지 모르는 나에게 본격적인 학습이 시작되었다.
computer vision task란?
"Image classification, Localization, Object Detection"
이렇게 크게 나뉘어진다. 도면을 보고 외곽선을 인식해야하는 나의 과제 중 첫번째 임무는 위의 세가지가 가장 중요한 요소
인데, 이미지에서 보이는 것처럼 점차 컴퓨터 비전의 이미지를 분류하고, 로칼리제이션(이미지의 위치를 판단), 그리고
박스형태에서 이미지의 외곽을 명확하게 찾는 기술은 발전해왔다.

Single Object 에서는 calssification과 Localization으로 좀더 복잡한 연산이 가능하고,
오브젝트가 여러가지 일때에는 오브젝트 디텍션을 기본으로 로칼리제이션도 필요하고, 마지막으로
인스턴스 세그맨테이션까지 될려면 명확하게 경계를 인식해야 한다.
(특히 이 오브젝트 디텍션의 경우 자율주행의 비전센서가 가장 큰 예시가 될 것 같다.)
더 가까운 예시로는 핸드폰 보정 어플로도 찾아볼 수 있다.
기타 기술로는,
Automated colorization , Automatic Image captioning, Translate
자동적으로 채색이 가능한 기능, 이미지를 분석해서 텍스트로 캡셔닝 해주는 기술, Translate는 NLP와 더불어서 같이 쓰이는 이미지를 인식해서 번역해주는 기술도 존재한다.
이 모든게 가능한 이유는?
이미지도 결국 숫자이기 때문에 데이터 분석 모델에 해당 픽셀값을 넣어서 분류알고리즘 등 수학연산 기반에서
확인할 수 있는 것이다.
자 그러면 본격적으로 이미지를 보고 이 이미지를 인식하는 기술에 대해 한번 알아보자.
이미지는 지금 28X28 픽셀로 되어있고, 각 이미지에는 0부터 9까지 총 10개의 숫자가 적혀있다.
우선 이 이미지의 숫자가 뭐로 적혀있는지 분류를 하기 위한 모델을 만들자고 했을 때 아래 이미지처럼 개략적인
모델의 디자인을 짜볼 수 있다.

1. 입력층 : 784(28*278) : 이미지 자체를 텐서(노드)에 넣을 수 없으니 각 이미지의 RGB값을 1D화 해서 입력층에 넣는다.
(28,28) 을 (784, 1)로 만드는 것이 관건!
2. 은닉층 : 나증에 알아보자.
3. 출력층 : 0~9까지 클래시피케이션 된 노드, 그니까 총 10개의 노드로 구성된 출력층으로 만들 수 있는 것이다.
그런데, 이렇게 학습을 하면 단점이 있다.
자막에도 보이듯이, 동일한 오브젝트가 들어있음에도 불구하고 2D를 1D로 바꾸면 값 산출되는 데이터 값 자체가 달라짐.
(이미지 고유의 특성을 잃어버릴 뿐만 아니라 아예 다른 데이터로 취급)
따라서 2D 형태 이미지 고대로 보존하여 학습하는 것이 필요하며, 이걸 해결해 줄 수 있는 것이 CNN이다.
(키야!....왜 CNN을 시작해야 하는지 완벽한 도입이다...)
CH05-02. CNN의 주요 연산 - Conv
앞서 말한 것처럼 이미지 자체적으로 분류를 하는 모델, 즉 CNN에 대한 구성은 아래와 같다.
Input: 이미지가 들어가고,
Feature Detection : 특징을 찾아내고,
Classification : 이미지를 분류한다.
Convolution + maxpooling 얘네가 중요한데, 얘네들을 좀 자세히 알아보자.
CNN이란?
"Convolution Layer로 구성된 이미지 처리에 좋은 성능, 즉 이미지 처리에만 쓰는 건 아니지만 이미지 특화!."
구성은?

Conv Layer -> pooling Layer -> Conv Layer -> pooling layer ... -> fully connected layer로 구성
(사실 이게 정답은 아니고 여러층 쌓다가 풀링을 해도 되고, 교차를 해도 되고, 또 최근에는 풀링 연산이 많이 사라져가는
추세이기도 하다고 한다.)
Convolution 연산
원본 데이터가 있고, 커널(필터)와 컨볼루션 연산을 수행한다.
커널이 이미지를 쭈욱 스캔하고, 스캔하면서 피쳐맵에 대한 하나씩의 셀로 변환한다.
(특징점을 효과적으로 찾는다는 것이다.)
훑어가면서 피쳐맵을 만드는 방법은 합성곱으로..!
그래서 커널(필터)가 무엇인뎅?
원하는 값을 뽑아내서 그값을 걸러내거나 변환하는데 쓰는 역할을 한다.
필터들이 어떻게 역할을 해서 피쳐맵을 만들어 놓는가?
Low Feature - > Mid Feature -> High Featrue
첫번째는 직선값과 같은 로우레벨의 낮은 단계에서의 특징을 뽑아내고, 미들 피쳐는
단순한 선이 아니라 곡선 등 선분들을 추가하고,
하이레벨 피쳐정도 되면 이제 이미지를 인식하는 정도로 까지 올라가는 수준이 된다는 것이다.
커널은 여러개를 사용하고,(하나의 특징만 뽑아내는 것이 아니라 여러개의 특징을 뽑아내야 하기 때문에)
커널의 값은 웨이트에 해당하는 값, 즉 학습을 통해 자동적으로 업데이트 되는 값이고,
커널의 갯수!, 커널의 사이즈! 만 하이퍼파라미터(우리가 설정하는) 값이다.
Kernel 그리고 channel
커널이 입력 이미지를 훑을 때 꼭 맞춰줘야 한다.
위의 이미지에서 보이는 것처럼 입력이미지가 32*32*3, 즉 3개의 채널을 갖고있는데(RGB) 이 이미지와 합성곱 하는
커널의 경우도 채널이 3개여야 한다는 것이다.(이미지에서는 5*5*3)으로 설정함.
사이즈는 주로 홀수를 많이 쓴다. 자, 지금 총 10개의 필터를 사용한다고 했는데, 저 피쳐맵에 보면
각각 1개짜리 피쳐맵이 총 10개가 그러면 쌓이게 되겠지.(10장짜리)
자, 근데 이상한 점이 하나 있다. 32바이 32를 5바이 5로 하면 피쳐맵은 당연히 줄어들지 않겠는가?
→ 32바이 32가 유지되는 이유는 패딩, 뒤에서 얘기해보자주변의 이미지를 감싸서 이미지가 줄어드는 것을 조절해주는 것,
추가적으로 스트라이드는 몇칸을 건너뛰어서 확인할까 라는 개념인데, 이것도 다음에 실제로 해보면서 알아보자
17일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글