Python(Colab) 파이토치(Pytorch) + 딥러닝 + CNN기초(이미지)
2023. 6. 21. 22:28ㆍ파이썬/머신러닝 및 딥러닝
✔️ CNN(Convolutional Neural Networks)
- 합성곱 뉴런 신경망
- 형태: 전통적인 뉴럴 네트워크 + 컨볼루셔널 레이어
- 컨볼루셔널 레이어를 통해 입력받은 이미지의 특징을 추출 -> 추출한 특징을 기반으로 기존 뉴럴 네트워크 이용
- 이미지 분류 / 예측에 많이 사용
특징)
* 특히 이미지를 분류할 때 DNN(Deep Neural Network)의 문제점을 가지고 있다.* 일반적인 DNN은 1차원 형태의 데이터를 사용* 2차원 이상의 데이터가 입력되는 경우는 flatten 시켜서 한줄로 데이터를 변환 후 넣어야함.
* 이미지의 공간적/지역적 정보가 손실된다.* 따라서 DNN의 문제점을 해결하기 위해이미지를 그대로 (Raw Input) 받음으로 공간적 / 지역적 정보를 유지하기 위해 CNN을 사용
✔️ 이미지 데이터
- 컬러 이미지는 rgb 3개의 채널 혹은 rgba의 4개의 채널로 이루어진 텐서
- 컴퓨터는 이미지를 숫자로 인식하여 연산을 한다.
CNN을 이해하기 위한 용어
Convolutional Layer
Pooling
stride
padding
Dropout Layer
Fc Layer
✔️ 컨볼루셔널 연산
- input 데이터를 Filter 크기만큼 연산후 Result(벡터)에 그 값들의 합 1개로 저장
- 컨볼루션 연산시 출력 텐서 크기는 점차 작아짐
대안)
출력 크기를 동일하게 하기 위해서 패딩을 사용한다
컬러이미지 연산
컬러이미지 연산에는 convolutional 2D를 사용한다
Pooling(풀링)
✔️ Pooling(풀링)
중요한 특징을 추출하고 차원을 축소하기 위해 사용
stride(스트라이드)사용 - 필터에 적용하는 간격의 설정을 의미
밑에 그림은 (2,2)로 설정되어있어서 필터가 한번 이동시 가로2 세로2가 이동된다.
종류)
MaxPooling (MaxPool2D)
AvgPooling (AvgPool2D)
✔️ 드롭아웃 레이어(Dropout Layer)
- 과적합(overfitting)을 막기위해 사용하는 레이어
- 학습 중일 때 랜덤한 값을 발생시켜, 학습을 방해함으로 학습용 데이터쪽으로 결과가 치우치지 않게 한다.
✔️ Fc Layer(Fully Connected Layer)
- 이미지를 분류 or 설명하기 위해 예측하는 레이어
종류)
Flatten Layer: 데이터 타입을 Fully Connection 네트워크 형태로 변경 (입력 데이터의 shape 변경만 수행)
Softmax Layer: 분류에서만 수행
CNN은 Convolution와 pooling을 통해 세분화해서 특징을 찾고, 그 특징을 fc 레이어를 통해 분류한다 !
728x90
'파이썬 > 머신러닝 및 딥러닝' 카테고리의 다른 글
Python(Colab) 파이토치(Pytorch) + 딥러닝 + CNN + 손글씨 데이터 (0) | 2023.06.21 |
---|---|
Python(Colab) 파이토치(Pytorch) + 딥러닝 + CNN 사용해보기 (0) | 2023.06.21 |
Python(Colab) 파이토치(Pytorch) + 활성화 함수 (1) | 2023.06.21 |
Python(Colab) 파이토치(Pytorch) + 딥러닝 해보기 (0) | 2023.06.20 |
Python(Colab) 파이토치(Pytorch) + 데이터 로더 (2) | 2023.06.20 |