mmdet train in sixxtools

Published by onesixx on

~/my/git/mmdetection/tools ==> sixxtools

Shell

epoch_69.pth (PyTorch Model)이 생성된다.

Shell

runner = dict(type=’EpochBasedRunner’, max_epochs=36)

evaluation = dict(interval=4, metric=’bbox’, save_best=’bbox_mAP’)

auto_scale_lr = dict(enable=False, base_batch_size=16)

10 * 36 = 2.5 * (4*36)

step 144

epoch

전체 데이터 셋에 대해 1번 forward pass/backward pass 과정(Back propagation algorithm, 역전파)을 거친 것
전체 데이터셋에 대해 한 번 학습을 완료한 상태

step

하나의 Batch로부터 loss를 계산한 후, Weight와 Bias를 1회 업데이트하는 것을 1 Step이라고 한다.

Batch Size

1 Step에서 사용한 데이터 개수. 가령 SGD의 batch size는 1이다.

1 epoch과정에서 효율적인 학습을 위해 (메모리부족, 속도저항방지) 전체 데이터(Batch)를 일부데이터(Mini-Batch)로 만들고, 그때 크기를 batch size라고 한다.

Iteration

하나의 epoch에 데이터를 나눌 때 몇 번 나누어서 주는지를 iteration이라고 한다. 

sample(전체학습데이터) N * Epochs n = Batch size * Step n

ex) 턱걸이48개목표 * 1회 반복 = 1세트당 12개 * 4 세트

Shell
Shell

Learning_rate (학습률, η , eta)

training 되는 양 또는 단계, 오류의 양을 추정,
미분 기울기의 이동 step
– lr값이 작다 = 기울기의 이동 step의 간격이 작아진다 = 학습속도가 느리다
= 학습의 반복수가적을 경우 Minima에 도달전에 끝날수 있음 = cost 값의 변화가 없는 경우  

– lr값이 크다 = 기울기의 이동 step의 간격이 커진다 =  너무 값이 커지면 반대쪽 그래프로 이동하여 그래프를 벗어나는 결과 값을 도출될 수 있음(overshooting)

딥러닝 NN (Neural Networks)은 학습과정(weight를 조정하는 과정)에서 SGD알고리즘을 사용한다.

SGD(Stochastic gradient descent)는 Loss함수계산시 전체데이터(Batch)대신 일부데이터(Mini-Batch)를 사용하여
계산속도향상, 메모리부족해결한 알고리즘.
이를 여러번 수행하면 BGD (Batch gradient descent)로 수렴한고, 오히려 Local Minima에 빠지지 않고 더 좋은 방향으로 Global Minima에 수렴하는데 도움이 된다.
변형 알고리즘으로 Navice SGD, Momentum, NAG, Adagrad, AdaDelta, RMSprop등이 있다.

이런 SGD에서 가중치를 업데이트할때 사용되는 기준점 중 하나가 Learning rate이다.
정확한 기준점을 알고 있어야 정확도를 높일 수가 있다.

https://www.researchgate.net/figure/Changes-in-the-loss-function-vs-the-epoch-by-the-learning-rate-40_fig2_341609757

https://wandb.ai/onesixx/kaggle_cowboy_outfits/runs/25x8bwd3

Shell

train.py

Shell
~/my/git/mmdetection/tools/train.py
Categories: vision

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x