

{"id":77817,"date":"2020-05-09T19:19:44","date_gmt":"2020-05-09T13:49:44","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=77817"},"modified":"2021-08-25T13:56:13","modified_gmt":"2021-08-25T08:26:13","slug":"cats-dogs-classification-deep-learning-project-beginners","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/","title":{"rendered":"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras &#8211; Deep Learning Project for Beginners"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:1139,&quot;href&quot;:&quot;https:\\\/\\\/www.kaggle.com\\\/c\\\/dogs-vs-cats\\\/data&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251006131226\\\/https:\\\/\\\/www.kaggle.com\\\/c\\\/dogs-vs-cats\\\/data&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-09 01:44:36&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-12 07:08:49&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-15 14:36:58&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-18 14:56:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-22 04:11:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-25 09:09:49&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-28 10:05:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-31 11:06:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-04 06:53:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-07 10:35:21&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-11 11:57:08&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-14 21:54:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-18 04:15:04&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-21 06:18:03&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-24 08:32:40&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-27 11:23:15&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-30 13:05:47&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-02 17:29:40&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-02-06 06:27:17&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-09 10:16:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-12 10:57:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-15 11:24:24&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-18 18:14:42&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-21 22:03:41&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-25 02:15:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-28 09:33:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-03 14:48:32&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-06 15:59:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-09 20:38:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-13 05:16:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-16 06:38:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-19 09:23:13&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-22 11:22:44&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-25 14:13:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-29 05:55:08&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-01 06:38:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-04 09:22:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-07 12:52:19&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-10 15:22:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-13 15:37:58&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-16 18:48:00&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-20 06:18:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-23 06:33:38&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-26 06:54:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-29 14:16:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-03 11:05:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-06 14:34:13&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-10 02:11:44&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-13 19:10:38&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-17 02:25:38&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-20 03:06:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-23 12:13:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-27 02:44:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-30 07:10:39&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-02 11:04:53&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-05 12:58:07&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-08 13:02:51&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-08 13:02:51&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:1140,&quot;href&quot;:&quot;https:\\\/\\\/keras.io&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251207154119\\\/https:\\\/\\\/keras.io\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-09 01:44:42&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-12 15:04:14&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-16 09:04:38&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-19 20:28:43&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-23 07:21:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-26 13:19:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-30 01:17:48&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-02 09:46:44&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-05 17:46:43&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-09 06:51:46&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-12 14:49:43&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-16 07:03:23&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-19 09:15:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-22 11:23:19&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-25 16:37:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-28 21:15:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-02 06:04:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-05 06:36:28&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-09 10:16:41&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 15:30:33&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-16 06:52:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-19 10:55:33&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-22 18:17:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-26 08:45:05&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-01 19:52:51&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-05 08:34:33&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-09 10:28:59&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-12 13:33:10&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-16 06:17:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-19 11:18:10&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-22 11:23:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-25 21:32:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-29 15:51:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-01 16:13:41&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-05 15:57:21&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 00:52:12&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-13 11:39:10&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-18 08:56:35&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-21 13:28:38&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-25 02:38:10&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-28 03:00:57&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-01 15:39:56&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-05 12:43:42&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-08 17:49:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-11 19:03:11&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-14 19:32:36&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-17 20:13:04&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-21 02:04:06&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-24 06:56:23&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-28 01:09:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-06-01 09:04:38&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-06-05 10:03:02&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-06-08 13:03:45&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-08 13:03:45&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<p>Cats vs Dogs classification is a fundamental Deep Learning project for beginners. If you want to start your Deep Learning Journey with Python Keras, you must work on this elementary project.<\/p>\n<p>In this Keras project, we will discover how to build and train a convolution neural network for classifying images of Cats and Dogs.<\/p>\n<h3>The Asirra (Dogs VS Cats) dataset:<\/h3>\n<p>The Asirra (animal species image recognition for restricting access) dataset was introduced in 2013 for a machine learning competition.\u00a0The dataset includes 25,000 images with equal numbers of labels for cats and dogs.<\/p>\n<p><strong>Dataset:<\/strong> <a href=\"https:\/\/www.kaggle.com\/c\/dogs-vs-cats\/data\">Cats and Dogs dataset<\/a><\/p>\n<h2>Deep Learning Project for Beginners &#8211; Cats and Dogs Classification<\/h2>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-Dogs-Classification-deep-learning.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-77829\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-Dogs-Classification-deep-learning.gif\" alt=\"Cats Dogs Classification Deep Learning\" width=\"907\" height=\"380\" \/><\/a><\/p>\n<h3>Steps to build Cats vs Dogs classifier:<\/h3>\n<p>1.\u00a0Import the libraries:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import numpy as np\r\nimport pandas as pd\r\nfrom keras.preprocessing.image import ImageDataGenerator,load_img\r\nfrom keras.utils import to_categorical\r\nfrom sklearn.model_selection import train_test_split\r\nimport matplotlib.pyplot as plt\r\nimport random\r\nimport os<\/pre>\n<p>2. Define image properties:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Image_Width=128\r\nImage_Height=128\r\nImage_Size=(Image_Width,Image_Height)\r\nImage_Channels=3<\/pre>\n<p>3.\u00a0Prepare dataset for training model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">filenames=os.listdir(\".\/dogs-vs-cats\/train\")\r\n\r\ncategories=[]\r\nfor f_name in filenames:\r\n    category=f_name.split('.')[0]\r\n    if category=='dog':\r\n        categories.append(1)\r\n    else:\r\n        categories.append(0)\r\n\r\ndf=pd.DataFrame({\r\n    'filename':filenames,\r\n    'category':categories\r\n})<\/pre>\n<p>4.\u00a0Create the neural net model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from keras.models import Sequential\r\nfrom keras.layers import Conv2D,MaxPooling2D,\\\r\n     Dropout,Flatten,Dense,Activation,\\\r\n     BatchNormalization\r\n\r\nmodel=Sequential()\r\n\r\nmodel.add(Conv2D(32,(3,3),activation='relu',input_shape=(Image_Width,Image_Height,Image_Channels)))\r\nmodel.add(BatchNormalization())\r\nmodel.add(MaxPooling2D(pool_size=(2,2)))\r\nmodel.add(Dropout(0.25))\r\n\r\nmodel.add(Conv2D(64,(3,3),activation='relu'))\r\nmodel.add(BatchNormalization())\r\nmodel.add(MaxPooling2D(pool_size=(2,2)))\r\nmodel.add(Dropout(0.25))\r\n\r\nmodel.add(Conv2D(128,(3,3),activation='relu'))\r\nmodel.add(BatchNormalization())\r\nmodel.add(MaxPooling2D(pool_size=(2,2)))\r\nmodel.add(Dropout(0.25))\r\n\r\nmodel.add(Flatten())\r\nmodel.add(Dense(512,activation='relu'))\r\nmodel.add(BatchNormalization())\r\nmodel.add(Dropout(0.5))\r\nmodel.add(Dense(2,activation='softmax'))\r\n\r\nmodel.compile(loss='categorical_crossentropy',\r\n  optimizer='rmsprop',metrics=['accuracy'])<\/pre>\n<p>5. Analyzing model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">model.summary()<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-77824\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1.png\" alt=\"model summary\" width=\"1920\" height=\"911\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1-150x71.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1-300x142.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1-768x364.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1-1024x486.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-summary-1-520x247.png 520w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>6.\u00a0Define callbacks and learning rate:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from keras.callbacks import EarlyStopping, ReduceLROnPlateau\r\nearlystop = EarlyStopping(patience = 10)\r\nlearning_rate_reduction = ReduceLROnPlateau(monitor = 'val_acc',patience = 2,verbose = 1,factor = 0.5,min_lr = 0.00001)\r\ncallbacks = [earlystop,learning_rate_reduction]<\/pre>\n<p>7.\u00a0Manage data:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">df[\"category\"] = df[\"category\"].replace({0:'cat',1:'dog'})\r\ntrain_df,validate_df = train_test_split(df,test_size=0.20,\r\n  random_state=42)\r\n\r\ntrain_df = train_df.reset_index(drop=True)\r\nvalidate_df = validate_df.reset_index(drop=True)\r\n\r\ntotal_train=train_df.shape[0]\r\ntotal_validate=validate_df.shape[0]\r\nbatch_size=15<\/pre>\n<p>8.\u00a0Training and validation data generator:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">train_datagen = ImageDataGenerator(rotation_range=15,\r\n                                rescale=1.\/255,\r\n                                shear_range=0.1,\r\n                                zoom_range=0.2,\r\n                                horizontal_flip=True,\r\n                                width_shift_range=0.1,\r\n                                height_shift_range=0.1\r\n                                )\r\n\r\ntrain_generator = train_datagen.flow_from_dataframe(train_df,\r\n                                                 \".\/dogs-vs-cats\/train\/\",x_col='filename',y_col='category',\r\n                                                 target_size=Image_Size,\r\n                                                 class_mode='categorical',\r\n                                                 batch_size=batch_size)\r\n\r\nvalidation_datagen = ImageDataGenerator(rescale=1.\/255)\r\nvalidation_generator = validation_datagen.flow_from_dataframe(\r\n    validate_df, \r\n    \".\/dogs-vs-cats\/train\/\", \r\n    x_col='filename',\r\n    y_col='category',\r\n    target_size=Image_Size,\r\n    class_mode='categorical',\r\n    batch_size=batch_size\r\n)\r\n\r\ntest_datagen = ImageDataGenerator(rotation_range=15,\r\n                                rescale=1.\/255,\r\n                                shear_range=0.1,\r\n                                zoom_range=0.2,\r\n                                horizontal_flip=True,\r\n                                width_shift_range=0.1,\r\n                                height_shift_range=0.1)\r\n\r\ntest_generator = train_datagen.flow_from_dataframe(train_df,\r\n                                                 \".\/dogs-vs-cats\/test\/\",x_col='filename',y_col='category',\r\n                                                 target_size=Image_Size,\r\n                                                 class_mode='categorical',\r\n                                                 batch_size=batch_size)\r\n\r\n<\/pre>\n<p>9.\u00a0Model Training:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">epochs=10\r\nhistory = model.fit_generator(\r\n    train_generator, \r\n    epochs=epochs,\r\n    validation_data=validation_generator,\r\n    validation_steps=total_validate\/\/batch_size,\r\n    steps_per_epoch=total_train\/\/batch_size,\r\n    callbacks=callbacks\r\n)<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-77825\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig.png\" alt=\"model traininig\" width=\"1920\" height=\"911\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig-150x71.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig-300x142.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig-768x364.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig-1024x486.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/model-traininig-520x247.png 520w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>10.\u00a0Save the model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">model.save(\"model1_catsVSdogs_10epoch.h5\")<\/pre>\n<p>11.\u00a0Test data preparation:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">test_filenames = os.listdir(\".\/dogs-vs-cats\/test1\")\r\ntest_df = pd.DataFrame({\r\n    'filename': test_filenames\r\n})\r\nnb_samples = test_df.shape[0]<\/pre>\n<p>12.\u00a0Make categorical prediction:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">predict = model.predict_generator(test_generator, steps=np.ceil(nb_samples\/batch_size))<\/pre>\n<p>13.\u00a0Convert labels to categories:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">test_df['category'] = np.argmax(predict, axis=-1)\r\n\r\nlabel_map = dict((v,k) for k,v in train_generator.class_indices.items())\r\ntest_df['category'] = test_df['category'].replace(label_map)\r\n\r\ntest_df['category'] = test_df['category'].replace({ 'dog': 1, 'cat': 0 })<\/pre>\n<p>14.\u00a0Visualize the prediction results:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">sample_test = test_df.head(18)\r\nsample_test.head()\r\nplt.figure(figsize=(12, 24))\r\nfor index, row in sample_test.iterrows():\r\n    filename = row['filename']\r\n    category = row['category']\r\n    img = load_img(\".\/dogs-vs-cats\/test1\/\"+filename, target_size=Image_Size)\r\n    plt.subplot(6, 3, index+1)\r\n    plt.imshow(img)\r\n    plt.xlabel(filename + '(' + \"{}\".format(category) + ')' )\r\nplt.tight_layout()\r\nplt.show()<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-77826\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data.png\" alt=\"sample data\" width=\"1920\" height=\"893\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data-150x70.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data-300x140.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data-768x357.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data-1024x476.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/sample-data-520x242.png 520w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>15.\u00a0Test your model performance on custom data:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">results={\r\n    0:'cat',\r\n    1:'dog'\r\n}\r\nfrom PIL import Image\r\nimport numpy as np\r\nim=Image.open(\"__image_path_TO_custom_image\")\r\nim=im.resize(Image_Size)\r\nim=np.expand_dims(im,axis=0)\r\nim=np.array(im)\r\nim=im\/255\r\npred=model.predict_classes([im])[0]\r\nprint(pred,results[pred])<\/pre>\n<h3>Cats VS Dogs Classifier GUI:<\/h3>\n<p>We do not want to run predict_classes method every time we want to test our model. That&#8217;s why we need a graphical interface.\u00a0Here we will build the GUI using Tkinter python.<\/p>\n<p>To install Tkinter :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">sudo apt-get install python3-tk<\/pre>\n<p>Now create a new directory, copy your model (\u201cmodel1_catsVSdogs_10epoch.h5\u201d) to this directory.<\/p>\n<p>Create a file gui.py and paste the below code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import tkinter as tk\r\nfrom tkinter import filedialog\r\nfrom tkinter import *\r\nfrom PIL import ImageTk, Image\r\nimport numpy\r\n\r\nfrom keras.models import load_model\r\nmodel = load_model('model1_catsVSdogs_10epoch.h5')\r\n#dictionary to label all traffic signs class.\r\nclasses = { \r\n    0:'its a cat',\r\n    1:'its a dog',\r\n \r\n}\r\n#initialise GUI\r\ntop=tk.Tk()\r\ntop.geometry('800x600')\r\ntop.title('CatsVSDogs Classification')\r\ntop.configure(background='#CDCDCD')\r\nlabel=Label(top,background='#CDCDCD', font=('arial',15,'bold'))\r\nsign_image = Label(top)\r\ndef classify(file_path):\r\n    global label_packed\r\n    image = Image.open(file_path)\r\n    image = image.resize((128,128))\r\n    image = numpy.expand_dims(image, axis=0)\r\n    image = numpy.array(image)\r\n    image = image\/255\r\n    pred = model.predict_classes([image])[0]\r\n    sign = classes[pred]\r\n    print(sign)\r\n    label.configure(foreground='#011638', text=sign) \r\ndef show_classify_button(file_path):\r\n    classify_b=Button(top,text=\"Classify Image\",\r\n   command=lambda: classify(file_path),\r\n   padx=10,pady=5)\r\n    classify_b.configure(background='#364156', foreground='white',\r\nfont=('arial',10,'bold'))\r\n    classify_b.place(relx=0.79,rely=0.46)\r\n\r\ndef upload_image():\r\n    try:\r\n        file_path=filedialog.askopenfilename()\r\n        uploaded=Image.open(file_path)\r\n        uploaded.thumbnail(((top.winfo_width()\/2.25),\r\n    (top.winfo_height()\/2.25)))\r\n        im=ImageTk.PhotoImage(uploaded)\r\n        sign_image.configure(image=im)\r\n        sign_image.image=im\r\n        label.configure(text='')\r\n        show_classify_button(file_path)\r\n    except:\r\n        pass\r\nupload=Button(top,text=\"Upload an image\",command=upload_image,padx=10,pady=5)\r\nupload.configure(background='#364156', foreground='white',font=('arial',10,'bold'))\r\nupload.pack(side=BOTTOM,pady=50)\r\nsign_image.pack(side=BOTTOM,expand=True)\r\nlabel.pack(side=BOTTOM,expand=True)\r\nheading = Label(top, text=\"CatsVSDogs Classification\",pady=20, font=('arial',20,'bold'))\r\nheading.configure(background='#CDCDCD',foreground='#364156')\r\nheading.pack()\r\ntop.mainloop()<\/pre>\n<p>Save this file and run using:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">python3 gui.py<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Deep-Learning-Project-beginners-cats-dogs-classification.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-77823\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Deep-Learning-Project-beginners-cats-dogs-classification.gif\" alt=\"Deep Learning Project for beginners cats and dogs classification\" width=\"1912\" height=\"991\" \/><\/a><\/p>\n<h2>Summary:<\/h2>\n<p>This Deep Learning project for beginners introduces you to how to build an image classifier.\u00a0This project takes The Asirra (catsVSdogs) dataset for training and testing the neural network. In this project, we have learned:<\/p>\n<ul>\n<li>How to create a neural network in <a href=\"https:\/\/keras.io\/\">Keras<\/a> for image classification<\/li>\n<li>How to prepare the dataset for training and testing<\/li>\n<li>How to visualize the dataset<\/li>\n<li>How to save the model<\/li>\n<li>How to test our model performance on custom data<\/li>\n<li>How to create a GUI for the execution of deep learning project<\/li>\n<\/ul>\n<p><strong>What Next?<\/strong><\/p>\n<p>Now, It&#8217;s a good time to deep dive into deep learning:\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/python-based-project-image-caption-generator-cnn\/\" target=\"_blank\" rel=\"noopener noreferrer\">Deep Learning Project &#8211; Develop Image Caption Generator with CNN &amp; LSTM<\/a><\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cats vs Dogs classification is a fundamental Deep Learning project for beginners. If you want to start your Deep Learning Journey with Python Keras, you must work on this elementary project. In this Keras&#46;&#46;&#46;<\/p>\n","protected":false},"author":10,"featured_media":77827,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22185],"tags":[22273,21686,22272],"class_list":["post-77817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-keras","tag-cats-and-dogs-classification","tag-deep-learning-project","tag-deep-learning-project-for-beginners"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras - Deep Learning Project for Beginners - DataFlair<\/title>\n<meta name=\"description\" content=\"In this Deep Learning project for beginners, we will develop a convolution neural network for classifying images of Cats and Dogs using Python with Keras\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras - Deep Learning Project for Beginners - DataFlair\" \/>\n<meta property=\"og:description\" content=\"In this Deep Learning project for beginners, we will develop a convolution neural network for classifying images of Cats and Dogs using Python with Keras\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-09T13:49:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-25T08:26:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-vs-Dogs-Classification-deep-learning-project.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"802\" \/>\n\t<meta property=\"og:image:height\" content=\"420\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras - Deep Learning Project for Beginners - DataFlair","description":"In this Deep Learning project for beginners, we will develop a convolution neural network for classifying images of Cats and Dogs using Python with Keras","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/","og_locale":"en_US","og_type":"article","og_title":"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras - Deep Learning Project for Beginners - DataFlair","og_description":"In this Deep Learning project for beginners, we will develop a convolution neural network for classifying images of Cats and Dogs using Python with Keras","og_url":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2020-05-09T13:49:44+00:00","article_modified_time":"2021-08-25T08:26:13+00:00","og_image":[{"width":802,"height":420,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-vs-Dogs-Classification-deep-learning-project.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33"},"headline":"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras &#8211; Deep Learning Project for Beginners","datePublished":"2020-05-09T13:49:44+00:00","dateModified":"2021-08-25T08:26:13+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/"},"wordCount":370,"commentCount":49,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-vs-Dogs-Classification-deep-learning-project.jpg","keywords":["cats and dogs classification","deep learning project","deep learning project for beginners"],"articleSection":["Keras Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/","url":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/","name":"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras - Deep Learning Project for Beginners - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-vs-Dogs-Classification-deep-learning-project.jpg","datePublished":"2020-05-09T13:49:44+00:00","dateModified":"2021-08-25T08:26:13+00:00","description":"In this Deep Learning project for beginners, we will develop a convolution neural network for classifying images of Cats and Dogs using Python with Keras","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-vs-Dogs-Classification-deep-learning-project.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Cats-vs-Dogs-Classification-deep-learning-project.jpg","width":802,"height":420,"caption":"Cats vs Dogs Classification deep learning project"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/cats-dogs-classification-deep-learning-project-beginners\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Keras Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/keras\/"},{"@type":"ListItem","position":3,"name":"Cats vs Dogs Classification (with 98.7% Accuracy) using CNN Keras &#8211; Deep Learning Project for Beginners"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team is passionate about delivering top-notch tutorials and resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With expertise in the tech industry, we simplify complex topics to help learners excel. Stay updated with our latest insights.","url":"https:\/\/data-flair.training\/blogs\/author\/dfadteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/77817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=77817"}],"version-history":[{"count":8,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/77817\/revisions"}],"predecessor-version":[{"id":80057,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/77817\/revisions\/80057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/77827"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=77817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=77817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=77817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}