Computer Vision IN 한국IT비즈니스진흥협회

Introducing Computer Vision !!

Computer Vision is space to learn Computer Vision with Keras, Pytorch.

Contents

Table of Contents

NoTitleRemarks
1교육과정수업게시판
2KerasKeras Computer Vision 소스

Curriculum

Table of Curriculum

NoTypeTitleDayRemarks
1정규컴퓨터 비전과 딥러닝을 이용한 영상처리 개론Sep 2 2019불참
2정규Single Neuron TrainingSep 3 2019불참
3정규Numpy 기초 및 CNN 기초Sep 4 2019참석
4정규CNN 기초 및 Python Open CV 실습Sep 5 2019참석
5특강딥 러닝 활용 사례 (금융)Sep 6 2019참석
6특강OpenCV - 0(설치및 기초 강의)Sep 9 2019참석
7정규이진분류, 값 예측 딥 러닝 네트워크 설계Sep 10 2019참석
8정규Python 기초 및 Scipy 기초 실습Sep 16 2019참석
9정규Flicker api를 이용한 데이터 수집 및 VGG 네트워크 활용Sep 17 2019참석
10정규Data Augmentation 및 CNN 모델 훈련Sep 18 2019불참
11정규자기 부호화기 Autoencoder 활용하기Sep 19 2019참석
12정규뉴럴 네트워크 훈련 기법Sep 20 2019참석
13정규CNN REVIEWSep 23 2019참석
14특강OPENCV-1Sep 24 2019불참
15정규Kaggle Intel Image clasificationSep 25 2019불참
16특강OPENCV-2Sep 26 2019참석
17정규영상 분할(segmentation) 2Sep 27 2019참석
18정규영상 분할segmentation 고급 1Sep 30 2019참석
19정규영상 분할segmentation 고급 2Oct 1 2019불참
20정규영상 분할 segmentation ReviewOct 2 2019참석
21정규Kaggle을 이용한 영상 분할 Kernel 분석1Oct 7 2019참석
22특강OpenCV 3Oct 8 2019불참
23정규GAN 기초 1Oct 10 2019불참
24정규GAN 기초 2Oct 11 2019참석
25정규Style TransferOct 14 2019참석
26정규OpenCV 4Oct 15 2019불참
26정규DCGANOct 16 2019참석
27정규Cycle GANOct 17 2019참석
28정규OpenCV 5Oct 18 2019불참
29정규WGAN, WGAN-GPOct 21 2019참석
30정규GAN Review 1Oct 22 2019참석
31정규Object segmentation review #1Oct 23 2019불참
32정규Object segmentation review #2Oct 24 2019참석
33정규강화학습 이론 및 실습Oct 25 2019참석
34특강영상처리 및 현업에서의 딥러닝 수요 및 전망Oct 28 2019참석

Data & Source

Table of Data & Source

NoTitleEducational InstitutionSourceRemarks
1Numpy 기초 및 CNN 기초AI 이노베이션 스퀘어Activation_Function.ipynbActivation_Function
2CNN 기초 및 Python Open CV 실습AI 이노베이션 스퀘어Introduction_to_convnets.ipynbIntroduction_to_convnets
3CNN 기초 및 Python Open CV 실습AI 이노베이션 스퀘어HelloCV.ipynbHelloCV
4이진분류, 값 예측 딥 러닝 네트워크 설계AI 이노베이션 스퀘어Boston_House_price_prediction_실습.ipynb보스턴집값
5이진분류, 값 예측 딥 러닝 네트워크 설계AI 이노베이션 스퀘어IMDB_classification_실습.ipynb영화평점
6Flicker api를 이용한 데이터 수집 및 VGG 네트워크 활용AI 이노베이션 스퀘어Flicker_application_실습.ipynbFlicker
7Flicker api를 이용한 데이터 수집 및 VGG 네트워크 활용AI 이노베이션 스퀘어VGG4smalldataset_실습.ipynbFlicker
8Flicker api를 이용한 데이터 수집 및 VGG 네트워크 활용AI 이노베이션 스퀘어VGG_application_실습.ipynbFlicker
9자기 부호화기 Autoencoder 활용하기AI 이노베이션 스퀘어AutoEncoder.ipynbAutoEncoder
10자기 부호화기 Autoencoder 활용하기AI 이노베이션 스퀘어Augmentation.ipynbAugmentation
11자기 부호화기 Autoencoder 활용하기AI 이노베이션 스퀘어Convolutional_Autoencoder.ipynbConvolutional_Autoencoder
12뉴럴 네트워크 훈련 기법AI 이노베이션 스퀘어Weight_Initialization.ipynbWeight_Initialization
13CNN REVIEWAI 이노베이션 스퀘어MNIST_Dense_example.ipynbMNIST_Dense_example

1. Unet

  • Image : pixel(0~255) 값 / 255 (max normalization) 나누어서 0~1 사이의 값을 가진다.
  • Convolution Filter : 3 * 3(대부분의 3 by 3 을 사용한다)
  • Feature Map : 컨볼류션을 거치고 나온 값은 0~1사이의 값이 아니고 그 범위를 넘어서 특징(Feature) 이라고 부른다
  • Subsampling : Max-Pooling을 의미 한다.
  • Back Propagation : 미분하면서 계속해서 값을 바꾸어 가면서 전달된다.
  • Lenet
  • Unet이 성능이 좋은 이유는 Skip Connection

2. Fit vs Fit Generator

  • step_per_epoch =250
  • Image 100G 처럼 데이터 클경우 메모리에 올릴수 없으므로 미리 Batch를 만들어서 올린다.

3. Segmentation

  • 정답 과 Prediction(모든 Pixel에 대하여 확률값)을 비교하는것

4. Lung Segmentation, Cropping, & ResUNet (tf.keras)

  • 특징: MaxPooling이 없음
  • Resdual Block : Conv2D → BN → ReLU → Conv → Addition
def bn_act         # BN → ReLU 묶어 놓은 함수
def conv_block     # BN → ReLU → Conv 묶어 놓은 함수
def stem           # Conv2D → BN → ReLU → Conv + shortcut
    shortcut =     # Input → Conv2D
def resudual_block # BN → ReLU → Conv → res   
def ResUNet        # f : Filter의 갯수를 리스트로 만들어 놓고 갖다가 씀.
def dice_loss      # Loss = 1 - IOU(Interest of Unit : 관심지역)  cf : 변형 lnIOU
def dsc            # dice similarity  IOU  교집합/합집합   Predition 0 1 1 1 0 3
    intersection   # 2개 겹친 부분의 값을  reduce_sum      Y         0 1 1 0 0 2       
    smooth         # 0 으로 나누어지 는 것을 방지하기 위해 
  • CE(Cross Entropy) : -log(Pt)
  • FL(Focal Loss) : -(1-pt)r log(pt) # r(감마)를 줌으로서 미분을 하면, 지수가 앞으로 나와서 에러의 값을 올려준다.

5. GAN

  • Discriminator
  • Generator
  • Linear → Keras 의 Dense
  • 출력 : 0 (가짜), 1(진짜)
  • Generator
  • 출력 : -1 ~ 1

6. WGAN

  • GAN → 1 : 진짜 / 0:가짜
  • WGAN → 1 : 진짜 / -1:가짜
  • GAN → (D(x), 1) + (D(G(z)), 0)
  • └ -log(D(x)) -log(1-D(G(z)))
  • WGAN → D(x~)) - D(x) : 값의 범의를 두지 않음으로서, 차이를 2가 생기께끔 하여 더 구별이 잘되게끔 한다.

Reference

for layer in pretrained_densenet.layers:
    layer.trainable = True

denseNetOutpu = pretrained_densenet.get_layer('relu').output

Feature_Flatten = GlobalAveragePooling2D()(denseNetOutput)
dense1 = Dense(1024, name='dense1', activation='relu', kernel_initializer='he_normal')(Feature_Flatten)
dense1 = BatchNormalization()(dense1)
dense2 = Dense(1024, name='dense2', activation='relu', kernel_initializer='he_normal')(dense1)
dense2 = Dropout(0.3)(dense2)
predictions = Dense(6, name='last', activation='softrmax')(dense2)

New_DenseNet = Model(inputs=pretrained_densenet.input, outputs=predections)
New_DenseNet.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
New_DenseNet.summary()