{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!git clone https://github.com/ultralytics/yolov5","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"with open(\"/kaggle/working/yolov5/requirements.txt\", \"r\") as file:\n    content = file.read()\n    content = content.replace(\"numpy>=1.18.5\", \"numpy==1.22\")\n    with open(\"/kaggle/working/yolov5/requirements.txt\", \"w\") as f:\n        f.write(content)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!conda create -n py39 python=3.9 --yes\n\n!source activate py39\n\n!sudo rm /opt/conda/bin/python3\n!sudo ln -sf /opt/conda/envs/py39/bin/python3 /opt/conda/bin/python3\n\n!sudo rm /opt/conda/bin/python3.7\n!sudo ln -sf /opt/conda/envs/py39/bin/python3 /opt/conda/bin/python3.7\n\n!sudo rm /opt/conda/bin/python\n!sudo ln -s /opt/conda/envs/py39/bin/python3 /opt/conda/bin/python\n\n!export PATH=\"/opt/conda/envs/py39/bin:$PATH\"\n\n!echo 'export PATH=\"/opt/conda/envs/py39/bin:$PATH\"' >> ~/.bashrc\n\n!source ~/.bashrc\n\nimport os\nos.environ['PATH'] += \":/opt/conda/envs/py39/bin\"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!python -m pip install -U -r /kaggle/working/yolov5/requirements.txt","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install opencv-python-headless","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install scikit-learn","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install tensorboard","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nfrom sklearn.model_selection import train_test_split\n\ninitial_train_path = \"/kaggle/input/ada-image-recognition-fiber/dataset/images/train/\"\naug_train_path = \"/kaggle/input/data-fiber-augs/dataset_aug/images/aug_train/\"\n\ninitial_train = os.listdir(initial_train_path)\ninitial_train = list(map(lambda x: initial_train_path + x, initial_train))\n\naug_train = os.listdir(aug_train_path)\naug_train = list(map(lambda x: aug_train_path + x, aug_train))\n\nall_train_imgs = initial_train + aug_train\n\ntrain_imgs, val_imgs = train_test_split(all_train_imgs, train_size=0.9, random_state=1)\n\ntrain_img_list = \"/kaggle/working/train.txt\"\nval_img_list = \"/kaggle/working/val.txt\"\n\nfor imgs, imgs_list_file in zip([train_imgs, val_imgs], [train_img_list, val_img_list]):\n    with open(imgs_list_file, 'w') as file:\n        for img in imgs:\n            file.write(img + \"\\n\")\nyaml_path = \"/kaggle/working/custom.yaml\"\nyaml_content = f\"\"\" \ntrain: {train_img_list}\nval: {val_img_list}\ntest: /kaggle/input/ada-image-recognition-fiber/dataset/images/test\n\nnc: 5\n\n# class names\nnames: \n  0: Screw,\n  1: Foam\n  2: Plastic cover\n  3: Tie-wrap, \n  4: Rubbers\n\"\"\"\n\nwith open(yaml_path, 'w') as file:\n    file.write(yaml_content)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"with open(\"/kaggle/working/yolov5/data/hyps/hyp.scratch-high.yaml\", \"r\") as file:\n    content = file.read()\n    content = content.replace(\"lr0: 0.01\", \"lr0: 0.05\")\n    with open(\"/kaggle/working/yolov5/data/hyps/hyp.scratch-high.yaml\", \"w\") as f:\n        f.write(content)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!python /kaggle/working/yolov5/train.py --weights /kaggle/input/model-40-epochs/runs/train/exp/weights/last.pt --data /kaggle/working/custom.yaml --hyp /kaggle/working/yolov5/data/hyps/hyp.scratch-high.yaml --epochs 40 --batch 16 --freeze 10 --optimizer SGD\n#!python /kaggle/working/yolov5/train.py --data /kaggle/working/custom.yaml --weights /kaggle/input/model-40-epochs/runs/train/exp/weights/last.pt --epochs 20 --batch 64 --freeze 10 --optimizer Adam\n#!python /kaggle/working/yolov5/train.py --data /kaggle/working/custom.yaml --weights yolov5n.pt --epochs 2 --batch 64 --freeze 10 --optimizer Adam","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}