일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Kubernetes
- suricata
- rnn
- LINUX MASTER
- git
- colab
- Github
- VSCode
- Resnet
- 인터넷의이해
- Spring
- Powershell
- API
- Python
- Rocky Linux
- GoogleDrive
- 고등학생 대상
- 국가과제
- Database
- 크롤링 개발
- C언어
- OSS
- ICT멘토링
- KAKAO
- cloud
- Machine Learning
- ChatGPT
- 코딩도장
- Docker
- Spring Boot
- Today
- Total
코딩두의 포트폴리오
OSS - 15_ 이미지 처리 능력이 탁월한 CNN 본문
배경
1960년대 데이비드 휴벨, 토크스텐 비젤
시각 담당 신경세포 연구,
고양이에게 선 같은 간단한 이미지 보여주고 뇌 반응 검사
비슷한 이미지들은 고양이 뇌의 특정 부위를 지속적으로 자극함을 발견
이미지의 각 부분에 대해 뇌의 서로 다른 부분이 반응하여 전체 이미지를 인식한다는 결론
CNN (합성곱 신경망)
CNN(Convolutional Neural Network)
주로 이미지 인식 및 처리에 사용되는 딥러닝 알고리즘
병렬 처리가 쉬워 대규모 서비스에 적용 가능
최근 자연어 처리와 추천 시스템에도 응용
CNN 기초
사람이 보는 이미지 vs 컴퓨터가 보는 이미지
Fashion MNIST
"신발" 이미지에서 신발이 조금 옆으로 치우쳐도 예측률이 급격히 떨어짐
이미지의 특징을 추출하는 가중치가 가운데만 집중되도록 학습했기 때문
중심이 이동된 이미지에 대한 일반 인공 신경망의 성능 저하
- 이미지 배치의 모든 경우를 학습데이터로 추가 구축하여 따로따로 학습하는 것은 비효율적인 일
- 하나를 배우면 다른 것은 자연스럽게 유추해야 똑똑한 인공지능
계층적으로 이미지 특징 추출하기
컨볼루션 (Convolution)
- 계층적으로 인식할 수 있도록 단계마다 이미지의 특징을 추출하는 것이 목적
- 다양한 필터(커널)를 적용하여 윤곽선, 질감, 털 등 각종 특징 추출
- 필터 적용 시 이미지 왼쪽 위에서 오른쪽 밑까지 이동하면서 곱하고 더하는 작업
- 필터 하나가 작은 신경망이 됨
CNN 모델
CNN의 주요 구성 요소
Convolutional Layer (합성곱 층)
- 이미지에서 특징을 추출하는 역할
- 필터(커널): 작은 매트릭스로, 이미지의 특정 패턴을 인식
- 출력: 특징 맵(Feature Map)
Pooling Layer (풀링 층)
- 공간적 크기를 줄여 계산량을 줄이고, 중요한 특징을 강조
- 최대 풀링(Max Pooling), 평균 풀링(Average Pooling)
- 출력: 축소된 특징 맵
Fully Connected Layer (완전 연결 층, 일반 신경망)
- 전통적인 신경망과 유사, 모든 노드가 연결
- 역할: 이미지를 분류하거나 인식 결과를 도출
컨볼루션 커널의 이동
풀링 계층
컨볼루션을 거쳐 만들어진 특징 맵을 입력으로 받아 크기를 줄여 중요한 특징을 선택
- Pooling 레이어를 통과하면 행렬의 크기가 감소함
- Pooling 레이어를 통과해도 채널의 수는 변경 없음
평균 풀링 또는 최대값 풀링(Max pooling) 사용
Fully Connected Layer (FC layer)
전체 입력 볼륨에 연결되는 뉴런을 포함하며,
일반 신경망과 마찬가지로
CNN은 Convolution과 Pooling을 반복적으로 사용하면서 불변하는 특징을 찾고, 그 특징을 입력데이터로 Fully-connected 신경망에 보내 Classification을 수행
- ex) 얼굴에서 단계별로 특징 추출
- 선 같은 저수준에서는 눈, 코, 입을 거쳐 얼굴 같은 고수준 추출
기존 신경망 대비 CNN의 장점
- 사물이 조금만 치우쳐도 인식하지 못하던 신경망의 문제 해결 - 이미지 전체에 필터 적용해 특징 추출
- 이미지 크기 만큼 가중치 계산해야 하는 문제 해결 - 필터(커널)만 학습하면 됨
CNN 모델 구현하기
컨볼루션 -> 풀링 -> 컨볼류션 -> 드롭아웃 -> 풀링 -> 신경망 -> 드롭아웃 -> 신경망
드롭아웃(과적합): 오버피팅을 방지하기 위해 신경망에 특정 노드들을 학습 시 빼는 작업
실습예제 05-이미지_처리능력이_탁월한_CNN/cnn.ipynb
Fashion MNIST 데이터 분류하는 CNN 모델
커널 크기: 5 x 5 / 컨볼루션 계층: 2개
하이퍼 파라미터
ResNet으로 컬러 데이터셋에 적용하기
ResNet
이미지넷(Imagenet) 대회에서 2015년에 우승한 모델
– 이미지 1000만장을 학습하고, 테스트 이미지 15만장으로 인식률을 평가하는 대회
신경망이 깊게 쌓이면 학습 성능이 나빠지는 문제 해결
CIFAR-10 데이터셋
32 x 32 크기, 6만개, 컬러(RGB) 이미지
– 1개 이미지 크기 : 32 x 32 x 3 = 3,072
자동차, 새, 고양이, 사슴 등 10가지 분류
ConvNetJS Demo: training on CIFAR-10
https://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html
실습예제 05--이미지_처리능력이_탁월한_CNN/resnet.ipynb
torchvison에서 데이터셋 이름을 CIFAR10으로 바꿈
CNN을 깊게 쌓는 방법
- 깊은 신경망은 문제를 작은 단위로 분해하여 학습 효율을 높이는 것
- 하지만 여러 단계의 신경망을 거치면 최초 입력 이미지에 대한 정보가 소실되는 문제 발생
- ResNet에서는 신경망을 Residual 블록으로 나눔 – Residual 블록의 입력 x를 출력에 더함
'Open Source Software' 카테고리의 다른 글
순차데이터 처리하는 RNN (1) | 2024.05.27 |
---|---|
OSS - 14_ ChatGPT & Transformers 라이브러리 활용 (0) | 2024.05.24 |
OSS - 13_ 패션 아이템을 구분하는 DNN (0) | 2024.05.16 |
OSS - 12_ 파이토치로 구현하는 ANN (0) | 2024.05.11 |
OSS - 11_ AI-NLP 개요 (0) | 2024.05.11 |