{"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":"markdown","source":"## Dogs vs Cats\n\nПредставляем вам проектное задание нашей подгруппы №3. \nУчастники: Дуняшина М.А., Коновалова Л.К., Кузнецова И.И., Мокробородова Ю.К. \nВариант 1 -\"Dogs vs Cats\".\n\nВ качестве Data-файлов нами были взяты файлы из задания: \n    1) таблица samplesubmission.csv, содержащая в себе адреса и маркировки изображений; \n    2) архивы следующих изображений test1.zip (12500 файлов) и train.zip (25000 файлов). \nС их помощью и был реализован наш код.\n\nПеред нами стояла задача написать такой алгоритм, который бы мог отличать кошек от собак. \nДля построения данной модели мы использовали библиотеку Keras, которая позволяет создавать нейронные сети.","metadata":{}},{"cell_type":"markdown","source":"![cat-vs-dog.jpg](attachment:0bd33897-a9c7-4f79-8c65-160b4f9433c1.jpg)","metadata":{},"attachments":{"0bd33897-a9c7-4f79-8c65-160b4f9433c1.jpg":{"image/jpeg":"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LKhkYnyDw1ac6cyHq8h1GjjuPNga7a3vxvfne972fHbe+2978a+u972tkk7KPgohyzjJiTadE0qN3d5xRuyZNTGGWRspxjnylSqAtMpcWqUyLUajQDmwuaWKw+u6J8ZidmYpCU2OASxwRtLFIus0THvaWRCUBpBGmqdkUTyxdSozYLpXtkDjHJrAKJNJag7wfpvfne99idrf02t73ve9+Nl2/B+hTkVzWvWFRXm1BA9h3GsMcjJknufYPd5pytVh1h8BlfIPEhlDZI1XUaBa6F0RsuxxlbQnhFpt9VGsa4StDFE6QBszXBj5E2x8rJqUWZxVOicBgMZlKkiijxFXOYmNPdWicZJV2KwkkZTXLrrxvZO97W978b3ve97323vzve9re9/U+ACuWVXRVheEbJ5HmJNkoTySXnue58rHskdVNmQmsp5ZGh25X6qJra58TuronIy46WuXj5FySsJNqJTJqaZFI5yauk5rAvkbXbmKWAoZfD4mnmcPX46ePw08rXeX12OrmVv8oxPbgoIFGdLe973su3tbLt72t73ve+2972Hb3ve99t77b3veyd7cbDMlTMcr2RGUupjHuxUkrpX9ZyVkA4QPne5RTRSxmFz3SF5pPemqVTSV48U+czOqKmbUdaavZsMt1pxtoenFqjNs0o5G95W1U1WH4hcqXEH8nm4xJlJ602Qt8Zn5eiS9h1Ybq4HP44x0Mcm97RJJJRO9739N9u2+2+2973vsDve977duw873sldlK7IVPjpis14ijmrVWV27lTZbDNsddjoXoZHukOPTTE51mR8iMEViuntszUVUlluV5YDWldJStXpaSZHIyqHpqClZWVlULD5CpGwOa9xwsnKRwtcsXEFlFg8flqHHWc6NadrWqKzVdUnlQWIuMl3va2SSSXE73ve97327du3bt2327duxLX/J379u3bsD27du/fv37l3Ypyz1cxarV5pLJrsDonSsrM3AaxtV4K1azSVVoZC8GR5XXHgQsGRsxwVDOp1WUI7X7bXZAuyNTImYNegoS4wteqSjYGxn4JUVBNazFTJXbdLNunPJWckOQu5cwjlT+Ry8i/Zv2AclfyWryWvzb98/fP3z98/ezzn94/d/3b91/dP3T90/dP3T9z/cv3L9y/cf3E8wHLv2/wDcP3D9v/bzy4ct/bn8tbyz9t/bv24cuPLhy79v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"}}},{"cell_type":"markdown","source":"План разработки модели: \n1. Настройка набора данных\n2. Предварительная обработка данных\n3. Подготовка модели\n - Обратный вызов\n - Подготовка данных\n - Генератор\n4. Построение модели обработки\n5. Окончательная модель\n6. Предиктивная аналитика","metadata":{}},{"cell_type":"markdown","source":"# 1. Настройка набора данных","metadata":{}},{"cell_type":"markdown","source":"## Импорт библиотек","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom keras.preprocessing.image import ImageDataGenerator, load_img\nfrom keras.utils import to_categorical\nfrom sklearn.model_selection import train_test_split\nimport matplotlib.pyplot as plt\nimport random\nimport zipfile\nimport os\nprint(os.listdir(\"../input/dogs-vs-cats\"))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-06-08T11:33:13.514583Z","iopub.execute_input":"2021-06-08T11:33:13.514968Z","iopub.status.idle":"2021-06-08T11:33:20.62348Z","shell.execute_reply.started":"2021-06-08T11:33:13.514887Z","shell.execute_reply":"2021-06-08T11:33:20.622396Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Чтение архивов\nwith zipfile.ZipFile(\"/kaggle/input/dogs-vs-cats/train.zip\",\"r\") as z:\n    z.extractall(\".\")\n    \nwith zipfile.ZipFile(\"/kaggle/input/dogs-vs-cats/test1.zip\",\"r\") as z:\n    z.extractall(\".\")","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:20.625399Z","iopub.execute_input":"2021-06-08T11:33:20.625848Z","iopub.status.idle":"2021-06-08T11:33:43.678654Z","shell.execute_reply.started":"2021-06-08T11:33:20.62579Z","shell.execute_reply":"2021-06-08T11:33:43.6774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Количество наборов данных\nprint(len(os.listdir('/kaggle/working/train')), 'training data')\nprint(len(os.listdir('/kaggle/working/test1')), 'test data')","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:43.681676Z","iopub.execute_input":"2021-06-08T11:33:43.682233Z","iopub.status.idle":"2021-06-08T11:33:43.714326Z","shell.execute_reply.started":"2021-06-08T11:33:43.682186Z","shell.execute_reply":"2021-06-08T11:33:43.712897Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 2. Обработка данных","metadata":{}},{"cell_type":"code","source":"os.listdir(\"/kaggle/working/train\")[:5]","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:43.716584Z","iopub.execute_input":"2021-06-08T11:33:43.717059Z","iopub.status.idle":"2021-06-08T11:33:43.745642Z","shell.execute_reply.started":"2021-06-08T11:33:43.717018Z","shell.execute_reply":"2021-06-08T11:33:43.744162Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"filenames = os.listdir(\"/kaggle/working/train\")\ncategories = []\nfor filename in filenames:\n    category = filename.split('.')[0]\n    if category == 'dog':       # dog присваиваем 1\n        categories.append(1)\n    else:                       # cat присваиваем 0\n        categories.append(0)\n\ndf = pd.DataFrame({\n    'filename': filenames,\n    'category': categories\n})","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:43.747751Z","iopub.execute_input":"2021-06-08T11:33:43.748385Z","iopub.status.idle":"2021-06-08T11:33:43.804884Z","shell.execute_reply.started":"2021-06-08T11:33:43.748338Z","shell.execute_reply":"2021-06-08T11:33:43.80364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:43.806617Z","iopub.execute_input":"2021-06-08T11:33:43.807037Z","iopub.status.idle":"2021-06-08T11:33:43.838604Z","shell.execute_reply.started":"2021-06-08T11:33:43.806992Z","shell.execute_reply":"2021-06-08T11:33:43.836765Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# просмотрт количества собак и кошек\ndf['category'].replace({0: 'cat', 1:'dog'}).value_counts()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:43.840631Z","iopub.execute_input":"2021-06-08T11:33:43.841161Z","iopub.status.idle":"2021-06-08T11:33:43.864817Z","shell.execute_reply.started":"2021-06-08T11:33:43.841074Z","shell.execute_reply":"2021-06-08T11:33:43.863465Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# визуализация категории \ndf['category'].value_counts().plot.bar()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:43.869138Z","iopub.execute_input":"2021-06-08T11:33:43.869482Z","iopub.status.idle":"2021-06-08T11:33:44.069327Z","shell.execute_reply.started":"2021-06-08T11:33:43.869451Z","shell.execute_reply":"2021-06-08T11:33:44.068202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Пример изображения","metadata":{}},{"cell_type":"code","source":"sample = random.choice(filenames) # выбираем один случайный файл из filenames\nimage = load_img(\"/kaggle/working/train/\" +sample) # получение имени случайно выбранного файла\nplt.imshow(image) # изображение данного файла","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.072307Z","iopub.execute_input":"2021-06-08T11:33:44.072765Z","iopub.status.idle":"2021-06-08T11:33:44.325722Z","shell.execute_reply.started":"2021-06-08T11:33:44.072721Z","shell.execute_reply":"2021-06-08T11:33:44.324482Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 3. Подготовка модели","metadata":{}},{"cell_type":"markdown","source":"## 1) Обратный вызов\n> #### Вызываем функции (EarlyStopping, ReduceLROnPlateau)\n\n> #### EarlyStopping - Early Stop\n> - Код ниже определяет EarlyStopping, который отслеживает val_ass и останавливает обучение, если не было изменений n epoch.\n>\n> #### ReduceLRonPlateau - Learning Rate Reduction\n> - Если val_acc не увеличивается в течение n epoch, то снижается скорость обучения.","metadata":{}},{"cell_type":"code","source":"# импорт для использования досрочного прекращения обучения\nfrom keras.callbacks import EarlyStopping, ReduceLROnPlateau\n\nearlystop = EarlyStopping(patience=15) # Раннее окончание обучения\n#  Обучение прекращается, если значение val_loss не уменьшается при повышении на 15 пунктов","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.327584Z","iopub.execute_input":"2021-06-08T11:33:44.328094Z","iopub.status.idle":"2021-06-08T11:33:44.335521Z","shell.execute_reply.started":"2021-06-08T11:33:44.327941Z","shell.execute_reply":"2021-06-08T11:33:44.333378Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learning_rate_reduction = ReduceLROnPlateau(\n    monitor = 'val_acc', # ReduceLROnPlateau : val_acc \n    patience = 2,        # количество epoch, которые не улучшились после снижения скорости обучения\n    verbose = 1,         # указания, как должна отображаться данная информация (0, 1, 2)\n                         # 0 : Выход без отображения на экране \n                         # 1 : EarlyStopping\n    factor = 0.5,        # Значение фактора, которое определяет, насколько снизить скорость обучения  \n                         # - ( learning rate = learning rate * factor )\n    min_lr = 0.00001     # Нижний предел скорости обучения\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.337609Z","iopub.execute_input":"2021-06-08T11:33:44.338543Z","iopub.status.idle":"2021-06-08T11:33:44.35014Z","shell.execute_reply.started":"2021-06-08T11:33:44.338476Z","shell.execute_reply":"2021-06-08T11:33:44.348715Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"callbacks = [earlystop, learning_rate_reduction]","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.352033Z","iopub.execute_input":"2021-06-08T11:33:44.352685Z","iopub.status.idle":"2021-06-08T11:33:44.364415Z","shell.execute_reply.started":"2021-06-08T11:33:44.352639Z","shell.execute_reply":"2021-06-08T11:33:44.363191Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2) Prepare Data","metadata":{}},{"cell_type":"code","source":"# Тип текущей категории : Целое число\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.366344Z","iopub.execute_input":"2021-06-08T11:33:44.367043Z","iopub.status.idle":"2021-06-08T11:33:44.383528Z","shell.execute_reply.started":"2021-06-08T11:33:44.366998Z","shell.execute_reply":"2021-06-08T11:33:44.382521Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> #### Мы будем использовать class_mode =  'categorical' в генераторе ниже, поэтому нам нужно заменить его строкой. ( 1 - собака; 0 - кошка )","metadata":{}},{"cell_type":"code","source":"df['category'] = df['category'].replace({0: 'cat', 1: 'dog'})\n\ndf.head() ","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.38677Z","iopub.execute_input":"2021-06-08T11:33:44.38718Z","iopub.status.idle":"2021-06-08T11:33:44.408593Z","shell.execute_reply.started":"2021-06-08T11:33:44.387107Z","shell.execute_reply":"2021-06-08T11:33:44.407288Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# train и vaild, temp_test классификация\ntrain_valid_df, temp_test_df = train_test_split(df, test_size=0.02, random_state=42) # test_size = 0.02 : 2% от общего объема данных.\ntrain_df, valid_df = train_test_split(train_valid_df, test_size=0.2, random_state=42) # test_size = 0.2 : вычтем 2% из вышеперечисленного, и из оставшихся 98% данных - 20% являются действительными, 80% генерируются как train data\n\ntrain_df = train_df.reset_index(drop=True)\nvalid_df = valid_df.reset_index(drop=True)\ntemp_test_df = temp_test_df.reset_index(drop=True)\n\ntrain_df.shape, valid_df.shape, temp_test_df.shape","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.41124Z","iopub.execute_input":"2021-06-08T11:33:44.411915Z","iopub.status.idle":"2021-06-08T11:33:44.432662Z","shell.execute_reply.started":"2021-06-08T11:33:44.411826Z","shell.execute_reply":"2021-06-08T11:33:44.431661Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.435955Z","iopub.execute_input":"2021-06-08T11:33:44.436291Z","iopub.status.idle":"2021-06-08T11:33:44.450215Z","shell.execute_reply.started":"2021-06-08T11:33:44.436261Z","shell.execute_reply":"2021-06-08T11:33:44.448759Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df['category'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.452164Z","iopub.execute_input":"2021-06-08T11:33:44.453181Z","iopub.status.idle":"2021-06-08T11:33:44.469165Z","shell.execute_reply.started":"2021-06-08T11:33:44.452976Z","shell.execute_reply":"2021-06-08T11:33:44.467474Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"valid_df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.471286Z","iopub.execute_input":"2021-06-08T11:33:44.471857Z","iopub.status.idle":"2021-06-08T11:33:44.488518Z","shell.execute_reply.started":"2021-06-08T11:33:44.471812Z","shell.execute_reply":"2021-06-08T11:33:44.486876Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"valid_df['category'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.490664Z","iopub.execute_input":"2021-06-08T11:33:44.491273Z","iopub.status.idle":"2021-06-08T11:33:44.505573Z","shell.execute_reply.started":"2021-06-08T11:33:44.491213Z","shell.execute_reply":"2021-06-08T11:33:44.504337Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"total_train = train_df.shape[0]\ntotal_validate = valid_df.shape[0]\ntotal_temp_test = temp_test_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.507469Z","iopub.execute_input":"2021-06-08T11:33:44.50841Z","iopub.status.idle":"2021-06-08T11:33:44.515314Z","shell.execute_reply.started":"2021-06-08T11:33:44.508352Z","shell.execute_reply":"2021-06-08T11:33:44.513838Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(total_train, ',', total_validate, ',', total_temp_test)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.51761Z","iopub.execute_input":"2021-06-08T11:33:44.51857Z","iopub.status.idle":"2021-06-08T11:33:44.528275Z","shell.execute_reply.started":"2021-06-08T11:33:44.518475Z","shell.execute_reply":"2021-06-08T11:33:44.526497Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 3) Генератор (Увеличение данных)","metadata":{}},{"cell_type":"code","source":"IMAGE_WIDTH = 128                        # Ширина изображения (строка)\nIMAGE_HEIGHT = 128                       # Высота изображения (столбец)\nIMAGE_SIZE = (IMAGE_WIDTH, IMAGE_HEIGHT) # Размер изображения\nIMAGE_CHANNELS = 3                       # Канал изображения (глубина)\nbatch_size = 32","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.529845Z","iopub.execute_input":"2021-06-08T11:33:44.530598Z","iopub.status.idle":"2021-06-08T11:33:44.540108Z","shell.execute_reply.started":"2021-06-08T11:33:44.530536Z","shell.execute_reply":"2021-06-08T11:33:44.537833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Увеличение данных для повышения производительности моделей нейронных сетей\ntrain_datagen = ImageDataGenerator( # ImageDataGenerator : Случайное преобразование и нормализация изображений во время обучения\n    rotation_range = 15,            # Произвольно поворот исходного изображения в пределах заданного угла(0 ~ 15) \n    rescale = 1./255,               # Масштабируем до 1/255 и преобразуем в диапазон 0-1\n# Входное значение, состоящее из коэффициента RGB исходного изображения 0-255, слишком велико для эффективного изучения модели    shear_range = 0.1,              \n    zoom_range = 0.2,               # Произвольное увеличение/уменьшение исходного изображения\n    horizontal_flip = True,         # Инверсия влево и вправо: переверот изображения по горизонтали с вероятностью 50%\n    width_shift_range = 0.1,        # Произвольное перемещение исходного изображения в пределах диапазона горизонтального перемещения - указывает отношение общей ширины\n    height_shift_range = 0.1        # Произвольное перемещение исходного изображения в пределах диапазона вертикального перемещения-указывает отношение общей высоты\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.547685Z","iopub.execute_input":"2021-06-08T11:33:44.548052Z","iopub.status.idle":"2021-06-08T11:33:44.554736Z","shell.execute_reply.started":"2021-06-08T11:33:44.547976Z","shell.execute_reply":"2021-06-08T11:33:44.553287Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Просмотр генератора","metadata":{}},{"cell_type":"code","source":"example_df = train_df.sample(n=1).reset_index(drop=True) \nexample_generator = train_datagen.flow_from_dataframe(\n    example_df, # dataframe\n    \"./train/\", # Расположение каталога train\n    x_col = 'filename',\n    y_col = 'category',\n    target_size = IMAGE_SIZE,\n    class_mode = 'categorical'\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.55832Z","iopub.execute_input":"2021-06-08T11:33:44.559282Z","iopub.status.idle":"2021-06-08T11:33:44.591548Z","shell.execute_reply.started":"2021-06-08T11:33:44.559233Z","shell.execute_reply":"2021-06-08T11:33:44.590426Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> #### Для классификации по категориям используем class_mode\n> * #### 0 - cat, 1 - dog\n\n<br>\n\n> #### class_mode ( по умолчанию : категориальный )\n> * #### binary : 1D numpy массив двоичных меток (1D numpy массив двоичных меток )\n> * #### категориальный : 2D numpy массив меток с одним горячим кодированием. ( 2D numpy массив меток с одним горячим кодированием) -  Автоматическое выполнение одного горячего кодирования\n> * #### разреженный: 1D numpy массив целочисленных меток ( 1D numpy массив целочисленных меток )\n> * #### ввод: изображения, идентичные входным изображениям )\n","metadata":{"execution":{"iopub.status.busy":"2021-05-28T04:36:20.784034Z","iopub.execute_input":"2021-05-28T04:36:20.784402Z","iopub.status.idle":"2021-05-28T04:36:20.796146Z","shell.execute_reply.started":"2021-05-28T04:36:20.784363Z","shell.execute_reply":"2021-05-28T04:36:20.794808Z"}}},{"cell_type":"code","source":"# образец проверенных данных\nexample_df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.593519Z","iopub.execute_input":"2021-06-08T11:33:44.593952Z","iopub.status.idle":"2021-06-08T11:33:44.608349Z","shell.execute_reply.started":"2021-06-08T11:33:44.593905Z","shell.execute_reply":"2021-06-08T11:33:44.606558Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"image = load_img(\"./train/\" +example_df['filename'][0]) # Просмотр исходного изображения example_df\nplt.imshow(image) # Импортированные файлы изображений","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.610333Z","iopub.execute_input":"2021-06-08T11:33:44.611414Z","iopub.status.idle":"2021-06-08T11:33:44.825242Z","shell.execute_reply.started":"2021-06-08T11:33:44.611366Z","shell.execute_reply":"2021-06-08T11:33:44.824151Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12, 12)) # Установка размера вывода графика\nfor i in range(0, 15):       # Вывод в общей сложности 15 изображений\n    plt.subplot(5, 3, i+1)   # Установка вывода изображения\n    for x_batch, y_batch in example_generator: # Преобразование исходного изображения с помощью exaple_generator를 통해 원본 이미지 변형\n        image = x_batch[0]\n        plt.imshow(image)\n        break\n\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:44.826951Z","iopub.execute_input":"2021-06-08T11:33:44.827459Z","iopub.status.idle":"2021-06-08T11:33:47.201289Z","shell.execute_reply.started":"2021-06-08T11:33:44.827413Z","shell.execute_reply":"2021-06-08T11:33:47.199986Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Создание пакета дополненных/нормализованных данных,передав местоположение фрейма данных и каталога\ntrain_generator = train_datagen.flow_from_dataframe( # Функция загрузки фрейма данных\n    train_df,                                        \n    \"./train/\",                                      # Путь к каталогу с полными данными\n    x_col = 'filename',                              # train_df DataFrame на filename col получение значений\n    y_col = 'category',                              # train_df DataFrame на category col получение значений\n    target_size = IMAGE_SIZE,                        # Размеры для изменения размера всех изображений - значение по умолчанию (256, 256)\n    class_mode = 'categorical', \n    batch_size = batch_size\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:47.202904Z","iopub.execute_input":"2021-06-08T11:33:47.203838Z","iopub.status.idle":"2021-06-08T11:33:47.624982Z","shell.execute_reply.started":"2021-06-08T11:33:47.203791Z","shell.execute_reply":"2021-06-08T11:33:47.623266Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"validation_datagen = ImageDataGenerator(rescale=1./255)\nvalidation_generator = validation_datagen.flow_from_dataframe(\n    valid_df, \n    \"/kaggle/working/train/\", \n    x_col='filename',\n    y_col='category',\n    target_size=IMAGE_SIZE,\n    class_mode='categorical',\n    batch_size=batch_size\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:47.628128Z","iopub.execute_input":"2021-06-08T11:33:47.628838Z","iopub.status.idle":"2021-06-08T11:33:47.82019Z","shell.execute_reply.started":"2021-06-08T11:33:47.628793Z","shell.execute_reply":"2021-06-08T11:33:47.819046Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 4. Модель обработки","metadata":{}},{"cell_type":"code","source":"from keras.models import Sequential\nfrom keras.layers import Conv2D, MaxPooling2D, GlobalAveragePooling2D, Dropout, Dense, Activation, BatchNormalization\n\n\nmodel = Sequential()\n\n# block 1 ( Добавление реализации в 3*3 слоя )\nmodel.add(Conv2D(32, (3, 3), input_shape=(IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS)))  # (126, 126, 32)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\nmodel.add(Conv2D(64, (3, 3), strides=2))  # (62, 62, 64)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\n\n# block 2\nmodel.add(Conv2D(64, (3, 3)))  # (60, 60, 64)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\nmodel.add(Conv2D(128, (3, 3), strides=2))  # (29, 29, 128)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\n\n# block 3\nmodel.add(Conv2D(128, (3, 3)))  # (27, 27, 128)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\nmodel.add(Conv2D(256, (3, 3), strides=2))  # (13, 13, 256)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\n\n# block 4\nmodel.add(Conv2D(256, (3, 3)))  # (11, 11, 256)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\nmodel.add(Conv2D(512, (3, 3), strides=2))  # (5, 5, 512)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\n\n# block 5\nmodel.add(Conv2D(512, (3, 3)))  # (3, 3, 512)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\nmodel.add(Conv2D(1024, (3, 3), strides=2))  # (1, 1, 1024)\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu')) \n\n# Output\nmodel.add(GlobalAveragePooling2D()) # применяем усредненное объединение пространственных измерений до тех пор, пока каждое пространственное измерение не станет единым, и оставляет другие измерения неизменными\n\nmodel.add(Dense(1024))\nmodel.add(BatchNormalization())\nmodel.add(Activation('relu'))\nmodel.add(Dropout(0.25))\nmodel.add(Dense(2, activation='softmax'))  # cat and dog classes\n\nmodel.compile(loss='categorical_crossentropy', optimizer='nadam', metrics=['accuracy'])\n\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:47.824941Z","iopub.execute_input":"2021-06-08T11:33:47.827776Z","iopub.status.idle":"2021-06-08T11:33:51.30266Z","shell.execute_reply.started":"2021-06-08T11:33:47.827734Z","shell.execute_reply":"2021-06-08T11:33:51.30162Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Подходящая модель","metadata":{}},{"cell_type":"code","source":"epochs = 30\nhistory = model.fit(\n    train_generator,\n    epochs = epochs,\n    validation_data = validation_generator,\n    validation_steps = total_validate // batch_size,\n    steps_per_epoch = total_train//batch_size,\n    callbacks = callbacks\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T11:33:51.306012Z","iopub.execute_input":"2021-06-08T11:33:51.306338Z","iopub.status.idle":"2021-06-08T12:50:12.927249Z","shell.execute_reply.started":"2021-06-08T11:33:51.306293Z","shell.execute_reply":"2021-06-08T12:50:12.925999Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 12))\nax1.plot(history.history['loss'], color='b', label='Training loss')\nax1.plot(history.history['val_loss'], color='r', label='Validation loss')\nax1.set_xticks(np.arange(1, epochs, 1))\nax1.set_yticks(np.arange(0, 1, 0.1))\n\nax2.plot(history.history['accuracy'], color='b', label='Training accuracy')\nax2.plot(history.history['val_accuracy'], color='r', label='Validation accuracy')\nax2.set_xticks(np.arange(1, epochs, 1))\n\nlegend = plt.legend(loc='best', shadow=True)\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:12.929207Z","iopub.execute_input":"2021-06-08T12:50:12.929535Z","iopub.status.idle":"2021-06-08T12:50:13.650668Z","shell.execute_reply.started":"2021-06-08T12:50:12.92949Z","shell.execute_reply":"2021-06-08T12:50:13.649532Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## сохранение модели","metadata":{}},{"cell_type":"code","source":"model.save_weights('model.h5')","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:13.653215Z","iopub.execute_input":"2021-06-08T12:50:13.654026Z","iopub.status.idle":"2021-06-08T12:50:13.812887Z","shell.execute_reply.started":"2021-06-08T12:50:13.65398Z","shell.execute_reply":"2021-06-08T12:50:13.811722Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 6. Прогнозирование","metadata":{}},{"cell_type":"markdown","source":"> ## Прогнозирование Целевых Данных","metadata":{}},{"cell_type":"code","source":"# test data\ntemp_test_datagen = ImageDataGenerator(rescale=1./255)\ntemp_test_generator = temp_test_datagen.flow_from_dataframe(\n    temp_test_df, \n    \"/kaggle/working/train/\", \n    x_col='filename',\n    y_col='category',\n    target_size=IMAGE_SIZE,\n    class_mode='categorical',\n    batch_size=batch_size,\n    shuffle=False\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:13.814685Z","iopub.execute_input":"2021-06-08T12:50:13.815159Z","iopub.status.idle":"2021-06-08T12:50:13.839442Z","shell.execute_reply.started":"2021-06-08T12:50:13.815079Z","shell.execute_reply":"2021-06-08T12:50:13.837979Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predict = model.predict(\n    temp_test_generator, # temp_test_generator : Генератор для входных выборок\n    steps = np.ceil(total_temp_test/batch_size) # np.ceil : общее количество шагов от генератора до его подъема и остановки\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:13.841247Z","iopub.execute_input":"2021-06-08T12:50:13.841752Z","iopub.status.idle":"2021-06-08T12:50:15.694273Z","shell.execute_reply.started":"2021-06-08T12:50:13.841707Z","shell.execute_reply":"2021-06-08T12:50:15.693206Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp_test_df['predict'] = np.argmax(predict, axis=-1)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:15.695984Z","iopub.execute_input":"2021-06-08T12:50:15.696493Z","iopub.status.idle":"2021-06-08T12:50:15.706479Z","shell.execute_reply.started":"2021-06-08T12:50:15.69643Z","shell.execute_reply":"2021-06-08T12:50:15.70526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp_test_df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:15.708048Z","iopub.execute_input":"2021-06-08T12:50:15.708671Z","iopub.status.idle":"2021-06-08T12:50:15.729648Z","shell.execute_reply.started":"2021-06-08T12:50:15.708615Z","shell.execute_reply":"2021-06-08T12:50:15.728526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"label_map = dict((v,k) for k,v in train_generator.class_indices.items())  # {0: 'cat', 1: 'dog'}\n\n\ntemp_test_df['category'] = temp_test_df['category'].replace(label_map)\ntemp_test_df['category'] = temp_test_df['category'].replace({ 'dog': 1, 'cat': 0 })","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:15.730941Z","iopub.execute_input":"2021-06-08T12:50:15.73136Z","iopub.status.idle":"2021-06-08T12:50:15.74484Z","shell.execute_reply.started":"2021-06-08T12:50:15.731331Z","shell.execute_reply":"2021-06-08T12:50:15.743688Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp_test_df[0:100]","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:15.748487Z","iopub.execute_input":"2021-06-08T12:50:15.74894Z","iopub.status.idle":"2021-06-08T12:50:15.769492Z","shell.execute_reply.started":"2021-06-08T12:50:15.74888Z","shell.execute_reply":"2021-06-08T12:50:15.768245Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"accuracy_count = 0  # Количество правильных ответов\n\nfor i in range(total_temp_test):\n    \n    accuracy_count += ( temp_test_df['category'][i] == temp_test_df['predict'][i] )\n\nprint('Вероятность правильного ответа: {:.3f}'. format(float(accuracy_count/total_temp_test)))\nprint('Количество правильных ответов из 500: '.format(accuracy_count))","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:15.771298Z","iopub.execute_input":"2021-06-08T12:50:15.771724Z","iopub.status.idle":"2021-06-08T12:50:15.797575Z","shell.execute_reply.started":"2021-06-08T12:50:15.771682Z","shell.execute_reply":"2021-06-08T12:50:15.796376Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"check = temp_test_df.head(12)\ncheck.head()\nplt.figure(figsize=(12, 24))\nfor index, row in check.iterrows():\n    filename = row['filename']\n    category = row['category']\n    img = load_img(\"/kaggle/working/train/\"+filename, target_size=IMAGE_SIZE)\n    plt.subplot(6, 3, index+1)\n    plt.imshow(img)\n    plt.xlabel(filename + '(' + \"{}\".format(category) + ')' )\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:15.799005Z","iopub.execute_input":"2021-06-08T12:50:15.799337Z","iopub.status.idle":"2021-06-08T12:50:18.601051Z","shell.execute_reply.started":"2021-06-08T12:50:15.799308Z","shell.execute_reply":"2021-06-08T12:50:18.59852Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Прогнозирование Тестовых Данных","metadata":{}},{"cell_type":"code","source":"test_filenames = os.listdir(\"/kaggle/working/test1\")\ntest_df = pd.DataFrame(\n    {'filename': test_filenames}\n)\ntest = test_df.shape[0]","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:18.603244Z","iopub.execute_input":"2021-06-08T12:50:18.604031Z","iopub.status.idle":"2021-06-08T12:50:18.62981Z","shell.execute_reply.started":"2021-06-08T12:50:18.603974Z","shell.execute_reply":"2021-06-08T12:50:18.628339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:18.631681Z","iopub.execute_input":"2021-06-08T12:50:18.632508Z","iopub.status.idle":"2021-06-08T12:50:18.639818Z","shell.execute_reply.started":"2021-06-08T12:50:18.63246Z","shell.execute_reply":"2021-06-08T12:50:18.638605Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:18.642727Z","iopub.execute_input":"2021-06-08T12:50:18.643562Z","iopub.status.idle":"2021-06-08T12:50:18.681217Z","shell.execute_reply.started":"2021-06-08T12:50:18.643476Z","shell.execute_reply":"2021-06-08T12:50:18.674569Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# test data\ntest_datagen = ImageDataGenerator(rescale=1./255)\ntest_generator = test_datagen.flow_from_dataframe(\n    test_df, \n    \"/kaggle/working/test1/\", \n    x_col='filename',\n    y_col=None,\n    target_size=IMAGE_SIZE,\n    class_mode=None,\n    batch_size=batch_size,\n    shuffle=False\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:18.683699Z","iopub.execute_input":"2021-06-08T12:50:18.685405Z","iopub.status.idle":"2021-06-08T12:50:18.963517Z","shell.execute_reply.started":"2021-06-08T12:50:18.685335Z","shell.execute_reply":"2021-06-08T12:50:18.962136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predict2 = model.predict(\n    test_generator, # test_generator : генератор для входных выборок\n    steps = np.ceil(test/batch_size) # np.ceil : Общее количество шагов от генератора до его подъема и остановки\n)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:18.968122Z","iopub.execute_input":"2021-06-08T12:50:18.968699Z","iopub.status.idle":"2021-06-08T12:50:54.986091Z","shell.execute_reply.started":"2021-06-08T12:50:18.968655Z","shell.execute_reply":"2021-06-08T12:50:54.984856Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df['predict'] = np.argmax(predict2, axis=-1)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:54.987912Z","iopub.execute_input":"2021-06-08T12:50:54.988545Z","iopub.status.idle":"2021-06-08T12:50:54.99856Z","shell.execute_reply.started":"2021-06-08T12:50:54.988496Z","shell.execute_reply":"2021-06-08T12:50:54.997013Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:55.001238Z","iopub.execute_input":"2021-06-08T12:50:55.002279Z","iopub.status.idle":"2021-06-08T12:50:55.021097Z","shell.execute_reply.started":"2021-06-08T12:50:55.002214Z","shell.execute_reply":"2021-06-08T12:50:55.019618Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"label_map = dict((v,k) for k,v in train_generator.class_indices.items())  # {0: 'cat', 1: 'dog'}\n\n\ntest_df['predict'] = test_df['predict'].replace(label_map)\ntest_df['predict'] = test_df['predict'].replace({ 'dog': 1, 'cat': 0 })","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:55.023368Z","iopub.execute_input":"2021-06-08T12:50:55.024442Z","iopub.status.idle":"2021-06-08T12:50:55.047157Z","shell.execute_reply.started":"2021-06-08T12:50:55.024371Z","shell.execute_reply":"2021-06-08T12:50:55.045893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df[0:100]","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:55.049009Z","iopub.execute_input":"2021-06-08T12:50:55.049532Z","iopub.status.idle":"2021-06-08T12:50:55.068072Z","shell.execute_reply.started":"2021-06-08T12:50:55.049482Z","shell.execute_reply":"2021-06-08T12:50:55.066558Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Submission","metadata":{}},{"cell_type":"code","source":"submission_df = test_df.copy()\nsubmission_df['id'] = submission_df['filename'].str.split('.').str[0]\nsubmission_df['label'] = submission_df['predict']\nsubmission_df.drop(['filename', 'predict'], axis=1, inplace=True)\nsubmission_df.to_csv('submission_final.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:55.070239Z","iopub.execute_input":"2021-06-08T12:50:55.071066Z","iopub.status.idle":"2021-06-08T12:50:55.474423Z","shell.execute_reply.started":"2021-06-08T12:50:55.071016Z","shell.execute_reply":"2021-06-08T12:50:55.473218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_df.head(10)","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:55.479381Z","iopub.execute_input":"2021-06-08T12:50:55.479824Z","iopub.status.idle":"2021-06-08T12:50:55.493Z","shell.execute_reply.started":"2021-06-08T12:50:55.479788Z","shell.execute_reply":"2021-06-08T12:50:55.491413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"check = test_df.head(12)\ncheck.head()\nplt.figure(figsize=(12, 24))\nfor index, row in check.iterrows():\n    filename = row['filename']\n    category = row['predict']\n    img = load_img(\"/kaggle/working/test1/\"+filename, target_size=IMAGE_SIZE)\n    plt.subplot(6, 3, index+1)\n    plt.imshow(img)\n    plt.xlabel(filename + '(' + \"{}\".format(category) + ')' )\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-08T12:50:55.495447Z","iopub.execute_input":"2021-06-08T12:50:55.496183Z","iopub.status.idle":"2021-06-08T12:50:58.194518Z","shell.execute_reply.started":"2021-06-08T12:50:55.496103Z","shell.execute_reply":"2021-06-08T12:50:58.193437Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}