본문 바로가기

전체 글175

CNN(Convolutional Neural Network) 합성곱 신경망 일반적인 DNN (Deep Neural Network)은 기본적으로 1차원 형태의 데이터를 사용한다. 따라서 이미지가 입력될 경우, 이것을 flatten 시켜서 한줄의 데이터로 만들게 된다. 이 과정에서 이미지의 공간적 정보가 손실되어, 특징 추출과 학습이 비효율적이고 정확도의 한계가 발생한다는 문제가 있었다. 그래서 CNN(Convolutional Neural Network)을 통해 이미지를 raw input으로 받음으로써, 공간적/지역적 정보를 그대로 유지한채 특성들의 계층을 빌드업하게 된다. Convolutional Layer 기본적으로 Convolutional Layer에는 input 값인 이미지와 필터(=합성곱 커널 : convolution kernel)가 있다. 위의 그림처럼, 필터(=커널:k.. 2022. 8. 23.
RNN(Recurrent Neural Network) 순환 신경망 RNN(Recurrent Neural Network)은 입력과 출력을 시퀀스 단위로 처리하는 반복적인 데이터, 순차적인 데이터를 학습하는데 특화된 시퀀스(Sequence) 모델입니다. 번역기를 생각해보면 입력은 번역하고자 하는 단어의 시퀀스인 문장이다. 출력에 해당되는 번역된 문장 또한 단어의 시퀀스이다. 이와 같이 시퀀스들을 처리하기 위해 고안된 모델들을 시퀀스 모델이라고 한다. 그 중 RNN은 가장 기본적인 인공 신경망 시퀀스 모델이다. RNN 구조 기존의 인공 신경망은 이와 같이 각 층의 뉴런이 연결되어 있는 구조이다. 이에 추가적으로 RNN은 아래와 같은 방식을 사용한다. 이렇게 과거 자신의 정보(가중치)를 기억하고 이를 학습에 반영한다. 위의 layer를 한개의 box로 취급하여 단순화 시키면 .. 2022. 8. 19.
멀티 프로세스(Multi-Process) 사용하기 with Python 멀티 프로세스(Multi-Process)를 사용하고자 한다. 멀티 프로세스 사용하기 1. 멀티 프로세스 아래의 함수를 4번 실행한다고 가정한다. 이 함수는 1초간 잠들었다가 깨어나는 동작을 수행한다. def do_something(): print('1초간 잠을 잡니다...') time.sleep(1) print('잠에서 깨었습니다...') 이 함수를 4번 실행해보자. 이 때, 실행 완료 시간은 대략 4초가 걸릴 것이다. import time def do_something(): print('1초간 잠을 잡니다...') time.sleep(1) print('잠에서 깨었습니다...') if __name__ == '__main__': start = time.perf_counter() for _ in range(.. 2022. 7. 7.
[Python] 히스토그램 변환 with OpenCV 히스토그램은 도수 분포표를 그래프로 나타낸 것이다. 다시 말해, 무엇이 몇개 있는지 개수를 세어 놓은 것을 그래프로 나타낸 것을 의미한다. 미지의 픽셀값을 히스토그램으로 표시하는 것은 이미지를 분석하는 데 도움된다. 예를 들어 전체 이미지에서 픽셀 값이 1인 픽셀이 몇 개이고, 2인 픽셀이 몇 개이고, 255인 픽셀이 몇 개인지까지 세는 것이다. 이렇게 함으로써 픽셀들의 색상이나 명암의 분포를 파악할 수 있다. 흑백 사진과 색상 이미지의 히스토 그램을 비교해보자. OpenCV에서는 cv2.calcHist()라는 함수를 통해 히스토그램을 구현할 수 있다. cv2.calHist(img, channel, mask, histSize, ranges) - img: 이미지 영상, [img]처럼 리스트로 감싸서 전달 .. 2022. 6. 23.