AI/Github

Yolov3 (tf1)를 tensorflow 2버전으로 실행해 보자(3)

아인샴 2021. 3. 5. 22:26

2021/03/03 - [AI/Github] - Yolov3 (tf1)를 tensorflow 2버전으로 실행해 보자(2)

지난 번 글에서 마지막의 상태가 이러했다. 

2개가 아니라 4개다. 

앞의 1은 batch dimention으로 추가됨

이제 shape을 맞춰 후처리 해야 하니 모델 input/output을 살펴보자 

yolov3/yolo.py

  • input_shape = 416, 416 (클래스 초기화 할 때 정의된 값이 나옴. 

모델 들어가기 직전의 이미지 shpae을 출력했을때 나온 값 

  • 79~80 라인을 보면 모델의 input이 보인다. 
  • tiny version을 썼으므로 79라인에 적힌 Input값이 모델에 입력될 것이다. 
  • Input(shape=(416,416,3)), num_anchors(6) // 2 (몫) , num_classes(80)

그럼 이제  tiny_yolo_body를 살펴보자. 

줄줄이 파라미터를 따라다니는 익숙한 input x가 보이지 않는다. 

  • 반환되는 값을 보자 

input과 output만 주면 알아서 모델이 만들어진다. 다만 input,output이 앞뒤가 맞게 연결되어 있어야 함

  • 자주보이는 compose를 보자 

많은 함수를 구성한다

- reduce란 무슨 함수인가.(파이썬 2.ver 대의 함수로 이제는 안쓴다. )

더보기

여러번 반복하는 연산을 단순한 한두개의 요소를 설명하는 것만으로 구성하는 함수이다. 

인풋으로 어떤 복수개의 인자를 리스트 형태로 받으면, (아마 함수 일 것)  reduce함수를 실행한다.

함수 내부는 2중 람다문으로 구성되어있다. 

 

 

왜 안쓰는지 알겠다. 너무 어렵다.

  • 그럼 요소를 이해했으니 전반적인 네트워크 구조를 알아보자.  복잡해서 하고 싶지 않았지만(...) 현재 output구조가 이해되지 않으므로 이럴 때는 다른 방법없이 yolov3개념을 파악하면서 네트워크 구조를 일일히 뒤지는 수 밖에 없다.

tiny -yolov3 network archtecture

  • 원래 전반적인  object detection 관련 network를 base 부터 차근차근 진행할 예정이었으나 지금은 코드 실행이 우선이므로 이에 관련된 yolov3에 대해 간단히 설명한다.
  • 일단 yolov3는 bounding box의 확률과 classification의 확률을 동시에 구한다. 
  • 이에 대한 설명이 여기 있다.  2021/02/22 - [AI/Baseline] - 1-stage Detector VS 2-stage Detector

 

  • --이러다 그냥 답답해서 다른 github뒤져서 코드 복사했더니 됐다. 왜그런지는 추후 설명

github.com/guichristmann/edge-tpu-tiny-yolo/blob/a389fd6fc521045efd519e13ab83e7f799b7cae7/inference.py

출력할대 색을 아직 안맞춰줌

 

 

 

 


출처 : 

 

[논문] YOLOv3: An Incremental Improvement 분석 taeu.github.io/paper/deeplearning-paper-yolov3/

GstInference with TinyYoloV3 architecture   developer.ridgerun.com/wiki/index.php?title=GstInference/Supported_architectures/TinyYoloV3

tiny-yolov3 network architecture

www.researchgate.net/figure/The-network-structure-of-Tinier-YOLO-Tinier-YOLO-retains-the-front-five-convolutional_fig2_338162578

keras API keras.io/guides/functional_api/

람다 brownbears.tistory.com/457