이 코드의 구조와 일부 기본 부분은 FSDL (Full Stack Deep Learning)에서 조정됩니다.
이 프로젝트가 동행 한 데모 및 게시물 에서이 프로젝트를 보거나이 노트북에서 코드를 실행할 수 있습니다.
/cloud 폴더는 클라우드에 데이터 저장을 모방합니다. 실제 설정에서 데이터 세트는 Amazon S3와 같은 클라우드 스토리지 서비스에 저장됩니다. 실제 코드는 /codebase 폴더에 있습니다. 교육 코드 (Under /codebase/training )와 모델, 네트워크, 데이터 세트 및 기타 유틸리티 (Under /codebase/font_classifier )를 포함한 다른 모든 것 사이에는 분명한 분리가 있습니다. 이 분리로 인해 시스템 배포가 더 쉽고 깨끗합니다.
FSDL 코스에 제시된 바와 같이, 데이터를 제어하기 위해서는 GIT에서 실제 이미지를 확인하지 않습니다. 대신, 데이터 인스턴스 당 하나의 항목이 포함 된 JSON 파일이 작성됩니다. 각 항목은 데이터 인스턴스 URL (클라우드 스토리지), 레이블 및 기타 메타 데이터로 구성됩니다. 이 JSON 파일은 GIT가 추적하는 것이므로 해당 GIT 커밋을 확인하여 필요한 버전으로 데이터를 얻을 수 있습니다. 데이터 세트가 커짐에 따라 JSON 파일의 크기가 커지면 GIT-LFS를 사용할 수 있습니다. 이러한 데이터 처리 방법의 이점 :
재현성 : Git에 의해 추적되므로 일주일 전에 또는 1 년 전에 사용한 정확한 데이터를 얻을 수 있습니다.
확장 성 : 데이터 세트는 새로운 데이터를 통합하기 위해 확장 할 수 있으며 이전 테스트 세트 인스턴스를 교육 인스턴스 및 Vise Versa로 사용하지 않도록 할 수 있습니다.
이식성 : 프로젝트에 필요한 디스크 공간을 줄여서 GIT 또는 기타 수단보다 휴대용이 가능합니다.
로컬로 코드를 실행하려면 :
요구 사항 설치 :
$ pip install -r requirements.txt릴리스에서 /클라우드 폴더에서 데이터를 가져오고 추출합니다.
$ wget ' https://github.com/mhmoodlan/arabic-font-classification/releases/download/v0.1.0/rufa.tar.gz ' -O ./cloud/rufa.tar.gz
$ cd /cloud && tar -xzf ' rufa.tar.gz ' http://0.0.0:8000/에서 /cloud 폴더에서 간단한 서버를 돌립니다.
$ cd /cloud && python -m http.server실험 실행 :
$ cd /codebase/code && export PYTHONPATH=. && python training/run_experiment.py --save
' {"dataset": "RuFaDataset", "model": "FontModel", "network": "cnn", "train_args": {"epochs": 6, "mode": "test", "validate_mismatch": "False"}} ' 'train_args' 의 'mode' 구성은 'val' 또는 'test' 두 가지 값 중 하나를 취합니다.
'val' 모드 : 모델은 합성 데이터에 대해서만 훈련 및 검증됩니다. 'validate_mismatch' true로 설정되면 실제 데이터의 하위 집합에서 추가 데이터 불일치 유효성 검사가 수행됩니다.
'test' 모드 : 모델은 전체 합성 데이터 + 'val' 모드에서 데이터 불일치 검증에 사용되는 실제 데이터의 일부에 대해 교육됩니다. 훈련 후, 최종 일반화 오류는 실제 데이터의 나머지 부분 에보 고됩니다.
이 명령은 다음과 유사한 것을 출력해야합니다.
Epoch 1/6
1254/1254 [==============================] - 119s 95ms/step - loss: 0.3185 - accuracy: 0.8751
Epoch 2/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0539 - accuracy: 0.9918
Epoch 3/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0386 - accuracy: 0.9953
Epoch 4/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0270 - accuracy: 0.9976
Epoch 5/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0264 - accuracy: 0.9973
Epoch 6/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0246 - accuracy: 0.9979
Training took 323.854642 s
In test mode, mismatch data isn't validated since it's used during training.
14/14 [==============================] - 0s 10ms/step - loss: 0.2316 - accuracy: 0.9712
Test score: [0.2316255271434784, 0.971222996711731]