该代码的结构和一些基本部分是根据完整的堆栈深度学习(FSDL)改编的。
您可以在随附的演示中查看此项目,并在此笔记本中运行代码。
/cloud文件夹模仿将数据存储在云中。在现实世界设置中,数据集将存储在云存储服务(例如Amazon S3)上。实际代码属于/codebase文件夹中。培训代码(下/codebase/training )与包括模型,网络,数据集和其他实用程序(Unewer /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]