중국어 버전 中文版
Pytorch-Lightning은 매우 편리한 라이브러리입니다. Pytorch의 추상화 및 포장으로 볼 수 있습니다. 장점은 강한 재사용 성, 쉬운 유지 보수, 명확한 논리 등입니다. 단점은 너무 무겁고 배우고 이해하는 데 약간의 시간이 필요하다는 것입니다. 또한 모델과 교육 코드를 직접 바인딩하므로 여러 모델 및 데이터 세트 파일을 가진 실제 프로젝트에는 적합하지 않습니다. 데이터 모듈 설계에 대해서도 마찬가지입니다. Dataloader 및 Custom DataSets와 같은 것들의 강력한 결합은 비슷한 문제를 일으 킵니다. 동일한 코드가 여기저기서 취소되어 붙여 넣습니다.
많은 탐험과 연습을 한 후, 나는 다음 템플릿을 요약했는데, 이는 또한 pytorch-lightning의 추상화 일 수도 있습니다. 첫 번째 버전에서는 모든 템플릿 내용이 루트 폴더 아래에 있습니다. 그러나 한 달 이상 사용한 후 다양한 유형의 프로젝트에 대해 더 지정된 템플릿이 코딩 효율성을 높일 수 있음을 발견했습니다. 예를 들어, 분류 및 초고 해상도 작업에는 모두 고정 된 수요 지점이 있습니다. 특수 템플릿을 직접 수정하여 프로젝트 코드를 더 빨리 구현할 수 있으며 일부 피할 수있는 버그도 줄었습니다.
** 현재, 이것은 여전히 새로운 라이브러리이기 때문에이 두 개의 템플릿 만 있습니다. 그러나 나중에 다른 프로젝트에 적용 할 때 새로운 특수 템플릿도 추가됩니다. 작업 에이 템플릿을 사용한 경우 (예 : NLP, GAN, 음성 인식 등) PR을 제출하여 더 많은 사람들이 사용할 수 있도록 템플릿을 라이브러리에 통합 할 수 있습니다. 작업이 아직 목록에없는 경우 classification 템플릿에서 시작하는 것이 좋습니다. 템플릿의 대부분의 기본 논리와 코드가 동일하기 때문에 매우 빠르게 수행 할 수 있습니다. **
이 코드 스타일 세트를 시도해 볼 수 있습니다. 익숙해지면 재사용하는 것이 매우 편리하며 구멍으로 돌아 오는 것은 쉽지 않습니다. 더 자세한 설명과 Pytorch-Lightning에 대한 완전한 가이드는이 기사 Zhihu 블로그에서 찾을 수 있습니다.
root-
|-data
|-__init__.py
|-data_interface.py
|-xxxdataset1.py
|-xxxdataset2.py
|-...
|-model
|-__init__.py
|-model_interface.py
|-xxxmodel1.py
|-xxxmodel2.py
|-...
|-main.py
|-utils.py
설치가 필요하지 않습니다. 직접 git clone https://github.com/miracleyoo/pytorch-lightning-template.git 실행하여 지역 위치로 복제하십시오. classification 와 같은 문제 유형을 선택하고 해당 템플릿을 프로젝트 디렉토리에 복사하십시오.
루트 디렉토리에서는 main.py 와 utils.py 입니다. 전자는 코드의 입구이고 후자는 지원 파일입니다.
data 와 modle 폴더 모두에 패키지로 만들기 위해 __init__.py 파일이 있습니다. 이런 식으로 수입이 쉬워집니다.
class DInterface(pl.LightningDataModule): data_interface 에서 모든 다른 customeized 데이터 세트 파일의 인터페이스로 작동합니다. 해당 데이터 세트 클래스는 __init__() 함수로 가져옵니다. Instantiation은 setup() 및 train_dataloader , val_dataloader , test_dataloader 함수에서 수행됩니다.
마찬가지로, 클래스 class MInterface(pl.LightningModule): model_interface 에서 생성되어 모든 모델 파일의 인터페이스로 작동합니다. 해당 모델 클래스는 __init__() 함수로 가져옵니다. 인터페이스에서 수정해야 할 유일한 것은 configure_optimizers , training_step , validation_step 과 같은 함수입니다. 모든 모델에 대한 하나의 인터페이스와 차이는 Args에서 처리됩니다.
main.py 다음과 같은 작업에만 책임이 있습니다.
main.py 파일에 구문 분석 항목을 직접 추가 할 수 있습니다. 예를 들어, random_arg 라는 문자열 인수가 있습니다. parser.add_argument('--random_arg', default='test', type=str) 는 main.py Interfacecallback 기능을 선택하십시오.MInterface , DInterface , Trainer 。지느러미.
주의를 기울여야 할 한 가지는 MInterface 와 DInterface 인수를 간단히 지정하여 새로 추가 된 모델과 데이터 세트를 자동으로 구문 분석 할 수 있다는 것입니다. --model_name 및 --dataset 간단히 지정하여 모델/데이터 세트 파일에 Snake Case (예 : standard_net.py StandardNet 를 사용하고 Camel Case와 같은 Camel Case와 동일한 내용을 사용합니다.
data 폴더에 대해서도 마찬가지입니다.
모델과 데이터 세트의 이름 지정을 제한하는 것처럼 보이지만 코드를 쉽게 읽고 이해할 수 있습니다. 구문 분석 문제를 피하려면이 시점에주의를 기울이십시오.
이 템플릿을 사용하고 연구에 도움이되면 우리의 논문을 인용하는 것을 고려하십시오.
@article{ZHANG2023126388,
title = {Neuromorphic high-frequency 3D dancing pose estimation in dynamic environment},
journal = {Neurocomputing},
volume = {547},
pages = {126388},
year = {2023},
issn = {0925-2312},
doi = {https://doi.org/10.1016/j.neucom.2023.126388},
url = {https://www.sciencedirect.com/science/article/pii/S0925231223005118},
author = {Zhongyang Zhang and Kaidong Chai and Haowen Yu and Ramzi Majaj and Francesca Walsh and Edward Wang and Upal Mahbub and Hava Siegelmann and Donghyun Kim and Tauhidur Rahman},
keywords = {Event Camera, Dynamic Vision Sensor, Neuromorphic Camera, Simulator, Dataset, Deep Learning, Human Pose Estimation, 3D Human Pose Estimation, Technology-Mediated Dancing},
}
@InProceedings{Zhang_2022_WACV,
author = {Zhang, Zhongyang and Xu, Zhiyang and Ahmed, Zia and Salekin, Asif and Rahman, Tauhidur},
title = {Hyperspectral Image Super-Resolution in Arbitrary Input-Output Band Settings},
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) Workshops},
month = {January},
year = {2022},
pages = {749-759}
}