본문 바로가기

프로그래밍/AI:ML:DL

[YOLO] qqwweee/keras-yolo3 관련 노트

반응형

keras-yolo3 관련 노트

https://github.com/qqwwee/keras-yolo3 는 keras 로 구현된 yolo3. README.md 를 따라하면 간단하게 실습해 볼 수 있다. 2019년 12월 6일에 해보면서 헷갈렸던 포인트 등을 적어본다.

yolo_video.py predict 명령 옵션

python yolo_video.py [OPTIONS...] --image
python yolo_video.py [video_path] [output_path (optional)]

predict 를 하기위한 커맨드라인 옵션을 위와 같이 설명하고 있는데,

  • 첫번째 --image 옵션을 주었을 경우에는 입력창이 나오면 대상이미지파일명을 입력하여야 한다.
  • 두번째의 경우에는 그냥 video_path 를 바로 주면 안 되고, --input=box.mp4 같이 대상동영상파일명을 주어야 한다.
    • python yolo_video.py --input=box.mp4 : 같은 경로에 있는 box.mp4 라는 이름의 동영상 파일에 대해 물체검출을 진행.

tensorflow 2.x 미지원

tensorflow 2.0 을 깔고서 실행하면 다음과 같은 에러가 발생한다.

(aigpu_tf2_3764) D:\github\qqwweee\keras-yolo3>python yolo_video.py --input=9mmhandguns_sm.mp4
Using TensorFlow backend.
2019-12-06 01:01:29.951052: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
Traceback (most recent call last):
  File "yolo_video.py", line 75, in <module>
    detect_video(YOLO(**vars(FLAGS)), FLAGS.input, FLAGS.output)
  File "D:\github\qqwweee\keras-yolo3\yolo.py", line 44, in __init__
    self.sess = K.get_session()
  File "D:\PyEnvs\aigpu_tf2_3764\lib\site-packages\keras\backend\tensorflow_backend.py", line 379, in get_session
    '`get_session` is not available '
RuntimeError: `get_session` is not available when using TensorFlow 2.0.

tensorflow 2.0 부터는 session 이 없어졌는데, 해당 구현에서는 K.get_session() 과 같이 session 을 불러서 사용하는 코드가 있어서 에러가 발생하는 것 같다.

tensorflow 버전을 2.0 이전 버전으로 다운데이트한 후에 실행하면 된다. (conda 환경에서는 pip가 아닌 conda 명령을 사용하라.)

gpu 버전의 경우

pip install "tensorflow-gpu<2"

cpu 버전의 경우

pip install "tensorflow<2"
728x90