인프런 커뮤니티 질문&답변

슬로우 딥러너님의 프로필 이미지
슬로우 딥러너

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

Oxford Pet 데이터 세트 Training 및 Object Detection 실습 02(Pipeline Config 수정및 Training 수행)

질문드립니다. (200522)

해결된 질문

작성

·

320

0

안녕하세요 step, batch_size, epoch 관련해서 질문드립니다. 

raccoon dataset을 이용해서 yolo (또는 tiny_yolo) 모델 학습을 할때는 Epoch, batch_size, step, raccoon dataset size 값이 다음과 같았습니다.  
>> Epoch = 100 
>> batch_size = 4
>> step = 45
>> raccoon dataset size = 180   

epoch 1회 발생할때 step 수는 45이고 각 step 별로 사용되는 raccoon dataset size (이미지 개수) 가 4 라고 이해했습니다.  그래서 epoch 1회에 전체 size (180 = 45x4) 의 raccoon dataset이 사용되었다고 이해했습니다.  


그리고 해당 epoch이 100번 실행 된다고 이해했습니다. (물론 저 같은 경우 early stopping 때문에 epoch 87회 발생후 training 종료되었습니다. 

그런데 현재 oxford_pet dataset 을 이용한 training에선 
>> step = 5000
>> batch_size = 24 
입니다. 

racccoon 대상 training의 경우와는 달리 이번의 경우에는 각 각 step마다 loss 값이 return 되었고 5000번의 step 후에 training이 종료되었습니다. 

제가 드리고 싶은 질문은 
[1] epoch과 step은 다른 개념이라고 알고 있는데 oxford_pet의 경우 epoch과 step이 같은 개념으로 사용되었다고 생각하면 될까요?
>> 혹시 아니라면 oxford_pet의 경우 epoch 값은 얼마이며 해당 epoch 값은 어디서 확인할 수 있나요? 
[2] oxford_pet의 경우 batch_size (24) 는 어떤 의미를 가지나요?
>> 저 같은 경우 tfRecord 제작할 때 oxford_pet dataset 3680개 중 2576 개가 train용 tfRecord를 만들때 사용되었습니다.
>> train에 사용되는 전체 2576 개의 oxford_pet dataset 중 step 1회 발생할때 사용되는 oxford_pet dataset의 개수가 24개였다고 생각하면 되나요?  아니면 다른 의미를 가지고 있나요?


감사합니다. 

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

Keras라면 epoch와 step(steps_per_epoch)는 YOLO에서 학습한 개념이 맞습니다. 정확하게 말씀드리면 keras의 steps_per_epoch는 Tensorflow version1의 step과는 많이 다릅니다.

Keras의  steps_per_epoch 은 전체 이미지 건수 / batch_size 입니다.  그리고 epoch는 전체 데이터 세트를 반복해서 몇번 학습할 것인가를 지정하는 것입니다

그런데, Tensorflow version1은 이 steps_per_epoch, epoch라는 파라미터 자체가 없습니다(Version2 는 Keras를 High level API로 가지므로 epoch, steps_per_epoch를 적용할 수 있습니다).  대신 steps와 batch size를 기반으로 epoch와 steps_per_epoch를 동적으로 계산해서 적용합니다.

Tensorflow의 steps는 총 iteration 횟수입니다(Keras로 치자면 epoch * steps_per_epoch). 만일 전체 이미지 갯수가 1000개, steps를 30,000번, batch size가 10 이라면, steps_per_epoch는 1000/10 으로 100번, epoch는 steps 30000/steps_per_epoch로 300 회가 설정됩니다.

Tensorflow object detection api는 기본적으로 tensorflow version1을 기반으로 하고 있습니다. 이렇게 steps와 batch size가 주어지면 keras 기반의 epoch와 steps_per_epoch를 매핑하실 수 있습니다.

감사합니다.

슬로우 딥러너님의 프로필 이미지
슬로우 딥러너

작성한 질문수

질문하기