PyTorch3D 입문 강좌(영어)

PyTorch3D를 간략하게 소개하는 영상입니다.

PyTorch3D는 올해 2월에 3차원 대상을 다루기 위한 PyTorch의 공식 라이브러리로 발표되었지요.

PyTorch3D 공식홈 https://pytorch3d.org/

https://www.youtube.com/watch?v=Pph1r-x9nyY

Posted by uniqueone
,

안녕하세요, cognex deep learning lab의 이호성입니다.

PyTorch를 사용하여 실험 코드를 작성하고 돌려서 결과를 얻는데, 매번 같은 코드를 돌려도 다른 실험 결과가 나오는 것을 다들 경험해보셨을 텐데요,

아무리 random seed를 고정해도 학습 결과가 달라져서, 이 부분을 한번 파봤습니다. PyTorch의 공식 문서(https://pytorch.org/docs/stable/notes/randomness.html)와 PyTorch의 Issue를 기반으로 한번 CIFAR-10 ResNet에 대해 실험을 해보고, 이를 글로 작성하여 정리하였습니다.

블로그 글: https://hoya012.github.io/blog/reproducible_pytorch/
실험 코드(colab): https://colab.research.google.com/drive/1zoEgSwQ40uXBys83X7ajW2oInve91S4w?usp=sharing

저는 torch.manual_seed 와 numpy.random.seed 정도만 사용했었는데 고려해야할 것들이 더 많은 점에 놀랐습니다. ㅎㅎ 공부하시는데 도움이 되었으면 좋겠습니다. 감사합니다!

Posted by uniqueone
,

https://www.facebook.com/groups/PyTorchKR/permalink/1681245292015145/

안녕하세요,

학습을 끝낸 모델을 저장했다가 다시 불러오면 accuracy가 현저히 떨어지는 문제가 발생하는데 도무지 원인을 알 수가 없어 질문드립니다.

현재 pre-trained model을 불러와 own train dataset과 validation dataset으로 학습(fine-tuning)을 끝낸 후, test dataset에 대해 classification을 시도하고 있습니다.

vgg16과 resnet152에 대해서는 validation dataset에서만큼 test dataset에서도 문제없이 accuracy를 얻어냈는데, inception-v3를 사용하면 validation에서는 97-98%를 보이던 모델의 accuracy가 test에서 20% 정도밖에 나오질 않습니다.

혹시나해서 학습이 끝나고 메모리 날리지 않은 상태에서 trained model에 direct로 test dataset을 넣어봤을 때는 accuracy가 잘나오고 있습니다.. 그래서 아마 저장이나 불러오는 과정에서의 문제가 있는 것 같은데, 혹시 inception-v3에서는 따로 저장해줘야 하는 요소가 더 있는건가요?

* 학습이 끝난 model과 optimizer 모두 state_dict로 저장했고, 나중에 불러올 때는 처음에 학습할 때 세팅한 model frame을 만들고 FC layer에서 최종 출력되는 class도 변경하고서 load_state_dict를 적용했습니다.

Posted by uniqueone
,

PyTorch 기초

https://github.com/vahidk/EffectivePyTorch

Posted by uniqueone
,

Get started with PyTorch, Cloud TPUs, and Colab
Joe Spisak : https://medium.com/pytorch/get-started-with-pytorch-cloud-tpus-and-colab-a24757b8f7fc
#PyTorch #Colab #DeepLearning

Posted by uniqueone
,

안녕하세요

PyTorch를 시작한지 얼마 안되는 뉴비입니다.

PyTorch로 대표적인 논문 모델들을 구현하며 처음 겪었던 어려웠던 점은 '레포 구조 파악'이었습니다.

그래서 가볍게나마 저와 같은 뉴비들을 위해 가벼운 자료를 만들어봤습니다. PyTorch로 구현을 할 때, 파일 명과 그 용도를 가볍게 정리해봤습니다.

부족한만큼 틀린 내용은 호되게 댓글로 혼내주시면 감사하겠습니다. 제가 알면 더 좋을 내용들도 알려주시면 감사하겠습니다.

항상 커뮤니티에서 많이 배워갑니다. 감사합니다.

[https://web.facebook.com/AI.Lookbook/posts/492964571384277](https://web.facebook.com/AI.Lookbook/posts/492964571384277)

Posted by uniqueone
,

[Pytorch] 초보가 초보에게 : 어떻게 파일을 나눠야할까?

Kaggle로 ML과 시각화를 하던 저에게 Pytorch는 조금 큰 장벽이었습니다. Jupyter로 모든 파일을 작성하기는 어렵고, 그런데 오픈소스 깃헙 레포에는 파일이 너무 많고...

그래서 한 동안 일반적인 딥러닝 레포 구조 파악도 힘들었던 얼마전의 저를 떠올리며 새벽감성으로 가볍게 자료를 만들었습니다.

Simple하게 슥 읽어볼 수 있는 정도로 만들었습니다. Pytorch 초심자분들 모두 힘냅시다!!

slideshare : https://www.slideshare.net/SubinAn1/pytorch-implementation

---

무급으로 이렇게 심플템플릿+강의자료 만들다니...좀 더 실력을 키워 Pytorch 강의를 가야겠습니다. 아니면 조만간 유튜브 재시작은 어떨까요?? ㅎㅎ

#Pytorch #subinium #AI_Lookbook

Posted by uniqueone
,

https://www.facebook.com/groups/PyTorchKR/permalink/1620762534730088/

Pytorch로 image classification 작업하는 분들을 위해 좋은 github을 소개합니다.

https://github.com/rwightman/pytorch-image-models

(pip install timm이나 git clone https://github.com/rwightman/pytorch-image-models 등으로 사용하실 수 있습니다.)

이전에도 efficientnet code에 대해서 소개해드린 코드베이스입니다.

EfficientNet, ResNet, HRNet, SelecSLS등 다양한 모델들과 pretrained weight들을 갖추고 있으며, 모듈러 구조로 다양한 batchnorm, activation, 트레이닝트릭등(Autoaugment 등) 을 쉽게 사용할 수 있도록 짜여있습니다.

개인이 만든것이라고 생각하기에는 놀라울정도로 다양한 모델들과 아키텍쳐를 갖추고 있는데요, maintainer 본인이 여러 업무나 kaggle대회를 진행하거나 논문들을 살펴보면서 맞이하는 코드등을 쌓아가면서 코드를 형성했다고합니다.

 

최근에 네이버 클로버ai에서 resnet을 재구성하여 이전에 sota였던 efficientnet을 능가하는 assemblenet이 나온 후, 여기 maintainer도 tensorflow로 구성되어있던 원래의 코드를 pytorch로 구현하는 작업에 매진하고 있는 모양입니다.

현재는 selective kernel network를 구현하고 있는데요 이미 다양한 최적화, 모듈화가 가능한 자신의 코드베이스에 맞게 재구성중인 모양입니다.

 

저 개인적으로는 해당 assemblenet 논문의 결론부에서 언급된 ECA- Net(efficient channel attention)을 나름대로 재구성해서 해당 github에 pull request를 보내놓은 상태입니다.

 

이 과정에서 원래 ECA 논문(https://arxiv.org/pdf/1910.03151.pdf)
의 잠재적인 한계에 봉착하였습니다.

 

ECA 원문에서는 channel간의 결과를 convolution할때 kernel size에 맞게 zero padding하게 됩니다.

그러나 채널들간의 관계는 인접한 픽셀이나 feature map과는 다르기 때문에 zero padding하는게 무의미하다고 생각하였습니다.

"첫"채널이나 "마지막"채널은 기하학적이거나 위상적인 의미를 지니지 않을 것이기 때문에 더 zeropadding하여 더 적은 channel과 convolution하기보다는 circular padding을 통해 모든 채널이 같은 갯수의 서로 다른 채널들과 convolution하는게 논리적으로 맞다고 생각합니다.

 

그러한 논리적 접근에 따라 circular ECA module을 구현하여 함께 pull request를 하였지만, 꼭 해당 코드에만 사용해야하는 것은 아니라 이러한 attention module(ECA든 cECA든) 이 적합하다고 생각하시는 분이라면 참고해서 쓰실 수있으셨으면 좋겠습니다.

 

ECA PR: https://github.com/rwightman/pytorch-image-models/pull/82

해당 repo를 fork하여 eca를 구현한 제 코드

https://github.com/VRandme/pytorch-image-models/tree/eca

 

ECA가 SE, CBAM등 여태까지 나온 대부분의 attention model보다 우수한 성능을 보여주었는데, 저는 아직도 spatial attention을 구현한 CBAM에 미련이 남습니다.

그래서 이 코드가 정리되면 CBAM의 채널 attention부분만 ECA로 교체한 ECABAM?을 구현해볼 예정입니다.

안타깝게도 아직은 ImageNet수준의 트레이닝/테스팅을 수행할만한 여건이 되지 않아서 유의미한 진행은 어려울것같은데요, 곧 google collab에서 9.99$/mo로 무료 서비스와 차별화된 서비스를 제공한다고하니 한국에도 출시되면 알아봐야겠습니다.

관심있는 분들 살펴봐주시고 잘못된 부분등은 얼마든지 지적해주시기바랍니다. 감사합니다.

@Jong Chan Park

Posted by uniqueone
,