From 7dfc6f373e2a65a78e0f99454937887405802999 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 12:01:26 +0100 Subject: [PATCH 01/10] adding a TODO --- src/captcha/CaptchaGenerator.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/captcha/CaptchaGenerator.py b/src/captcha/CaptchaGenerator.py index affc3f6ebcf..97200acd113 100644 --- a/src/captcha/CaptchaGenerator.py +++ b/src/captcha/CaptchaGenerator.py @@ -15,7 +15,9 @@ class CaptchaGenerator: def createAndSaveCaptchas(self): self._prepareDataDir() - for _ in range(self.numCaptchas): + for i in range(self.numCaptchas): + # FK-TODO: use https://github.com/tqdm/tqdm + print(f'saving captcha {i+1}/{self.numCaptchas}') self._createAndSaveCaptcha() def _prepareDataDir(self): From f1ad511850a7ab19de7c63823bc427b567e44f4e Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 14:23:23 +0100 Subject: [PATCH 02/10] refactoring --- src/captcha.ipynb | 119 +++++++++++++++++++++++++++-------- src/captcha/CaptchaReader.py | 2 +- src/captcha/ModelDAO.py | 8 --- 3 files changed, 93 insertions(+), 36 deletions(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index 3fffbb00435..196fbbd6b31 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -23,6 +23,61 @@ "## Setup" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.argv = sys.argv[:1]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def isInColab():\n", + " try:\n", + " import colab\n", + " return True\n", + " except:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "inColab = isInColab()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if inColab:\n", + " branch = 'read-captcha'\n", + " !git clone https://github.com/KnollFrank/HowBadIsMyBatch.git\n", + " !cd HowBadIsMyBatch; git checkout $branch" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if inColab:\n", + " sys.path.insert(0, '/content/HowBadIsMyBatch/src')" + ] + }, { "cell_type": "code", "execution_count": null, @@ -46,6 +101,36 @@ "from captcha.CaptchaShape import CaptchaShape" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "class GoogleDriveManager:\n", + " \n", + " _googleDriveFolder = Path('/content/gdrive')\n", + " _baseFolder = _googleDriveFolder / 'MyDrive/CAPTCHA/models/'\n", + "\n", + " @staticmethod\n", + " def mount():\n", + " from google.colab import drive\n", + " drive.mount(str(GoogleDriveManager._googleDriveFolder))\n", + "\n", + " @staticmethod\n", + " def uploadFolderToGoogleDrive(folder):\n", + " !zip -r {folder}.zip {folder}/\n", + " !cp {folder}.zip {GoogleDriveManager._baseFolder}\n", + "\n", + " @staticmethod\n", + " def downloadFolderFromGoogleDrive(folder):\n", + " !cp {GoogleDriveManager._baseFolder}/{folder}.zip .\n", + " !rm -rf {folder}\n", + " !unzip {folder}.zip\n" + ] + }, { "cell_type": "code", "execution_count": null, @@ -173,17 +258,6 @@ "## Preparation" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "NZrKXF6P3MGY" - }, - "outputs": [], - "source": [ - "inColab = 'google.colab' in str(get_ipython())" - ] - }, { "cell_type": "code", "execution_count": null, @@ -196,19 +270,6 @@ " GoogleDriveManager.mount()" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "S_4hl4S4BmZK" - }, - "outputs": [], - "source": [ - "if inColab:\n", - " !cp {GoogleDriveManager._baseFolder}/captchas.zip .\n", - " !unzip captchas.zip" - ] - }, { "cell_type": "code", "execution_count": null, @@ -217,7 +278,7 @@ }, "outputs": [], "source": [ - "modelDAO = ModelDAO(inColab)\n", + "modelDAO = ModelDAO()\n", "charNumConverter = CharNumConverter(CaptchaGenerator.characters)\n", "predictionsDecoder = PredictionsDecoder(CaptchaGenerator.captchaLength, charNumConverter.num_to_char)\n", "captchaShape = CaptchaShape()\n", @@ -334,7 +395,9 @@ }, "outputs": [], "source": [ - "modelDAO.saveModel(model)" + "modelDAO.saveModel(model)\n", + "if inColab:\n", + " GoogleDriveManager.uploadFolderToGoogleDrive(model.name)" ] }, { @@ -525,7 +588,9 @@ "metadata": {}, "outputs": [], "source": [ - "modelDAO.saveModel(model)" + "modelDAO.saveModel(model)\n", + "if inColab:\n", + " GoogleDriveManager.uploadFolderToGoogleDrive(model.name)" ] } ], diff --git a/src/captcha/CaptchaReader.py b/src/captcha/CaptchaReader.py index 460083f7f87..94dbc7f34fa 100644 --- a/src/captcha/CaptchaReader.py +++ b/src/captcha/CaptchaReader.py @@ -28,4 +28,4 @@ class CaptchaReader: return PredictionsDecoder(CaptchaGenerator.captchaLength, CharNumConverter(CaptchaGenerator.characters).num_to_char).decode_batch_predictions(preds) def _createPredictionModel(self): - return ModelFactory.createPredictionModel(ModelDAO(inColab=False).loadModel(self.modelFilepath)) + return ModelFactory.createPredictionModel(ModelDAO().loadModel(self.modelFilepath)) diff --git a/src/captcha/ModelDAO.py b/src/captcha/ModelDAO.py index 168d9c37ee8..6b095a249ef 100644 --- a/src/captcha/ModelDAO.py +++ b/src/captcha/ModelDAO.py @@ -1,20 +1,12 @@ from tensorflow import keras -from captcha.GoogleDriveManager import GoogleDriveManager import shutil class ModelDAO: - def __init__(self, inColab): - self.inColab = inColab - def saveModel(self, model): shutil.rmtree(model.name, ignore_errors = True) model.save(model.name) - if self.inColab: - GoogleDriveManager.uploadFolderToGoogleDrive(model.name) def loadModel(self, modelFilepath): - if self.inColab: - GoogleDriveManager.downloadFolderFromGoogleDrive(modelFilepath) return keras.models.load_model(modelFilepath) From ebf9633723074ed838c017072f02ea657a783b33 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 15:17:57 +0100 Subject: [PATCH 03/10] updating --- src/captcha.ipynb | 99 ++++++++++++++++++++++++++++------------- src/captcha/ModelDAO.py | 6 +-- 2 files changed, 72 insertions(+), 33 deletions(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index 196fbbd6b31..5c7adb68f4c 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -25,8 +25,10 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, + "execution_count": null, + "metadata": { + "id": "ioGwCR3Xl31V" + }, "outputs": [], "source": [ "import sys\n", @@ -35,8 +37,10 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, + "execution_count": null, + "metadata": { + "id": "l-coMy_2l31X" + }, "outputs": [], "source": [ "def isInColab():\n", @@ -49,8 +53,10 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "execution_count": null, + "metadata": { + "id": "goO0feQwl31Y" + }, "outputs": [], "source": [ "inColab = isInColab()" @@ -59,7 +65,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "nsE9VWCel31Z" + }, "outputs": [], "source": [ "if inColab:\n", @@ -71,13 +79,27 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "l9qhlDVNl31b" + }, "outputs": [], "source": [ - "if inColab:\n", - " sys.path.insert(0, '/content/HowBadIsMyBatch/src')" + "import os\n", + "srcPath = '/content/HowBadIsMyBatch/src' if inColab else os.getcwd()" ] }, + { + "cell_type": "code", + "source": [ + "if inColab:\n", + " sys.path.insert(0, srcPath)" + ], + "metadata": { + "id": "c-2fE6vZsD7a" + }, + "execution_count": null, + "outputs": [] + }, { "cell_type": "code", "execution_count": null, @@ -86,7 +108,6 @@ }, "outputs": [], "source": [ - "import os\n", "import numpy as np\n", "from pathlib import Path\n", "import tensorflow as tf\n", @@ -104,7 +125,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "BWqAvnVOl31d" + }, "outputs": [], "source": [ "from pathlib import Path\n", @@ -223,7 +246,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "HEKh6eval31k" + }, "outputs": [], "source": [ "def printLayers(model):\n", @@ -249,6 +274,21 @@ " return accuracy.result().numpy()" ] }, + { + "cell_type": "code", + "source": [ + "def saveModel(srcPath, modelDAO, model):\n", + " modelFilepath = f'{srcPath}/captcha/{model.name}'\n", + " modelDAO.saveModel(model, modelFilepath)\n", + " if inColab:\n", + " GoogleDriveManager.uploadFolderToGoogleDrive(model.name)" + ], + "metadata": { + "id": "WG2rSl9nxZQ0" + }, + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -303,6 +343,7 @@ "outputs": [], "source": [ "if inColab:\n", + " !apt-get update\n", " !sudo apt install ttf-mscorefonts-installer\n", " !sudo fc-cache -f\n", " !fc-match Arial" @@ -318,8 +359,8 @@ "source": [ "# \"We generate 200,000 images for base model pre-training\"\n", "captchaGenerator = CaptchaGenerator(\n", - " numCaptchas = 50, # 50, # 200000,\n", - " dataDir = Path(\"captchas/generated/VAERS/\"))" + " numCaptchas = 200000, # 50, # 200000,\n", + " dataDir = Path(srcPath + '/captchas/generated/VAERS/'))" ] }, { @@ -395,9 +436,7 @@ }, "outputs": [], "source": [ - "modelDAO.saveModel(model)\n", - "if inColab:\n", - " GoogleDriveManager.uploadFolderToGoogleDrive(model.name)" + "saveModel(srcPath, modelDAO, model)" ] }, { @@ -460,7 +499,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "qZvn1k2Ul31v" + }, "outputs": [], "source": [ "modelName, numTrainableLayers = 'MobileNetV3Small', 104\n", @@ -476,7 +517,7 @@ "outputs": [], "source": [ "# FK-TODO: DRY with VAERSFileDownloader\n", - "modelFilepath = f'{os.getcwd()}/captcha/{modelName}'\n", + "modelFilepath = f'{srcPath}/captcha/{modelName}'\n", "model = modelDAO.loadModel(modelFilepath)\n", "model.summary(show_trainable=True)" ] @@ -584,21 +625,19 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], "source": [ - "modelDAO.saveModel(model)\n", - "if inColab:\n", - " GoogleDriveManager.uploadFolderToGoogleDrive(model.name)" - ] + "saveModel(srcPath, modelDAO, model)" + ], + "metadata": { + "id": "FpJTHU6dxOVy" + }, + "execution_count": null, + "outputs": [] } ], "metadata": { "accelerator": "GPU", "colab": { - "collapsed_sections": [], - "name": "captcha.ipynb", "private_outputs": true, "provenance": [] }, @@ -623,4 +662,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file diff --git a/src/captcha/ModelDAO.py b/src/captcha/ModelDAO.py index 6b095a249ef..fe57bfd71cc 100644 --- a/src/captcha/ModelDAO.py +++ b/src/captcha/ModelDAO.py @@ -4,9 +4,9 @@ import shutil class ModelDAO: - def saveModel(self, model): - shutil.rmtree(model.name, ignore_errors = True) - model.save(model.name) + def saveModel(self, model, modelFilepath): + shutil.rmtree(modelFilepath, ignore_errors = True) + model.save(modelFilepath) def loadModel(self, modelFilepath): return keras.models.load_model(modelFilepath) From 295d6affb7f50b70daaa0f770dee067ec9258b53 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 15:34:38 +0100 Subject: [PATCH 04/10] updating --- src/captcha.ipynb | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index 5c7adb68f4c..bc0ae1d8bf2 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -143,9 +143,9 @@ " drive.mount(str(GoogleDriveManager._googleDriveFolder))\n", "\n", " @staticmethod\n", - " def uploadFolderToGoogleDrive(folder):\n", - " !zip -r {folder}.zip {folder}/\n", - " !cp {folder}.zip {GoogleDriveManager._baseFolder}\n", + " def uploadFolderToGoogleDrive(folder, zippedFolderName):\n", + " !zip -r {zippedFolderName}.zip {folder}/\n", + " !cp {zippedFolderName}.zip {GoogleDriveManager._baseFolder}\n", "\n", " @staticmethod\n", " def downloadFolderFromGoogleDrive(folder):\n", @@ -281,7 +281,7 @@ " modelFilepath = f'{srcPath}/captcha/{model.name}'\n", " modelDAO.saveModel(model, modelFilepath)\n", " if inColab:\n", - " GoogleDriveManager.uploadFolderToGoogleDrive(model.name)" + " GoogleDriveManager.uploadFolderToGoogleDrive(modelFilepath, model.name)" ], "metadata": { "id": "WG2rSl9nxZQ0" @@ -359,7 +359,7 @@ "source": [ "# \"We generate 200,000 images for base model pre-training\"\n", "captchaGenerator = CaptchaGenerator(\n", - " numCaptchas = 200000, # 50, # 200000,\n", + " numCaptchas = 50, # 50, # 200000,\n", " dataDir = Path(srcPath + '/captchas/generated/VAERS/'))" ] }, @@ -439,6 +439,17 @@ "saveModel(srcPath, modelDAO, model)" ] }, + { + "cell_type": "code", + "source": [ + "model.name" + ], + "metadata": { + "id": "fmpO6FpU0yHZ" + }, + "execution_count": null, + "outputs": [] + }, { "cell_type": "code", "execution_count": null, From ab3d5a87bf2cdd04a5e2fe9bcab6ca1bf2fa31fc Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 15:44:38 +0100 Subject: [PATCH 05/10] updating --- src/captcha.ipynb | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index bc0ae1d8bf2..b895465899d 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -439,17 +439,6 @@ "saveModel(srcPath, modelDAO, model)" ] }, - { - "cell_type": "code", - "source": [ - "model.name" - ], - "metadata": { - "id": "fmpO6FpU0yHZ" - }, - "execution_count": null, - "outputs": [] - }, { "cell_type": "code", "execution_count": null, @@ -576,7 +565,7 @@ }, "outputs": [], "source": [ - "train_dataset, validation_dataset, test_dataset = getTrainValidationTestDatasets(Path(\"captcha/captchas/VAERS/\"), datasetFactory)" + "train_dataset, validation_dataset, test_dataset = getTrainValidationTestDatasets(Path(f\"{srcPath}/captcha/captchas/VAERS/\"), datasetFactory)" ] }, { From c6d8b04298546d0bb2ae9a573ed04fea0b9fb3fc Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 15:50:38 +0100 Subject: [PATCH 06/10] refactoring --- src/captcha.ipynb | 54 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index b895465899d..ae9cb430cb9 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -90,15 +90,15 @@ }, { "cell_type": "code", - "source": [ - "if inColab:\n", - " sys.path.insert(0, srcPath)" - ], + "execution_count": null, "metadata": { "id": "c-2fE6vZsD7a" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "if inColab:\n", + " sys.path.insert(0, srcPath)" + ] }, { "cell_type": "code", @@ -274,21 +274,6 @@ " return accuracy.result().numpy()" ] }, - { - "cell_type": "code", - "source": [ - "def saveModel(srcPath, modelDAO, model):\n", - " modelFilepath = f'{srcPath}/captcha/{model.name}'\n", - " modelDAO.saveModel(model, modelFilepath)\n", - " if inColab:\n", - " GoogleDriveManager.uploadFolderToGoogleDrive(modelFilepath, model.name)" - ], - "metadata": { - "id": "WG2rSl9nxZQ0" - }, - "execution_count": null, - "outputs": [] - }, { "cell_type": "markdown", "metadata": { @@ -325,6 +310,19 @@ "datasetFactory = DatasetFactory(captchaShape, charNumConverter.char_to_num, batch_size = 64)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def saveModel(model):\n", + " modelFilepath = f'{srcPath}/captcha/{model.name}'\n", + " modelDAO.saveModel(model, modelFilepath)\n", + " if inColab:\n", + " GoogleDriveManager.uploadFolderToGoogleDrive(modelFilepath, model.name)" + ] + }, { "cell_type": "markdown", "metadata": { @@ -436,7 +434,7 @@ }, "outputs": [], "source": [ - "saveModel(srcPath, modelDAO, model)" + "saveModel(model)" ] }, { @@ -625,14 +623,14 @@ }, { "cell_type": "code", - "source": [ - "saveModel(srcPath, modelDAO, model)" - ], + "execution_count": null, "metadata": { "id": "FpJTHU6dxOVy" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "saveModel(model)" + ] } ], "metadata": { @@ -662,4 +660,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} From de2f698557b5527354e4750f8bd49d36e0ca5e25 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 15:51:39 +0100 Subject: [PATCH 07/10] blub --- src/captcha.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index ae9cb430cb9..51f3c498cd3 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -357,7 +357,7 @@ "source": [ "# \"We generate 200,000 images for base model pre-training\"\n", "captchaGenerator = CaptchaGenerator(\n", - " numCaptchas = 50, # 50, # 200000,\n", + " numCaptchas = 200000, # 50, # 200000,\n", " dataDir = Path(srcPath + '/captchas/generated/VAERS/'))" ] }, From ccf00da0cda57d476d4a45ee6c0bded827a013a6 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 21:54:43 +0100 Subject: [PATCH 08/10] adding a progress bar (tqdm) --- environment.yml | 1 + src/captcha/CaptchaGenerator.py | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/environment.yml b/environment.yml index 59c3150f39c..d2542baa7cc 100644 --- a/environment.yml +++ b/environment.yml @@ -16,6 +16,7 @@ dependencies: - nb_conda_kernels - pillow - openpyxl + - tqdm # - python-decouple # - selenium # - webdriver-manager diff --git a/src/captcha/CaptchaGenerator.py b/src/captcha/CaptchaGenerator.py index 97200acd113..3dcd06fe209 100644 --- a/src/captcha/CaptchaGenerator.py +++ b/src/captcha/CaptchaGenerator.py @@ -2,6 +2,7 @@ from PIL import Image, ImageDraw, ImageFont import random import string import shutil +from tqdm import tqdm class CaptchaGenerator: @@ -15,9 +16,7 @@ class CaptchaGenerator: def createAndSaveCaptchas(self): self._prepareDataDir() - for i in range(self.numCaptchas): - # FK-TODO: use https://github.com/tqdm/tqdm - print(f'saving captcha {i+1}/{self.numCaptchas}') + for _ in tqdm(range(self.numCaptchas)): self._createAndSaveCaptcha() def _prepareDataDir(self): From e14ef5802c7f028982b3df7ef21da427b171e3c8 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 16 Mar 2023 22:44:35 +0100 Subject: [PATCH 09/10] refactoring --- src/captcha.ipynb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/captcha.ipynb b/src/captcha.ipynb index 51f3c498cd3..7d6d774713e 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -143,10 +143,12 @@ " drive.mount(str(GoogleDriveManager._googleDriveFolder))\n", "\n", " @staticmethod\n", - " def uploadFolderToGoogleDrive(folder, zippedFolderName):\n", - " !zip -r {zippedFolderName}.zip {folder}/\n", - " !cp {zippedFolderName}.zip {GoogleDriveManager._baseFolder}\n", - "\n", + " def uploadFolderToGoogleDrive(folder):\n", + " basename = !basename {folder}\n", + " basename = basename[0]\n", + " !cd {folder}/..; zip -r {basename}.zip {basename}/\n", + " !cd {folder}/..; cp {basename}.zip {GoogleDriveManager._baseFolder}\n", + " \n", " @staticmethod\n", " def downloadFolderFromGoogleDrive(folder):\n", " !cp {GoogleDriveManager._baseFolder}/{folder}.zip .\n", @@ -320,7 +322,7 @@ " modelFilepath = f'{srcPath}/captcha/{model.name}'\n", " modelDAO.saveModel(model, modelFilepath)\n", " if inColab:\n", - " GoogleDriveManager.uploadFolderToGoogleDrive(modelFilepath, model.name)" + " GoogleDriveManager.uploadFolderToGoogleDrive(modelFilepath)" ] }, { From 40d2ed6cd1e819225d12b085c4c80b3d14c33fa6 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Sat, 18 Mar 2023 01:05:44 +0100 Subject: [PATCH 10/10] refactoring --- src/captcha.ipynb | 1 - src/captcha/GoogleDriveManager.py | 27 --------------------------- 2 files changed, 28 deletions(-) delete mode 100644 src/captcha/GoogleDriveManager.py diff --git a/src/captcha.ipynb b/src/captcha.ipynb index 7d6d774713e..4fb5052578e 100644 --- a/src/captcha.ipynb +++ b/src/captcha.ipynb @@ -111,7 +111,6 @@ "import numpy as np\n", "from pathlib import Path\n", "import tensorflow as tf\n", - "from captcha.GoogleDriveManager import GoogleDriveManager\n", "from captcha.CaptchaGenerator import CaptchaGenerator\n", "from captcha.CharNumConverter import CharNumConverter\n", "from captcha.DataSplitter import DataSplitter\n", diff --git a/src/captcha/GoogleDriveManager.py b/src/captcha/GoogleDriveManager.py deleted file mode 100644 index 3b622677801..00000000000 --- a/src/captcha/GoogleDriveManager.py +++ /dev/null @@ -1,27 +0,0 @@ -from pathlib import Path - - -class GoogleDriveManager: - - _googleDriveFolder = Path('/content/gdrive') - _baseFolder = _googleDriveFolder / 'MyDrive/CAPTCHA/models/' - - @staticmethod - def mount(): - from google.colab import drive - drive.mount(str(GoogleDriveManager._googleDriveFolder)) - - @staticmethod - def uploadFolderToGoogleDrive(folder): - pass - # FK-FIXME: - # !zip -r {folder}.zip {folder}/ - # !cp {folder}.zip {GoogleDriveManager._baseFolder} - - @staticmethod - def downloadFolderFromGoogleDrive(folder): - pass - # FK-FIXME: - # !cp {GoogleDriveManager._baseFolder}/{folder}.zip . - # !rm -rf {folder} - # !unzip {folder}.zip