본문 바로가기

개발/딥러닝

(19)
[논문 리뷰] Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN) 이 전의 논문 리뷰에서는 모델의 구조에 집중을 했었습니다. 이 논문에서 딥러닝스러운 부분은 사실 cnn이 전부고 이미지를 전처리하는 데에 신경을 많이 쓰고 있습니다. 따라서 이 리뷰도 전처리에 신경을 쓰도록 하겠습니다. 무엇을 하는 녀석인가각 객체들이 어디에 있는지 찾아주는 인공지능입니다.개요객체를 탐지하는데 크게 3 단계를 거칩니다.각 이미지를 적절한 영역(2000개)로 나눕니다.각 영역을 cnn에 넣습니다.그렇게 나온 정보를 이용해서 어떤 객체인지 분류합니다. 적절한 영역을 어떻게 나누는가?이 논문에서는 selective search 기법을 사용해서 구역을 나누었습니다. 헷갈릴 수 있으니 용어부터 잡고 진행합니다. resion proposal : 객체가 있을 만한 곳을 찾는 것selective sea..
[논문 구현] U-Net: Convolutional Networks for BiomedicalImage Segmentation U-net은 정말 다양한 곳에 쓰입니다. 저는 U-net을 노이즈 제거 작업에 사용할 것입니다. 먼저 GPU를 설정해 줍니다. 전에는 MNIST 데이터를 사용했습니다. 이번에는 fashion_mnist 데이터를 사용하겠습니다.  노이즈 제거 작업을 한다고 했었죠. 이미지에 노이즈를 입혀줍니다. 노이즈가 잘 적용되었는지 확인해 봅시다.  원본 이미지랑 비교했을 때 조금 더 얼룩이 들어가 있는 것을 확인할 수 있습니다. 이제 모델 구현으로 가봅시다. 이미지의 크기가 작으니 깊이를 2단계만 내려가도록 하겠습니다.먼저 CNN을 2번 적용하고 MaxPool을 적용합니다. 똑같이 CNN 2번에 MaxPool을 적용합니다. 다른 구현에는 함수를 사용해 중복을 줄였지만 깊이가 깊지 않으니 굳이 함수로 빼지는 않겠습니다..
[논문 리뷰] U-Net: Convolutional Networks for BiomedicalImage Segmentation UNet 에 대한 논문을 리뷰해 보겠습니다. 이것 역시 깊이 들어가기보다는무엇을 하는 녀석인가구조가 어떻게 되어 있는가어떻게 로스를 계산하는가에 중점을 두도록 하겠습니다.무엇을 하는 녀석인가이 논문에서는 세포들이 있는 이미지가 입력으로 주어지면 서로 다른 세포들을 분류해 주는 인공지능입니다. 하지만 다양한 곳에 쓰일 수 있습니다.구조가 어떻게 되어 있는가CNN을 이용해서 데이터를 수축시키고 여기에 up-conv를 적용해 다시 팽창시킵니다. 그림을 보면 U자 형태를 띄고 있습니다. 첫 번째572*572*3이미지가 주어집니다. *3은 색을 나타냅니다. 3*3 CNN을 2번 적용하되 padding을 주지 않아 크기가 2씩 줄어듭니다. 채널은 64개를 사용합니다. 이후 max pool을 해서 284*284*64..
[논문 구현] ImageNet Classification with Deep Convolutional Neural Networks 드디어 모든 빌드업이 끝났습니다. 논문 구현을 위해 컴퓨터를 사고(https://codestudycafe.tistory.com/29) GPU를 통해 학습하는 방법도 배웠습니다(https://codestudycafe.tistory.com/34). 이제 이 논문을 구현해 봅시다. 이 페이지의 목적은 해당 논문에 있는 모델을 구현하는 것입니다. 실제로 성능이 잘 나오면 좋겠지만 그것이 목적은 아니라는 거죠. 그러니 이전에 사용한 MNIST(https://codestudycafe.tistory.com/31)데이터를 그대로 사용해 봅시다. 전처리는 이 전 페이지를 그대로 따라 했다고 하고 바로 모델 구현으로 가봅시다. 하나의 이미지에서 두개의 CNN이 나옵니다. 그리고 각각의 CNN에 대해 MaxPool과 loc..
1 - MNIST 모델 학습 자, 이제 본격적으로 모델을 학습해 봅시다. Conv2D로 CNN을 돌려서 그림의 모양을 학습해 주고 Flatter으로 쭉 펴 준 다음 Dense로 10개의 출력을 가진 모델을 만들 것입니다.  ? 난리났습니다. 우선 에러 코드를 봅시다. 여기 보면 이런 내용이 있습니다.OMP: Error #15: Initializing libiomp5, but found libiomp5md.dll already initialized. 이는 라이브러리 끼리 충돌을 일으켜서 생기는 문제입니다. 커널을 재시작한 다음 import osos.environ['KMP_DUPLICATE_LIB_OK']='True' 를 제일 먼저 실행해 줍니다.  이렇게 쭉 진행하면 에러가 나지 않습니다. 이어서 진행해 봅시다. model이 어떤 식..
1 - MNIST 데이터 가공 MNIST 정도면 다른 곳에도 많겠지만 MNIST를 학습하는 과정을 적어보겠습니다.MNIST는 손으로 쓴 숫자를 입력하면 어떤 숫자인지 맞춰주는 것입니다.vscode를 이용해서 진행할 것입니다. 데이터 가져오기tensorflow의 keras안에 mnist 데이터가 있습니다. 해당 데이터를 가져옵니다. 이 데이터는 정말 이쁘게 생겼습니다. train데이터와 test데이터가 이미 나누어져 있거든요. 데이터를 받고 크기를 출력해서 잘 받아왔는지 확인해 봅시다. 28*28 크기 이미지 60000개를 받아옵니다. matplotlib.pyplot를 이용해 이미지를 출력할 수 있습니다. pip install matplotlib로 설치하고 다음 코드를 입력합니다.plt.figure로 캔버스를 준비하고(근데 아마 이거 ..
인공지능 - 환경 세팅 오류 해결 이전 글(https://codestudycafe.tistory.com/29)을 그대로 따라왔다는 전제로 쓰겠습니다. vscode에서 터미널을 열고 conda를 실행할 것입니다.  열자마자 오류가 날 줄은 몰랐네요. 이것은 powershell의 권한때문에 발생합니다. powershell을 관리자 권한으로 열어줍니다. get-ExecutionPolicy을 눌러서 권한 상태를 확인할 수 있습니다.  Set-ExecutionPolicy RemoteSigned로 특정 스크립트는 실행할 수 있도록 권한을 변경해 줍니다. 뭔가 물어보면 y를 누릅니다. 이제 vscode 터미널을 모두 닫고 다시 실행하면 잘 나오는 것을 볼 수 있습니다. 이제 conda에서 세팅한 환경을 이용해서 한번 실행해 봅시다. conda가 있는..
인공지능 - 환경 세팅 인공지능을 학습할 수 있는 환경을 만들어 봅시다.준비인공지능에는 성능 좋은 GPU가 필요합니다. 물론 google colab같이 GPU를 제공해 주는 곳도 있지만 낭만이 없잖아요.  그러니 이건 합리적인 소비입니다. 절대 컴퓨터가 필요해서 인공지능을 하는 것이 아니라는 거죠. 좋은 GPU가 있는 컴퓨터를 삽니다. vscode(https://codestudycafe.tistory.com/16)와 파이썬(https://codestudycafe.tistory.com/26)을 설치합니다.이제 vscode에서 GPU를 사용해 봅시다. 모든 환경은 윈도우 기준으로 작성합니다. 드라이버 설치장치 관리자에서 GPU가 어떤 종류인지 확인합니다.  NVIDIA 공식 드라이버(https://www.nvidia.co.kr/D..
[논문 리뷰] ImageNet Classification with Deep Convolutional Neural Networks alexNet에 대한 논문을 리뷰해 보겠습니다. 깊이 들어가기보다는 무엇을 하는 녀석인가데이터는 어떻게 모았는가구조가 어떻게 되어 있는가에 초점을 맞춰 보겠습니다. 어느 정도의 지식이 있으면 직접 구현할 수 있도록 하는 것이 목표입니다. 무엇을 하는 녀석인가어떤 물체가 있는 이미지를 주면 이 물체가 무엇인지 맞추는 녀석입니다. 227 * 227 크기의 이미지를 입력으로 받고 1000개의 분류 중 어떤 것이 정답인지 맞춥니다. 테스트 데이터에서 top-1 error(모델이 내놓은 답 상위 1개 중 정답이 없을 확률)가 37.5%, top-5 error가 17%로 당시 SOTA(가장 좋은 모델)를 이겼습니다.데이터는 어떻게 모았는가ImageNet에는 1500만 개의 고해상도 이미지들이 있습니다. 다양한 크기..