교수님 안녕하세요 . 개정되고 나서 다시 정주행 하고 있고 있습니다. 좋은 강의 감사드리고 교수님 강의들 머신러닝과 오라클 강의 또한 아주 잘 듣고 있습니다. 교수님 Yolo v3 Custom Dataset으로 학습 후 아래와 같이 텐소보드를 통한 결과 같은데 이 부분을 어떻게 해석을 하고 보완을 해야할 지 강좌 내용에는 아래와 같은 Train 에 대한 학습 Result 를 하는 내용을 아직 제가 찾지 못해서 데이터를 분석하고 이해하는 법을 알고자 이렇게 두루뭉실하게라도 여쭙니다. 감사합니다.
안녕하세요 딥러닝을 구글colab을 이용하여 공부중인데 현재 이미지 학습 부분을 공부하고 있습니다. 하지만 결제를 하여도 런타임이 24시간이 한계라 훈련이 자꾸 중단되어 epoch를 전부 학습하지 못하고 있습니다! 그래서 1epoch마다 checkpoint를 저장하는 방법을 사용하여 훈련을 하고 있고, 현재 잘 저장이 되고 있습니다. 하지만 저는 항상 3/10 epoch에서 24시간이 지나 훈련이 중단 되는데 그러면 이때 3 까지 저장된 checkpoint를 불러와서 다시 4epoch부터 재 학습을 시킬수 있는방법이 궁금합니다! 검색을 해 보았지만 전부 학습이 완료된 데이터를 불러오는 예제 밖에 없어서 질문 남깁니다! 제가 사용한 코드는 아래와 같습니다. from fastai.imports import * from tensorflow.keras import datasets, layers, models, losses, Model from tensorflow import keras import tensorflow as tf from keras.layers import Dense,Dropout,Activation,Add,MaxPooling2D,Conv2D,Flatten,BatchNormalization from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator from keras import layers import seaborn as sns from keras.preprocessing import image import numpy as np import cv2 from google.colab.patches import cv2_imshow import matplotlib.pyplot as plt plt.style.use('seaborn-white') data_path = '/content/drive/MyDrive/train_val_data' train_dir = os.path.join(data_path,'train') val_dir = os.path.join(data_path,'test') classes = os.listdir(train_dir) train_datagen = tf.keras.preprocessing.image.ImageDataGenerator( width_shift_range = 0.2, height_shift_range = 0.2, zoom_range = 0.2, vertical_flip=True, rescale = 1. / 255, fill_mode='nearest') val_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale = 1. / 255) train_generator = train_datagen.flow_from_directory( train_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) val_generator = val_datagen.flow_from_directory( val_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) base_model = tf.keras.applications.ResNet50(weights = 'imagenet', include_top = False, input_shape = (224,224,3)) for layer in base_model.layers: layer.trainable = False x = layers.Flatten()(base_model.output) x = layers.Dense(720, activation='relu')(x) predictions = layers.Dense(360, activation = 'softmax')(x) opt = tf.keras.optimizers.Adam(learning_rate=0.001) checkpoint_path = "/content/drive/MyDrive/training_resnet50/resnet50_cp.ckpt" checkpoint_dir = os.path.dirname(checkpoint_path) # 체크포인트 콜백 만들기 cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, save_weights_only=True, verbose=1) head_model = Model(inputs = base_model.input, outputs = predictions) head_model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) history = head_model.fit(train_generator, validation_data=val_generator, batch_size=32, epochs=100, callbacks = [cp_callback])
ImportError : /usr/local/lib/python3.7/dist-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN2at5sliceERKNS_6TensorElN3c108optionalIlEES5_l 런타임 다시 시작 후 실행해도 위와 같은 오류가 나옵니다.
안녕하십니까! 먼저 좋은 강의를 해 주셔서 감사드립니다. 질문 드리겠습니다. 1. Mask RCNN 학습을 위해 config파일을 불러오고 파라미터를 설정을 합니다. 그리고 inference를 하기 이해 위에서 설정 된 config를 사용을 합니다. 만약. 학습과 inference를 각각 한다면(inference를 이한 주피터 노트북을 따로 생성) inference를 하기 위해 학습때와 동일하게 config를 파일을 불러오고 파라미터를 설정하고 사용을 해야 되나요? 예를 들어 학습시에 config를 파일을 불러오고 파라미터를 설정한 config를 파일로 저장하고 inference시에 그 파일을 불러와서 사용을 할 수도 있나요? 2. Mask RCNN 학습 시에 train과 validation dataset을 구성합니다. validation으로 검증을 하면서 학습을 하고 모델을 생성합니다. 생성된 모델을 평가하기 위해서는 Test 데이터셋으로 평가하는 방법이 궁급합니다. 부탁드립니다.
강사님 안녕하세요~! '장시간 Training이 필요한 Colab 실습 진행시 유의사항' 강좌 8:18분 근방의 코드 관련해서 질문드립니다. Colab에서 장기간 Training을 위한 Google drive mount 를 위해서 !python train.py \ --training_data_path="/data/ICDAR2015/train_data/" \ --checkpoint_path="/content/drive/MyDrive/Colab Notebooks/인프런_컴퓨터비전_올인원/6강/east_resnet_50_rbox" 이렇게 코드를 안내해주셨는데요 ... 여기서 !python train.py\ 부분의 의미가 궁금합니다. 또 5강 실습 CRAFT를 이용한 License Plate Detection 모델 학습을 진행하기 위해서 Google drive mount를 적용해보려고 하는데.. 어떻게 코드를 작성해보면 좋을지 여쭤보고 싶습니다. 그럼 답변에 미리 감사드립니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 강의 잘 듣고 있습니다. 몇가지 질문이 있어서 질문드립니다. 만약에 backbone을 바꾸고 싶으면 이와 같이 하면 되나여 ..? 백본을 바꾸난 뒤 init_cfg에있는 checkpoint도 바꾸어야 되는지 궁금합니다.
코드 중 하기 부분이 이해되지 않습니다. # 평균 손실을 측정합니다 average_loss += current_loss/total_batch batch for loop 안에서 average_loss += current_loss 를 계산하고 이후 epoch for loop 뒷단에서 average_loss = average_loss/total_batch 를 계산해야 1 epoch당 평균 loss가 계산되는 것이 아닌가요?
안녕하세요! 질 좋은 강의에 감사 인사부터 드립니다! 다름이 아니라 해당 강의 7:49초 부터 AlexNet 구현 코드를 설명해주시는데요! 이론적인 부분에서 원래 Alex Net이 LRN(Local Response Normalization)이 적용되지만 구현코드 상 BN을 적용하는 걸로 설명해주셨습니다! 그런데 BN layer 코드를 자세히 보니 AlexNet 구현 과정에서는 '컨볼루션 -> 활성함수 -> BN 적용' 순서로 되어 있더라구요? 물론 이 과정이 잘못되었다는 건 아닌데 보통 '컨볼루션 -> BN 적용 -> 활성함수' 과정으로 진행하는게 대부분 더 모델 최적화에 긍정적인 영향을 미친다고 알고 있어서요! 제가 AlexNet 논문까지는 확인을 안해보았지만 논문 상에서도 LRN(실습 코드에서는 BN)이 활성함수 이후에 적용되는 순서로 되어 있는지 문의드려도 될까요!?
ppt 10p, 아래 문장에 대해 질문이 있습니다. '또한 (W(in)-F/S)의 차원이 정수로 나누어 떨어지지 않을 수도 있기 때문에 인풋 이미지의 상하좌우 모서리에 P만큼 0을 채워주는 제로 패딩Zero-Padding을 P만큼 적용해줌' 일반적으로 제로 패딩을 시행하는 이유가 영상 모서리 부분의 특징을 더 잘 추출하기 위함이 아닌가요? 그리고 정수로 나누어 떨어지지 않으면 일반적으로 반올림을 해주는 게 맞지 않나요?
강의 ppt 13p 음성 설명이 (13:30분 경) 이상하게 돼있습니다. (1)미분 전 그래프를 활용해서 설명함 (2)시그모이드 함수와 하이퍼볼릭 탄젠트 함수의 특정 인풋값에 대해 미분값이 0으로 빠져버리는 구조가 아니라 특정 range의 값(이전 질문 참고 바람)이 계속 곱해져 0으로 빠져버리는 구조가 맞음
ppt 5p, Batch Gradient Descent에서 첫 번째 동그라미, '트레이닝 데이터 n개의 손실함수 미분값을 모두 더한 뒤 평균을 취해서 파라미터를 한 스텝 업데이트...' 문장을 '트레이닝 데이터 n개의 손실함수 미분값을 계산해서 파라미터를 한 스텝 업데이트...'로 바꿔야 맞는 거 아닌가요? 추가로 ppt 7p, Mini-Batch Gradient Descent에서 두 번째 동그라미, '...이를 100개씩 묶은 Mini-Batch 개수만큼의 손실 함수 미분값 평균을 이용해서...' 문장도 '...이를 100개씩 묶은 Mini-Batch 개수만큼의 손실 함수 미분값을 이용해서...'와 같이 바꿔야 할 것 같습니다.
ppt 9p, 'Hinton의 Science 논문을 시발점으로 RBM, Pre-training, Dropout, ReLU 등 Overfitting을 방지하기 위한 새로운 알고리즘들의 등장' 문장에서 RBM, Pre-training, ReLU는 Vanishing Gradient Problem과 Dropout은 Overfitting과 관련된 해결책 아닌가요?
시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 미분하면 각각의 미분 값의 범위가 0~0.25 (시그모이드), 0~1 (하이퍼볼릭 탄젠트) 사이여서 chain rule에 의해 계속해서 반복하여 계산하면 해당값이 0에 가까워져 gradient vanishing problem이 발생하는 거 아닌가요? 강의 내용 중 잘못된 부분이 있는 거 같아 질문 드립니다.
안녕하세요 강사님. 수업 정말 잘 듣고있습니다. 지난 CNN강의부터 쭉 공부를 해보았는데도 직접 구현해보려고 하니까 계속 두루뭉실 이해가 되지 않는 부분이 있어서 질문드립니다. 마지막 출력단이 FC의 경우 loss라는 것이 결국 1차원의 긴 벡터의 요소의 각각의 오차를 구해서 쭉 합친것 혹은 평균낸 것 이라고 이해했는데, yolo v3나, 그 외의 마지막을 convolution연산으로 바꾼 모델들은 마지막 출력이 2차원 평면(x배치수)인데, loss를 어떻게 계산하는지 궁금합니다. [질문] 2차원 각 셀 부분별로 나온 다양한 종류의 loss들을 multi loss로 통합하여, 각 셀별 오차를 구하고 = 오차가 (16x16x배치수)처럼 나오고, FC오차와 같이 결국 모든 셀(16x16)의 개별 요소들의 합을 구하는 것이 맞는지요...? 바쁘실텐데 복잡한 질문 죄송합니다. 감사합니다.
안녕하세요 강사님. 수업 항상 잘 듣고있습니다. 바쁘시겠지만.. detection 학습관련하여 계속 헷갈리는 부분 있어서.. 질문드립니다. 이번 강의 중간 부분에 faster RCNN의 문제점을 이야기 해주시면서 classification과 Bonding box rergression을 RPN 에서도 하고 뒷단의 detect부분에서도 똑같이 한다고 하셨습니다. 제가 이해하는 바로는 결국 마지막 부분에서 multi loss를 통해서 한번 역전파 시켜주는 것으로 알았는데, RPN부분에서 따로 weight 갱신이 이루어지는지요..? (inception의 auxiliary와 같은방식으로..) 아니면 FCN방식으로 9x(HW) 2x(HW)를 제안한 것 자체가 중복되는 구조라는 것인지요? >> 요약 : loss를 두번 흘려줘서 학습이 2번 이루어진다고 생각하는 것인지, 아니면 구조만 두번 중복되고 마지막 loss로 다같이 학습이 되는 것인지 궁금합니다.