월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
scaled yolov4 질문있습니다.
선생님 안녕하세요. yolov4 cfg 파일 안에 yolov4x-mish와 yolov4-csp 두 개 모델이 있는 것을 확인했습니다. 그리고 찾아보니까 scaled 기법? 을 바탕으로 yolov4에서 변형 된 것이 mish와 csp 모델인지.. 아닌지 두 모델에 대해 정확하게 잘 모르겠어서 여쭤봅니다. 추가. yolov4x-mish 구조를 확인하면, activation(활성화함수)에서 leakly relu 대신에 mish를 더 많이 사용하는 것을 확인할 수 있었습니다. 그래서 활성화 함수만 mish를 사용했나 했지만, yolv4x-mish 코드 길이? 구조가 더 긴 것을 확인할 수 있었습니다. yolov4-csp를 찾아보니까, cross stage partial netwrok를 사용한듯합니다. 항상 감사드립니다. 제가 아직 구조를 잘 모르다보니까.. 이렇게 질문을 드립니다.
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
advanced 강의
안녕하세요. 좋은 강의 감사합니다. advanced도 계획하시는 것 같았는데, 언제 쯤 오픈 될 예정일지 궁금합니다.. 또한 어떤 컨텐츠들을 다루실 예정인지도 알고 싶습니다. :) 이미지 분야에 단비같은 강의 감사합니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
torchvision.transforms.transform과 albumentation이랑 차이가 있나요?
안녕하세요 API랑 인터페이스가 서로 비슷한거 같은데, 다른 점이 있나요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
분류 문제일 경우 loss함수를 정하는 것에 대해 질문있습니다!
안녕하세요. 우선 너무 좋은 강의들을 통해 많이 배우고 있어서 너무 감사드립니다! 저는 딥러닝 CNN 완벽가이드와 파이썬 머신러닝 완벽가이드를 같이 듣고 있는 학생입니다. 제가 문득 cross entropy에 대한 강의를 듣다가 혼동이 오는 부분이 있는데, 1. 머신러닝을 이용하여 분류 문제를 풀 때는 loss 함수가 따로 없는건가요? 이 때는 f1 score, roc 등과 같은 방법이 더 좋은 지표인가요? 2. cross entropy를 사용하기 위해선 update된 y hat 값을 backpropagation해야 하는데 사이킷런에서 제공하는 lightgbm 등과 같은 모델에서는 backpropagation 연산이 불가능하기 때문에 cross entropy를 사용하지 못하는건가요?? 제가 아직 부족해서 질문이 좀 중구난방인 점 양해 부탁드립니다ㅜ
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
모델 학습 후 evaluate, predict 할 때 점수에 대해서 궁금한 점이 있습니다
안녕하세요. 보통 모델 fit 후 callback으로 model_checkpoint 콜백으로 가장 낮은 val_loss를 가진 weight를 불러와서 평가 및 예측을 하는데, 제가 문득 든 생각은 과연 가장 낮은 val_loss가 좋은 점수를 낼까? 라고 생각이 들어서, 예측 확률을 뽑아낼 때 model_checkpoint 모델 제외하고, 다른 weight 값(예, 가장 마지막으로 훈련한 모델)도 불러와서 예측한 값을 합해서 확률을 계산하는 경우도 있나요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
여러 가지 부분에서 질문이 있습니다
안녕하세요. 여러 궁금한 점이 있어서 질문이 있습니다 1. augmentation 없이 acc, val_acc가 0.99, 0.98이 되는데, 여기서 더 성능을 끌어 올리기 위해서 aug가 대안이 되긴하나요? aug가 val_acc면에서 0.98에서 0.99로 올릴 수 있는 해결책이 될까요? 2. fine-tuning 시 2단계에서 layer trainable을 다 안하고, 어느 일부분만 하고 싶다면 이를 module 단위로 나누는게 맞을까요? 그러면 복잡한 모델 같은 경우에는 직접 중간 모듈 시작 번호를 알아서 layer[-21:] = Trainable 이런식으로 해야겠네요? 3. 딥러닝에서 어떤 예측값을 뽑아낼 때 StratifiedKFold로 해서 마지막에 나누기를 해서 결과로 도출하는 것은 어떻게 생각하시나요? https://www.kaggle.com/c/invasive-species-monitoring 이 대회는 이진분류이긴 한데, 꽤나 성능이 좋게 나왔습니다 4. batch-norm을 적용한다면 모든 conv - acti 사이에 한 번씩 적용해야 하는 것인가요? 아니면 텀을 두고 batch-norm을 적용해도 되는 것인가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Batch size에 따른 처리 순서 질문
안녕하세요 강사님, 아직 Batch size에 대해 정확하게 감이 안와서 질문드립니다. Batch size는 한번에 처리하는 이미지의 수라고 하는데 이 '처리'라는 의미가 gradient descent를 적용하는(weight를 업데이트)하는 것이라고 들었던 것 같습니다. 그러면 아래 모식도처럼 이미지를 Batch 별로 통과하면 Batch size만큼 loss가 생성되는데 이를 '합산'해서 weight를 업데이트하는 것이라고 이해하면 될까요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
각 GD방법에 따른 iteration 횟수가 달라지나요?
안녕하세요! 강의 잘 듣고 있습니다! 제가 알기로는 epoch란 전체 데이터를 모두 관측한 횟수이고 iteration은 한 에포크에서 가중치 갱신이 된 횟수로 알고 있습니다. 전체 데이터가 100개이고, 500번의 epoch을 돌린다고 할 때, GD : 각 데이터당 500번이 인풋 데이터로 선택. 총 50,000번의 학습. iteration도 500. batch_size는 100 SGD : 각 데이터당 평균적으로 5번의 인풋 데이터로 선택. 총 500번의 학습. iteration은 50000. batch_size는 1 Mini - Batch(batch_size = 10) : 각 데이터당 50번의 인풋데이터로 선택. 총 5,000번의 학습. iteration은 5000, batch_size = 10 위 결과처럼 iteration*batch_size의 값은 모두 동일하지만 각 데이터가 학습되는 비중이 다르게 되는 것이 맞을까요? 또, 결론적으로 GD에서 변환되어 나온 SGD와 배치방법(이하 SGD 통일)은 표면적으로는 GD의 "전체 관측 후 갱신" 에서 SGD의 "부분 관측 후 갱신" 이라는 양적 개념이 달라진 것처럼만 보이지만 사실 그 내부에는 GD의 "동일한 데이터 반복 학습"에서 SGD의 "동일한 데이터 반복 학습 횟수 감소"로 볼 수도 있는건가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
googlenet에서의 conv1x1와 비선형성에 대해서 질문이 있습니다
안녕하세요. inceptionNet conv1x1 강의를 듣고 있습니다. 그런데 사용하는 이유 중에서 파라미터 감소 부분은 이해가 되는데, 비선형성이라는 단어가 나오면서 비선형성 특성이 두드러진다고 하셨습니다. 근데 약간 개념이 추상적이라서 제가 한 번에 와닿지는 않았는데, 보충해주실 내용이 있을까요? 추가적으로 기존에 conv1x1을 사용하면 아무래도 파라미터 수는 감소하기 때문에 바로 conv 하는 것보다 성능이 떨어질 것 같다고 생각하는데, 이 부분에 대해서는 어느정도 성능 차이가 없다고 증명은 된 것인가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
CNN 분석 관련
안녕하세요. 항상 질 높은 강의 올려주셔서 감사합니다. 항상CNN을 다루면서 마주쳤던 문제는 모델이 만든 결과물을 어떻게 해석하고 성능을 향상시킬까에 대해 시간 투자를 많이 하는데 이러한 평가, 해석에 관한 부분은 advanced 과정에서 다루실 예정인지 궁금합니다. activation map 확인해서 필터가 어떤 부분을 학습하고 있고 gradcam같은 방법을 이용해서 모델이 어느 부분을 중점적으로 보고 있는지 등 이러한 해석에 관한 부분이 있다면 더더욱 좋은 강의가 될 것 같습니다. 강의를 전부 수강하진 못해서, 개요를 보고 생각난건데.. 혹시 이미 강의 포함되어 있다면 죄송합니다. :)
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
pretrained 모델 사용할 때 이미지 전처리 부분에 대해서 질문이 있습니다
안녕하세요 pretrained 모델 사용할 때 만일 xception, resnet을 사용한다고 할 때 강의에서 알려주신 preprocess_input을 사용한다고 했는데, 이를 내부적으로 봤을 때 tf 스타일로, densenet은 torch 스타일로 정규화가 된다고 했는데, 그러면 pretrained 모델을 사용할 때는 반드시 preprocess_input을 써서 처리해야 하는것인가요? 아니면 권유하신 0-1 scaler를 사용해도 무방한가요? 감사합니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Sequece 부분에서 이미지, 라벨 호출할 때 질문이 있습니다
#next(iter(cnd_ds)) images_batch = next(iter(cnd_ds))[0] labels_batch = next(iter(cnd_ds))[1] print(images_batch.shape, labels_batch.shape) print(images_batch[0]) 안녕하세요. 제가 파이썬 문법에 많이 약해서 헷갈리는 부분이 있어서 질문을 드립니다. 혹시 시퀀스 데이터셋에서 iterator로 만든 후 next를 호출해서 각각 0번 1번 인덱스로 호출을 하는데, 궁금한 점이 image_batch = next(iter(cnd_ds))[0]를 실행하면 내부적으로 cnd_ds에 대한 iterator가 옮겨져서 다음에 labels_batch 라인을 호출할 때는 다음 배치 64개의 label이 호출될 줄 알았는데 선생님이 의도하시던대로 잘 되어서 궁금했습니다 전에 사용하던 ImageDataGenerator에서는 지금 사용하는 앞에서 묶는 것이 아니라 따로 .next() 함수가 있던데 서로 다른 개념일까요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
컬러와 그레이스케일 이미지가 섞였을 때 모델 Input을 어떻게 설정하면 좋을까요?
안녕하세요. 개인 데이터셋을 훈련을 시키려고 하는데, 이게 그레이스케일 이미지입니다 개인 데이터셋이 충분치 않아 비슷한 공개된 이미지들을 훈련시켜서 이를 pretrained 모델로 사용하고자 합니다. 다만 공개된 이미지는 3채널 이미지라서 고민이 됩니다 제가 생각하기에 2가지 방향이 있는데, 보통 방법은 어떻게 하는지 알고 싶습니다 1. 공개 데이터를 grayscale로 바꿔서 모델 Input을 채널 1로 하는것 2. 공개 데이터를 기존 rgb로 훈련한 후 개인 데이터셋에 대해서 3채널로 바꿔서 훈련하는 것
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
학습 중 validation loss와 validation accuracy가 급격하게 변하는 현상의 원인은 무엇일까요?
안녕하세요? 뜻하지 않게 회사에서 딥러닝 이미지분석 프로젝트를 맡아서 헤매고 있다가 이 강의를 듣고 도움이 정말 많이 되었습니다. 회사 데이터를 강의 코드와 유사한 방식으로 비교해가며 진행 중인데 Batch 크기에 따른 모델 성능 향상 부문에서 아래와 같이 특이한 현상을 확인했습니다. 그래프는 위에서부터 차례대로 train accuracy, train loss, validation accuracy, validation loss입니다. train은 일반적인 학습 곡선의 경향을 그대로 따라가는데, validation 쪽은 loss도 accuracy도 그렇고 학습 진행할 때마다 널뛰기하는 것이 보입니다. 일정 수준을 가다가 떨어지면 과적합이라고 이해하겠는데 학습 쇳수가 10이하 일때도 해당 현상이 나타나는 걸로 봐서는 아닌 것 같습니다. seed속성을 동일하게 고정하였으니 데이터셋은 일정하게 들어가고 있는 것은 맞는데, 데이터 수가 적어서(train 2000장, validation 200장) validation 시 하나라도 틀리면 급격하게 떨어지는 것인지 잘 모르겠습니다. 강사님께서는 어떻게 생각하시는지요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
MinMaxScaler
안녕하세요 교수님. 머신러닝강의에서 회귀분석을 할때 StandScaler()를 써주신 걸로 기억합니다. 회귀분석 강의에서 타겟값의 정규 분포 형태를 강조해주셨는데, MinMaxScaler를 써도 상관이 없는건가요? 강의 너무 잘듣고 있습니다 감사합니다 :)
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Keras ImageDataGenerator 사용 때 표준화 옵션에 대한 질문입니다
안녕하세요. 매번 rescale =1/255.을 사용하다가 좀 더 데이터의 분포를 잘 압축할 수 있는 표준화가 좋을 것 같아서 아래와 같이 사용했습니다 featurewise_center=True, featurewise_std_normalization=True, 그런데 궁금한 점이, 표준화를 한 후 min, max를 찍어보니 -1~1 사이 값은 아닌 것 같은데, 아니라면 어떻게 맞춰줄 수 있을까요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
안녕하세요 모델 Conv2D 연산에서 activation을 안할 때의 경우는 언제인가요?
안녕하세요 CNN 강의를 꾸준히 들으면서 이에 대한 이론을 바탕으로 중간에 다른 코드들을 살펴보고 있는 중입니다 model = Sequential([ Conv2D(16,(3,3), strides = 3, input_shape = img_shape), MaxPooling2D(), Conv2D(32, (3,3),strides=2), MaxPooling2D(), Conv2D(64, (3,3)), MaxPooling2D(), Conv2D(64,(3,3)), MaxPooling2D(), Flatten(), Dropout(0.5), Dense(256, activation = 'relu'), Dropout(0.5), Dense(9, activation = 'softmax') ]) model.summary() 그런데 위와 같은 코드에서 궁금한 점이 생겼습니다. 이미지는 약 (500, 400)의 사이즈를 가지고 있습니다. 궁금한 점이 Feature Extracter 부분의 Conv2D 연산 때 activation 적용을 하지 않고 마지막 classify 때만 activation을 적용하는데, 레이어 층이 작아서 마지막에 한 번만 activation을 하면 되어서 그런 것인가요? 어떤 상황에서 activation을 하지 않고 넘어가는지 그러한 부분이 궁금합니다. 감사합니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
표준화 시에는 활성함수를 ReLU를 사용하면 안되나요?
안녕하세요. 아래 코드와 같이 0-1 사이값으로 만든 후 표준화를 진행했습니다. 이럴 때 음수값이 포함되어 있기 때문에 연산에서 음수값도 의미가 있으니 문득 든 생각이 Conv2D에서 활성화 함수를 ReLU를 사용하면 안되나요? train_images = np.array(train_images).astype('float32') / 255. valid_images = np.array(valid_images).astype('float32') / 255. test_images = np.array(test_images).astype('float32') / 255. mean, var = train_images.mean(), train_images.std() train_images = (train_images - mean) / var mean, var = valid_images.mean(), valid_images.std() valid_images = (valid_images - mean) / var mean, var = test_images.mean(), test_images.std() test_images = (test_images - mean) / var
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
CNN Cifar10 VGG16으로 전이학습 시 val_accuracy가 0.1로 고정되어 나옵니다
안녕하세요. CIFAR10 데이터를 가지고, VGG16으로 전이학습을 해보려고 했습니다. 데이터가 충분하다고 생각해서 뒤에서 2개의 block을 trainable=True로 바꾸고, top 부분은 globalaveragePool 이후에 Dense로 Softmax를 적용했는데, 훈련이 아주 이상하게 동작하는데, 이유를 알 수 있을까요? import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, BatchNormalization, Dropout from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.utils import to_categorical, normalize import numpy as np import os import matplotlib.pyplot as plt import pandas as pd %matplotlib inline (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() print(x_train.max(), x_train.min()) x_train = normalize(x_train) x_test = normalize(x_test) y_train = to_categorical(y_train) y_test = to_categorical(y_test) print(x_train.shape, x_test.shape, y_train.shape, y_test.shape) print(x_train.max(), x_train.min(), x_test.max(), x_test.min()) train_datagen = ImageDataGenerator( rotation_range = 45, width_shift_range = 0.2, zoom_range = 0.2, horizontal_flip = True ) train_datagen.fit(x_train) train_generator = train_datagen.flow( x_train, y_train, batch_size = 128) model_vgg = VGG16(weights='imagenet', include_top=False) for layer in model_vgg.layers: layer.trainable = False for layer in model_vgg.layers[-8:]: layer.trainable = True inputs = model_vgg.output x = tf.keras.layers.GlobalAveragePooling2D()(inputs) x = Dense(256, activation='relu')(x) x = Dropout(0.3)(x) x = Dense(128, activation='relu')(x) x = Dropout(0.3)(x) x = Dense(10, activation='softmax')(x) new_model = tf.keras.models.Model(model_vgg.input, x) new_model.summary() from tensorflow.keras.callbacks import ReduceLROnPlateau, EarlyStopping rlr_cb = ReduceLROnPlateau(monitor='val_loss', factor=0.3, patience=3, mode='min', verbose=1) ely_cb = EarlyStopping(monitor='val_loss', patience=5, mode='min', verbose=1) new_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) history = new_model.fit_generator(train_generator, steps_per_epoch = 391, epochs = 100, validation_data = (x_test, y_test), #callbacks=[rlr_cb, ely_cb] )
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
안녕하세요 LR 변화에 대해서 질문이 있습니다
안녕하세요 Callback 함수에서 ReduceLROnPlateau을 사용하면 동적으로 fit 중에 factor만큼 변화를 할 수 있다고 배웠습니다. 그런데 앞에 이론 수업에서 Adam을 사용할 때도 동적으로 LR을 바꾼다고 들었는데, 서로의 역할이 다른 것인가요? 아니면 제가 잘못 이해한 것인가요? 감사합니다