• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

코드 위치에 대해 질문드립니다.

21.02.07 17:16 작성 조회수 144

0

# 아래는 원본 train.py에서 weights_path 변경을 위해 임의 수정. 최초 weight 모델 로딩은 coco로 pretrained된 모델 로딩. 
# tiny yolo로 모델을 학습 원할 시 아래를 tiny-yolo.h5로 수정.

위와 같은 주석이 있는데 train.py에서 수정하란 말씀이신가요 아니면 train.py의 내용을 본인이 작성하고 있는 py파일(현재 저는 파이참에서 작업하고 있습니다.)에서 작성할때 아래와 같이 수정하란 말씀이신가요?

답변 4

·

답변을 작성해보세요.

0

이영규님의 프로필

이영규

질문자

2021.02.13

답변 감사합니다. 많은 도움이 되었습니다. 

하나 더 질문을 드리자면 실행 도중 아래와 같은 에러가 발생하였습니다.

tensorflow.python.framework.errors_impl.AbortedError: Operation received an exception:Status: 3, message: could not create a dilated convolution forward descriptor, in file tensorflow/core/kernels/mkl_conv_ops.cc:1111

[[{{node conv2d_2/convolution}}]]

검색해보니 keras 버전을 바꿔보라는 코멘트가 여럿 보입니다. 코멘트들은 2.1.5를 써보라고 합니다만 강의자료에 나타나있듯 keras 2.2(2.2.4)를 쓰고 있었습니다. 혹시 2.2 내에서도 작동을 하는 버전이 있고 안 되는 버전이 있나요? 텐서는 1.13.1을 쓰고 있습니다.

0

원본 github의 train.py를 실행하지 않고도 강의 실습 코드를 수행 할 수 있도록 train.py의 일부분을 발췌해서 사용했습니다.

다만 원본 train.py에서 사용된 get_classes()나 get_anchors() 함수의 경우는 굳이 강의 실습에서 다시 작성할 필요가 없을 것 같아 이를 재 활용하기 위해서 train.py에서 해당 함수를 import 하였습니다.

keras yolo3 패키지가 어떻게 학습을 하는지 보여드리기 위해서, 강의 실습 코드에 있는 부분중 train.py에 있는 부분을 많이 가져왔다고 강의에서도 말씀 드리고 있습니다. 다만 train.py 코드가 길기 때문에 이를 다 복사할 필요가 없기에 필요한 부분만을 가져왔습니다.

0

이영규님의 프로필

이영규

질문자

2021.02.12

답변 감사합니다.

그런데 그렇게 되면 다른 의문이 하나 생깁니다.

from train import get_classes, get_anchors
from train import create_model, data_generator, data_generator_wrapper

BASE_DIR = os.path.join(HOME_DIR, 'DLCV/Detection/yolo/keras-yolo3')

## 학습을 위한 기반 환경 설정. annotation 파일 위치, epochs시 저장된 모델 파일, Object클래스 파일, anchor 파일.
annotation_path = os.path.join(ANNO_DIR, 'raccoon_anno.csv')
log_dir = os.path.join(BASE_DIR, 'snapshots/000/')
classes_path = os.path.join(BASE_DIR, 'model_data/raccoon_class.txt')
anchors_path = os.path.join(BASE_DIR,'model_data/yolo_anchors.txt')

class_names = get_classes(classes_path)
num_classes = len(class_names)
anchors = get_anchors(anchors_path)

이 코드에서 from train을 하는 것으로 보아 다른 train.py가 아닌 다른 py파일이라는 것을 알 수 있어서 다른 py파일에다가 작업하고 있었습니다. 그런데 이 변수들은 train.py에 실행에 필요한 변수들입니다. 실제로 train.py에도

annotation_path = 'train.txt'
log_dir = 'logs/000/'
classes_path = 'model_data/voc_classes.txt'
anchors_path = 'model_data/yolo_anchors.txt'
class_names = get_classes(classes_path)
num_classes = len(class_names)
anchors = get_anchors(anchors_path)

이런 내용이 있는 것으로 보아 https://github.com/chulminkw/DLCV/blob/master/Detection/yolo/KerasYolo_Raccoon_%ED%95%99%EC%8A%B5%EB%B0%8F_Detection.ipynb

여기에서 적힌 내용들이 모두 train.py에 들어가는 내용인가 하는 생각이 들었는데 맞는지요? 

만약 아니라면 import train한 py폴더에서 train.py를 실행시켜야 학습을 할 수 있을 것 같은데 강의에서 보여주시는 코드 어느 부분이 그 부분인지 잘 모르겠습니다. 

0

안녕하십니까,

keras-yolo3 의 원본 github에 있는 train.py를 강의 용도에 맞게

os.path.join(BASE_DIR, 'model_data/yolo.h5' )

로 모델파일 명을 변경한 것이라는 의미 입니다. 현재 모델 파일의 경로를 입력해 주면 됩니다.

감사합니다.