• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

keras-yolov3 라쿤 실습 문의

20.09.01 14:35 작성 조회수 268

0

강의를 듣다 좀 복잡해져서 이해가 가지 않는데 강의를 다시 들으면서 찾아봐도 어려워 문의 드립니다. 

1) 라쿤 데이터 학습 할 때  아래와 같은 부분이 있는데요, 

#yolov3.weights를 keras-yolo3에서 사용할 수 있도록 yolo.h5 로 변환

!python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

여기에서 말하는 yolov3.cfg 파일은 keras-yolov3 다운로드 하면 폴더 내에 있는 yolov3.cfg 파일이 맞나요? (filter 255, class 80으로 되어 있는..)

yolove.weights 는 선생님 깃허브에서 받았습니다.(https://github.com/chulminkw/DLCV/releases/download/1.0/yolov3.weights)

yolo.h5를 만드는 과정에서 계속 에러가 나거나 잘 만들어져도 학습 시 val_loss: nan 으로 나오거나 하고 있습니다. 

제가 추측하건데, yolo.h5 만드는 과정에 문제가 있는거 같은데요, 확인 부탁 드립니다. 

에러내용1: Traceback (most recent call last):

  File "convert.py", line 262, in <module>

    _main(parser.parse_args())

  File "convert.py", line 143, in _main

    buffer=weights_file.read(weights_size * 4))

TypeError: buffer is too small for requested array

에러내용2: (중간에 아래처럼 Concatenating~~~ 으로 시작하는 두 번 나오는데 정상인가요?)

arsing section upsample_0

Parsing section route_1

Concatenating route layers: [<tf.Tensor 'up_sampling2d_1/ResizeNearestNeighbor:0' shape=(?, ?, ?, 256) dtype=float32>, <tf.Tensor 'add_19/add:0' shape=(?, ?, ?, 512) dtype=float32>]

Parsing section convolutional_60

conv2d bn leaky (1, 1, 768, 256)

Parsing section convolutional_61

conv2d bn leaky (3, 3, 256, 512)

Parsing section convolutional_62

conv2d bn leaky (1, 1, 512, 256)

Parsing section convolutional_63

conv2d bn leaky (3, 3, 256, 512)

Parsing section convolutional_64

conv2d bn leaky (1, 1, 512, 256)

Parsing section convolutional_65

conv2d bn leaky (3, 3, 256, 512)

Parsing section convolutional_66

conv2d    linear (1, 1, 512, 255)

Parsing section yolo_1

Parsing section route_2

Parsing section convolutional_67

conv2d bn leaky (1, 1, 256, 128)

Parsing section upsample_1

Parsing section route_3

Concatenating route layers: [<tf.Tensor 'up_sampling2d_2/ResizeNearestNeighbor:0' shape=(?, ?, ?, 128) dtype=float32>, <tf.Tensor 'add_11/add:0' shape=(?, ?, ?, 256) dtype=float32>]

Parsing section convolutional_68

conv2d bn leaky (1, 1, 384, 128)

2) yolov3.cfg 파일의 filter 와 class 는 수정 하지 않아도 되나요? 

라쿤은 class 1, filter 18인거 같아서요. 

* 개인 gpu 사용, tf 1.15 keras 2.3  사용 (keras 는 backend폴더에서 __init__.py 조치 하였습니다.)

답변 3

·

답변을 작성해보세요.

0

정상 동작한다니 다행입니다 ^^

0

답변 감사합니다. 

말씀해 주신대로 keras-yolo3 와 yolov3.weights 를 모두 삭제 한 다음 다시 다운로드 받아서 yolov3.cfg 건드리지 않고 진행했습니다. convert.py도 진행했구요. 다행히 정상 동작합니다. 

그리고,,, val_loss:nan 의경우, val_loss:nan 이 뜨면 바로 멈춤 하여 학습과 검출이 완료되는지는 확인 하지 않았습니다. 

계속 오류가 발생되어서, yolov3.cfg 의 filter와 class 를 수정했었습니다. ㅜㅜ 불필요한 과정이었네요. 

더 공부 하겠습니다!

0

안녕하십니까,

convert.py는 Darknet YOLO 사이트의 COCO로 Pretrained된 Yolo weight를 keras에서 인식할 수 있는 weight파일인 h5 파일 형태로 변형하는 것입니다.

yolov3.cfg는 손대실 필요 없습니다. 라쿤하고는 상관 없습니다. 

일단 제 환경에서는 정상 동작합니다.

먼저 제가 드리는 질문입니다.

1. 학습 시 val_loss: nan 이 나온다는 것이 Raccoon학습 시 발생한다는 건가요? 정상적으로 학습과 Detection은 되는지요?

2. 구글 검색을 해보니 질문하신 convert.py 시 발생하는 오류가 yolov3.cfg와 yolov3.weights 안맞아서 발생할 가능성도 있을 거 같습니다. 혹 yolov3.cfg을 한번 열고 수정 작업을 한 적이 있으신지요? 

일단 yolov3.cfg를 https://github.com/qqwweee/keras-yolo3.git 로 들어가셔서 다시 다운로드를 받아 주십시요.  그리고 다시한번 convert.py를 수행 부탁드립니다.