목록ML & DL/이것저것.. (12)
semantic segmentation을 공부하면서 최종 output feature map에 어떤 activation function을 취해야 하는지 헷갈렸던 내용을 정리합니다. final output feature map의 사이즈는 (C, H, W)이고 아래와 같은 값이 나왔다고 가정하겠습니다. 여기선 dog, cat, person, backgorund 4가지 클래스가 있고 각 채널은 특정 클래스에 대응됩니다. Sigmoid를 취하게 되면 각 element마다 0~1사이의 값으로 출력됩니다. element 단위로 계산되기 때문에 각 픽셀에 대한 독립적인 확률값을 구할 수 있습니다. 하나의 이미지에 하나의 라벨만 존재하는 image classification 문제의 경우 softmax를 취하고 가장 큰 ..
Darknet은 C, Cuda로 만들어진 프레임워크로 뉴럴넷 모델을 만들 수 있는 오픈소스이다. 우분투 환경에서 오류로 인해 OpenCV가 설치가 안 되는 문제가 계속 발생하였다. 따라서 파이썬의 OpenCV를 사용하기 위해 Darknet 모델을 Keras 모델로 변환한다. 예전에 자동차번호판 인식 프로젝트를 할 때 Darknet으로 만든 모델을 Keras 모델로 변환해본 경험이 도움이 되었다. 이전 포스팅에서 미생 주연 인물 6명을 인식하기 위한 YOLOv3 모델을 Darknet을 사용하여 만들었다. 해당 Darknet 모델을 keras 모델로 변환해보고 테스트해본다. github에서 yad2k라는 키워드로 검색하면 쉽게 찾을 수 있다. 대부분이 YOLOv2 모델을 변환하는 코드였고 해당 코드를 이용했..
1. git clone https://github.com/pjreddie/darknet.git pjreddie/darknet Convolutional Neural Networks. Contribute to pjreddie/darknet development by creating an account on GitHub. github.com 2. 다운로드 후 Makefile을 열어서 GPU, CUDNN =1로 체크해준다.(동영상 테스트할 때 opencv가 필요한데 설치 오류로인해 opecnv는 잠시 제외함) 2.1 본인 그래픽카드에 따라 ARCH 부분 수정, RTX2070 사용 중이므로 ARCH= -gencode arch=compute_75,code=[sm_75,compute_75] \ 로 수정함 https:..
https://github.com/keplr-io/quiver Keras CNN 모델의 activation을 손쉽게 시각화해주는 툴 1. 환경구축 및 설치 pip install quiver_engine 또는 pip install git+git://github.com/keplr-io/quiver.git 으로 설치 시 케라스, 텐서플로 최신버전으로 설치됨 가상환경 새로 파서 keras, tensorflow, flask, flask_cors, gevent, numpy, pillow 개별적으로 설치함 2. 실행 file_utils.py에서 scipy.misc의 imsave 함수가 제대로 실행이 안됨 그래서 imageio 설치후 imageio.imwrite로 대체함 본인 모델 및 웨이트 파일 불러오고 실행 실행 결과
참조 깃헙 https://github.com/fizyr/keras-retinanet fizyr/keras-retinanet Keras implementation of RetinaNet object detection. - fizyr/keras-retinanet github.com 1. 환경구축 1.1 conda create -n env_name python=3.6 1.2 python setup.py build_ext --inplace 1.3 requirement.txt에서 keras==2.2.4, tensorflow-gpu==1.14로 수정 1.4 pip install -r requirement.txt 1.5 pip install --user git+https://github.com/cocodataset/..
케라스를 사용해서 만든 모델은 모두 케라스 레이어로 이루어져 있다. 만약 중간에 텐서플로우의 레이어를 사용하고자 한다면 텐서플로우 레이어를 케라스의 Lambda 레이어로 감싸주어야 한다. import numpy as np import tensorflow as tf from keras import Input, Model from keras.layers import Lambda x = Input((224, 224, 3)) h, w = 299, 299 y = Lambda(lambda inputs: tf.image.resize_bilinear(inputs, tf.stack([h, w]), align_corners=True))(x) model = Model(inputs=x, output=y) model.summa..
케라스를 이용하여 ResNet50을 구현하였다.ResNet 50-layer 네트워크 구조는 다음과 같다. 그리고 레이어가 50개 이상인 버전에서는 오른쪽과 같은 bottleneck skip connection 구조를 사용한다. 케라스에서 제공하는 resnet50을 로드하여 세부적인 구조가 어떤지 파악한 뒤 똑같이 구현하는 걸 목표로 삼았다.네트워크에 존재하는 파라미터의 개수는 다음과 같다. 모델 구조를 보고 똑같이 짜보려고 했는데 conv layer에서 stride, padding과 같은 인자의 세부적인 값이 안 나와 있어서 이러한 값들을 출력 텐서의 사이즈를 보고 짐작하여 구조를 짜봤는데 나중에 구조를 출력하여 케라스의 resnet과 비교해보니 파라미터 수가 차이가 많이 났다. 레이어도 똑같이 쌓은 것..
모바일넷은 standard conv, detphwise conv, pointwise conv의 3가지 컨볼루션 레이어를 사용하며 총 28개의 레이어로 구성되어 있다 첫번째 conv layer는 일반 convolutional layer를 사용하며 모든 컨볼루션 레이어 뒤에 Batch Normalization과 ReLU가 이어진다. 그냥 논문으로 보고 구현한 네트워크랑 케라스에서 제공하는 모바일넷 모델과 비교했을 때 파라미터 수나 텐서 size 차이가 있길래 좀 더 확인해봤더니 다음과 같은 사실을 알게 되었다. 케라스에서 제공하는 모바일넷 모델은 1. 모든 convolutional layer에서 bias를 사용하지 않는다.-> Conv layer에서 use_bias 인자 값을 False로 주면 된다. 왜 b..