該代碼的結構和一些基本部分是根據完整的堆棧深度學習(FSDL)改編的。
您可以在隨附的演示中查看此項目,並在此筆記本中運行代碼。
/cloud文件夾模仿將數據存儲在雲中。在現實世界設置中,數據集將存儲在雲存儲服務(例如Amazon S3)上。實際代碼屬於/codebase文件夾中。培訓代碼(下/代碼庫 / /codebase/training /codebase/font_classifier )在內的所有內容之間存在明顯的分離。這種分離使系統部署變得更加清潔。
如FSDL課程中所述,為了控制數據,我們不會在GIT中檢查實際圖像。相反,創建一個JSON文件,每個數據實例包含一個條目。每個條目都由數據實例URL(雲存儲),標籤和其他元數據組成,如果相關。該JSON文件是GIT跟踪的內容,因此我們可以通過檢查相應的GIT commit以所需的版本獲取數據。隨著數據集變得更大,JSON文件的大小變得更大,在這種情況下,可以使用git-lfs。這種處理數據的好處:
可重複性:由於它是通過GIT跟踪的,因此我們可以獲得一周前或一年前使用的確切數據。
擴展性:可以擴展數據集以合併新數據,同時確保永遠不要將先前的測試集實例用作培訓實例,反之亦然。
可移植性:減少項目所需的磁盤空間,從而使其可在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 '在/cloud ://0.0.0.0.0:8000/:
$ 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'設置為真,則在真實數據的子集上執行更多數據不匹配驗證。
在'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]