월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
MNS 질문
섹션 3 YOLO 모델 리뷰 10:54초에 말씀하시는 부분은 [클래스별 softmax 결과] * [grid cell에 object가 존재할 확률] 을 곱해서 [하나의 바운딩 박스 좌표에 매핑되는 결과]를 설명하시는 부분이고,섹션 3 Non-Maximum Suppression 4분 10초부터 말씀하시는 부분에서는 위에서 언급한 96개의 (1,20)에 매핑되는 바운딩 방스를 가지고MNS를 진행한다고 말씀하셨다는 의도로 이해해도 될까요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
model.py의 Activation Function
GlobalAveragePooling2D()에서 InceptionV3의 다차원 Feature Map을 1차원 스칼라로 차원변환 해주는데, 여기서 GlobalAveragePooling2D()를 사용하심은, 아래 이미지에서 Flatten된 Vector를 구현 하심이 맞으실까요? 왜 2D 해당 기법은, CNN + FCN을 대체하기위해 사용된다는정도로만 인지하고 있습니다. x = tf.keras.layers.GlobalAveragePooling2D()(x) # Multi dimension featuremap to one dimension scalar value.YOLO Format으로 Flatten 시킬때, 활성화 함수는 지정할 필요가 없나요? 원 논문에서 마지막 Layer에 대해 linear activation function을 사용했는데, 수업에서 사용한 코드에서는 'None'으로 지정된 이유가 어떻게 될까요? output = tf.keras.layers.Dense(cell_size * cell_size * (num_classes + 5 * boxes_per_cell), activation="None")(x) # Yolo 형태에 맞는 Flatten 된 벡터로 변환
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
코랩에서 train.py 실행 시 오류
운영환경Colab (프로 GPU 버전 사용)이슈아래 코드 실행 시, InvalidArgumentError` 발생.if __name__ == '__main__': app.run(main)/usr/local/lib/python3.9/dist-packages/tensorflow/python/framework/ops.py in raise_from_not_ok_status(e, name) 7213 def raise_from_not_ok_status(e, name): 7214 e.message += (" name: " + name if name is not None else "") -> 7215 raise core._status_to_exception(e) from None # pylint: disable=protected-access 7216 7217 InvalidArgumentError: {{function_node __wrapped__Squeeze_device_/job:localhost/replica:0/task:0/device:GPU:0}} Can not squeeze dim[1], expected a dimension of 1, got 24 [Op:Squeeze] Q. 운영환경 상, 리눅스 또는 윈도우를 활용하지못하는데 코랩에서 강의에서 주어진 코드 실행 시 문제가 되는 부분이 있나요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
object_exists_cell_i 계산식
object_exists_cell_i, object_exists_cell_j = int(cell_size * ycenter / input_height), int(cell_size * xcenter / input_width) loss.py 강의의 18:13s에서 계산식 "cell_size * ycenter / input_height" 에서 ycenter가 0.4(normalized)이고, cell_size가 4 -> 두개를 곱하면 1.6이고, int형변환되어 1이라서 Grid Cell , input_height 값을 계산식에서 제외하신것 같습니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
데이터셋 변경에 대한 질문
강의 잘봤습니다강의에서는 psrcal voc 의 고양이 사진을 데이터셋으로 이용하셨는데이 데이터셋을 다른 데이터로 바꿔서 학습을 시키고 싶습니다단순히 코드 수정만 하면 되나요? 수정을 한다면 어떻게 수정을 해야 할까요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
reshape 한 후 7*7*30
안녕하세요^^ 다름이 아니라 모델 마지막 단계에서 reshape 후에 1*1*30 안에 어떻게 바운딩 박스의 정보가 들어있는지(?) 바운딩박스가 들어있다는 논리를 어떻게 만들었는지가 궁금합니다. 바운딩 박스 2개를 그린다는건 앞에서도 설명이 있었는데 모델에 대한 설명에서는 기존 cnn처럼 진행되는 것 같아서요. 어떻게 바운딩 박스 2개가 그려진다는건지도 궁금합니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
작성한 코드의 저작권과 깃헙 업로드 가능유무에 대한 질문
안녕하세요. 이번에 새로 이 강의를 수강신청했습니다. 이 강의에서 작성한 욜로 코드를 개인 포트폴리오 작성을 위해서 깃헙에 올리는 행위가 허용되는지 묻고 싶습니다. 이전에 인프런에 물어봤는데 강사님께 물어보라네요. 물론 출처는 적을 거고요. 그리고 이 강의에서 텐서플로우로 구현한 걸 제가 따로 파이토치로 구현할 생각입니다. 아마 이 과정에서 부분적으로 강사님의 코드나 아이디어 같은 것을 인용하거나 차용할 거 같은데 혹시 개인 깃헙에 올리는 행위가 허용되는지 그리고 된다면 어느 범위까지 되는지 알고 싶습니다. 읽어주셔서 감사합니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
Train시 bounding box의 개수 설정 관련
안녕하세요 강사님! 강의 잘 보고 있습니다. 다름이 아니라 강의를 보면서 공부를 하다가 의문점이 생겨 질문드립니다. 이번 YOLOv1에서 Bounding box의 개수를 2로 지정했는데, Object Detection 학습에 있어서 bounding box를 보통 2개로 주는 편인가요? 아니면 최적화를 위해서 4개든 5개든 제 임의대로 설정할 수 있는 파라미터인지 궁금합니다!
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
backbone network에 대해서 질문 있습니다.
논문에서는 backbone network로 darknet을 사용했는데, 강의 code에서는 keras의 inceptionV3를 사용되어 질문 올립니다. 혹시 darknet을 사용하려면 어떻게 가져와야 하는지 설명해주실 수 있으신가요? 참고할만한 링크라도 남겨주시면 감사드립니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
one_hot과 C값에 대해서 질문 드립니다.
loss_function에서 label값으로 사용되는 P에 tf.one_hot이 적용되는데, 이 때 tf.one_hot의 첫 번째 argument는 모든 label class가 할당되어야 하지 않나요? code에서 label[4]는 특정 단일 class의 label number값을 가지고 있어 반환값이 항상 [0, 0] 으로 나옵니다. 만일 class가 1개가 아니라 2개..또는 3개라면 num_class가 2일 때 P 의 값은 [0, 1] 또는 [1, 0]의 값이, num_class가 3일 때 P 의 값은 [0, 0, 1] 또는 [0, 1, 0] 또는 [1, 0, 0]의 값이 사용되어야 한다고 생각하는데 맞을까요? C값에는 IOU값을 주셨는데, 결국 C값은 object loss가 계산되는 과정에서 best box mask가 1인 cell의 위치에서만 사용이 될 것이고(나머지는 0의 값이기 때문), 해당 cell의 C값은 1이기 때문으로 이해해도 괜찮을까요? 만약 제가 이해한 것이 맞다면, C = 1을 할당해도 괜찮다고 봐도 될까요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
class_loss에 대해서 질문 있습니다.
loss.py에서 class loss를 구하는 과정에 label값으로 사용되는 P에 tf.one_hot 이 적용되는데, 그렇다면 prediction값으로 사용되는 pred_P 는 class에 대한 probability이기 때문에 (pred_P[:, :, 0]+ pred_P[:, :, 1]) == 1이 만족해야 하지 않나요? 아니면 probability가 아니여도 괜찮은건가요? 코드에서 사용된 pred_P는 class에 대한 probability가 아닌 것 같아 질문 드립니다. 그리고 one-hot은 단일 label에 적용되는 것이 아닌, 전체 label에 적용해야 하는데, 인자로 사용된 label[4]은 단일 label값만 가져오는 것 같습니다. 만일 코드를 단일 class에 대한 detection이 아닌, 여러 class에 대한 detection으로 변경한다면 tf.one_hot의 전달인자가 label[4]이 아닌, label number list가 들어가야 된다구 생각하는데... 제가 이해한게 맞을까요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
질문있어서 글 올립니다.
dataset.py에서 dataset을 load 후 filter를 통해 특정 label의 data만 필터링 하는 과정에서 filter의 인자로 predicate함수를 정의할 때 predicate의 인자로 받는 x는 dataset으로 이해했습니다. 그런데 predicate의 return값은 bool 타입이여야 하고, return값이 True일때 x가 필터를 통과하는 방법으로 label 7만 정제해서 dataset을 할당하는 방법을 사용하셨는데 여기서 x는 모든 class label을 담고 있는 dataset이 아닌가요? predicate의 return값이 단순 True일 뿐인데 어떻게 x에서 label 7만 정제가 되는 건가요? 혹시 x는 전체 dataset중, 각 class에 따라 분류된 dataset을 인자로 차례로 가져오는건가요? label 1 dataset -> label 2 dataset -> ... -> label 20 dataset 이런 방식으로요
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
안녕하십니까 강의 잘 보고 있습니다
train.py를 실행하면 쭉 voc를 받다가 이런 오류가 뜨는데 어떻게 해야하나요??
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
두 가지 질문 드립니다.
TensorFlow 2.0을 이용한 YOLO 논문 구현 chapter의 'train.py - train_step 정의 & for-loop을 이용한 gradient descent 수행 & 파라미터 및 텐서보드(TensorBoard) 로그 저장' 에서 1분 14초 line 90에 expand_dims을 사용해서 0차원에 dummy dimension 추가하는 code가 있는데 여기서 왜 dummy dimension을 만드는 건가요? 같은 강의의 line 279의 if문은 이전에 training 중 의도치 않게 프로그램이 종료되었거나 이전의 학습에 추가적으로 더 학습시키고자 할 때, 저장된 여러 checkpoint 중 마지막 checkpoint에 저장된 model값을 tf.train.Checkpoint의 instance에 다시 저장한다고 이해하면 되나요?
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
loss.py 의 loss에 사용된 tf.nn.l2_loss 에 대해서 질문 드립니다.
loss.py 중 set coord_loss 뿐 아니라 모든 loss를 구하는 부분에서 tf.nn.l2_loss를 사용하셨는데, 이건 제곱 후 2로 나눠주는 연산을 하는 연산으로 알고 있습니다. loss function에서는 2로 나누는 연산은 없었는데, code에서 tf.nn.l2_loss를 사용해서 2로 나누는 연산을 하신 이유에 대해서 궁금합니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
loss function 관련 질문입니다
bounding box 관련 loss(coord loss)에서 x, y 부분에 대해서 질문이 있습니다. 논문에 보면 아래와 같은 문장이 나오는데요 We parametrize the bounding box x and y coordinates to be offsets of a particular grid cell location so they are also bounded between 0 and 1. x, y 값이 이미지 전체 width, height에 대한 비율로 0에서 1사이 값이 되는게 아니고 하나의 cell 안에서의 상대적인 위치로 normalize 하는거 같은데요, 현재 코드는 image 전체의 width, height 기준으로 되어 있는 것 같습니다. 이 부분을 맞게 이해한건지 질문드립니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
loss function 관련
loss function 구현한 부분에서 질문드립니다. no object loss에 대한 flag(1objij)를 1-object_exists_cell로 구현하신걸로 이해했는데요 1 - object_exists_cell*best_box_mask 로 구현해야하는게 아닌가요? 1noobjij의 의미를 보면 responsible하지 않은 box에 대한 flag를 표시해야하는 것이고, 그렇게 되면 shape는 7*7*2가 되어야할거같은데요 코드상에서도 1-object_exists_cell의 shape는 7*7*1인걸로 이해했습니다 제가 뭔가 놓치고 있는것인지, 아니면 단순히 object가 존재하지 않는 cell의 box에 대해서만 no-object로 표시하기 위해 위와 같이 구현하신 건지 궁금합니다.
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
NMS 구현 관련 질문있습니다.
안녕하세요. 강의 해주신 내용을 듣고 코드를 활용해서 Pascal voc 20class들을 학습했습니다. 그리고나서 model을 활용한 prediction을 해보려고하는데 코드에서 NMS를 사용하지 않더군요.... 개인적으로 코드를 만들어서 적용을 해봤는데 test image 문제 1. 7*7*30 model ouput 값이 0 ~ 1 사이 값이 아닙니다. center x, center y값부터 softmax metrics 값까지 0 ~ 1 사이 값이 아니며, 심지어 음수 형태가 다수 발견됩니다. 이 부분은 활용하는데 아무런 문제가 없는 것인가요?? 문제 2. IOU 코드는 첨부해주신 코드를 그대로 사용해봤는데 아래와 같이 class별 98개의 confidence를 담고 있는 결과가 이상합니다. 즉, 내림차순 정렬 이후에 bbox max 와 bbox cur에 대한 IOU 결과값이 아래와 같이 나옵니다. ex) class 0 : aeroplane [1324.24121094 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] class1 : bicycle [1051.5657959 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] 아마 첨부해주신 코드의 문제라기 보다 제가 짠 코드에서 활용이 잘못된 것일 확률이 높으니 코드 링크를 첨부해 봅니다. https://github.com/pervin0527/pervinco/blob/master/source/3.object_detection/non_maximum_suppresion.py
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
confidence가 가장 큰 값으로 IOU 비교 이후 과정에 대해
안녕하세요. 좋은 강의 잘 보고 있습니다. confidence 내림차순 정렬 이후 가장 큰 값으로 그보다 작은 값들의 IOU 계산으로 걸러낸 이후, 남은 값들 중 두번째로 큰 값으로 재차 IOU 계산을 하는 이유가 궁금합니다. 개인적인 이해로는 가장 큰 값을 구했다면 그것이 이미지내 object를 가장 잘 대표하는 box이니 이후 연산은 불필요하다고 생각되었습니다. 추가적으로 고민해봤는데, 아래 사진처럼 흰색 말 바로 오른쪽의 검은색 말을 그려주기 위해서 두번째로 큰 confidence로 nms과정을 거치는 것인가요??
- 미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
confidence <= 0.6 이하의 Bounding Box 제거에서 confidence는 class probability가 곱해진 값인지요?
NMS 알고리즘 동작 과정에서 confidence <= 0.6 이하의 Bounding Box를 제거한다고 할때, confidence <=0.6 이하는 class별인지 아니면 bounding box confidence가 0.6이하인 Bounding Box 자체를 제거하는 의미 인지요? 인터넷을 보면 자료별로 해석이 약간 상이한것 같아 질문드립니다.