{"id":2301,"date":"2024-11-14T02:27:56","date_gmt":"2024-11-14T00:27:56","guid":{"rendered":"https:\/\/www.lucaamore.com\/?p=2301"},"modified":"2024-11-20T00:37:39","modified_gmt":"2024-11-19T22:37:39","slug":"advanced-convnet-for-detecting-simpsons-characters-trained-with-transfer-learning","status":"publish","type":"post","link":"https:\/\/www.lucaamore.com\/?p=2301","title":{"rendered":"Advanced ConvNet for Detecting Simpsons Characters Trained with Transfer Learning"},"content":{"rendered":"\n<p>Imagine sitting on your canary-yellow couch, sipping an ice-cold Duff with Homer, as Bart throws out a few quips and Lisa tries to correct you on every topic. Now, picture this: your one and only mission is to <strong>build a convolutional neural network (CNN)<\/strong> that can accurately recognize each member of the Simpsons cartoon. Because, with all that yellow around, even the best deep learning models might slip up!<\/p>\n\n\n\n<p><strong>The mission is clear: identify Homer, Bart, Marge, and the entire cast of Springfield with high precision and robust performance, as the images are dynamic, and the characters aren&#8217;t in obvious poses or positions.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-cnn-little.png\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"760\" data-id=\"2328\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-cnn-little.png\" alt=\"\" class=\"wp-image-2328\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-cnn-little.png 890w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-cnn-little-300x256.png 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-cnn-little-768x656.png 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-cnn-little-351x300.png 351w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/a><\/figure>\n<\/figure>\n\n\n\n<p><strong>Let\u2019s kick things off with a spoiler: <strong>the ConvNet we built achieved extraordinary results on every front<\/strong><\/strong>.  <\/p>\n\n\n\n<p class=\"has-text-align-left\"><mark style=\"background-color:#f8e406\" class=\"has-inline-color\"><strong>The outstanding accuracy achieved in recognizing characters on any new image (not used during training) is: 93.65%<\/strong> <\/mark><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><a href=\"https:\/\/www.kaggle.com\/code\/lucaamore\/convnet50-for-detecting-simpsons-characters\" data-type=\"link\" data-id=\"https:\/\/www.kaggle.com\/code\/lucaamore\/convnet50-simpson-character-identifer\">ANALYZE, REVIEW, AND FREELY MODIFY THE KAGGLE NOTEBOOK WITH THE SOURCES HERE<\/a><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageutsI27.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"570\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageutsI27.jpg\" alt=\"\" class=\"wp-image-2317\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageutsI27.jpg 576w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageutsI27-300x297.jpg 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageutsI27-303x300.jpg 303w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/a><figcaption class=\"wp-element-caption\">Metrics for Validation Dataset are excellent <\/figcaption><\/figure>\n\n\n\n<p>How did I achieve this? I built my best <strong>CNN, trained using transfer learning<\/strong> and enhanced with <strong>data augmentation<\/strong> to improve robustness and generalization. This challenge was a <strong>magical doorway<\/strong>, plunging me once again into the <strong>fascinating world of deep learning<\/strong>\u2014a parallel dimension where every pixel offers a new opportunity to experiment with and dive into cutting-edge techniques. And so, once again, after long workdays, I found myself on the metro, in the car, or even in some magical corner, studying and coding.<\/p>\n\n\n\n<p>The dataset I ventured into is the famous <strong><a href=\"https:\/\/www.kaggle.com\/datasets\/alexattia\/the-simpsons-characters-dataset\">\u201cThe Simpsons Characters Data\u201d<\/a><\/strong> (by Alexandre Attia) available on Kaggle: <strong>16,670 images<\/strong> covering a whopping <strong>43 different characters from Springfield<\/strong>. After acquiring it, I stumbled upon the first challenge\u2014worthy of a Simpsons-style slip on a banana peel: the dataset is <strong>highly imbalanced<\/strong>. Main characters have thousands of images (Homer, Bart, Lisa), while others have only a few (poor Lionel Hutz and Disco Stu!).<\/p>\n\n\n\n<p>To balance the dataset, I had to set a threshold: only characters with <strong>at least 200 images<\/strong> were included in the training. This allowed me to focus on well-represented characters. With this selection of Springfield&#8217;s finest, the CNN had a solid foundation to start <strong>accurately recognizing the most iconic characters<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu-1024x585.jpg\" alt=\"\" class=\"wp-image-2305\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu-1024x585.jpg 1024w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu-300x171.jpg 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu-768x439.jpg 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu-1536x878.jpg 1536w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu-500x286.jpg 500w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageDhwRDu.jpg 1792w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><br><strong>Transfer learning<\/strong> is a technique where you take a <strong>pre-trained model<\/strong> (such as one trained on <strong>ImageNet<\/strong>) and \u201ctransfer\u201d its knowledge to solve a <strong>specific new task<\/strong>, like recognizing the Simpsons characters. This approach allows you to <strong>leverage the initial layers, already \u2018skilled\u2019 at recognizing general patterns<\/strong> (shapes, colors, textures), so you can focus on fine-tuning only the final layers to <strong>distinguish the unique details<\/strong> of each character. Generally, for this type of problem, it\u2019s an <strong>excellent solution<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage9xbHOf.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"359\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage9xbHOf.jpg\" alt=\"\" class=\"wp-image-2319\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage9xbHOf.jpg 762w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage9xbHOf-300x141.jpg 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage9xbHOf-500x236.jpg 500w\" sizes=\"auto, (max-width: 762px) 100vw, 762px\" \/><\/a><figcaption class=\"wp-element-caption\">CNN model structure<\/figcaption><\/figure>\n\n\n\n<p>Identifying the <strong>overall structure is an art akin to magic<\/strong>. For this project, I sought a blend of <strong>flexibility and robustness<\/strong>: <strong>data augmentation<\/strong> enhances generalization, the <strong>base model leverages the power of transfer learning<\/strong>, and <strong>GlobalAveragePooling2D<\/strong> reduces parameters while retaining essential information. The <strong>dense layer with 512 neurons<\/strong> captures the main features, while <strong>Dropout prevents overfitting and boosts robustness<\/strong>, making the model less reliant on individual neurons and more capable of generalizing to new data. The <strong>softmax output<\/strong> enables accurate classification among the various characters.<\/p>\n\n\n\n<p>Choosing <strong>ConvNet50 as the pre-trained base model<\/strong> felt like selecting the best superhero to tackle the battle for Simpsons recognition! Also known as <strong>ResNet50<\/strong>, this network is built on a <strong>50-layer deep structure<\/strong> designed to scrutinize every pixel with microscopic precision. ConvNet50 is pre-trained on <strong>ImageNet<\/strong>, a dataset that has processed millions of images and learned to recognize even the smallest details. This means that, even if it\u2019s never seen Homer, Bart, or any Simpsons episode, it already knows how to identify shapes, colors, and textures to near perfection.<\/p>\n\n\n\n<p><strong>Why ConvNet50?<\/strong> First, this network\u2019s design incorporates an architecture based on <strong>residual blocks<\/strong>. These blocks help maintain the information flow even in a deep network like this one, ensuring high accuracy and reducing the risk of <strong>vanishing gradients<\/strong>. It\u2019s like giving the network the best GPS possible, so it always knows where it\u2019s heading, no matter how long the journey. In our case, this means a network that stays on track, avoiding drift into errors and maintaining focus even on the finest details.<\/p>\n\n\n\n<p>Another base model alternatives I explored:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>InceptionV3<\/strong>: Another deep learning powerhouse, known for its ability to handle multiple scales within images. InceptionV3 could have offered greater flexibility in recognizing details like <strong>Marge\u2019s big blue hair<\/strong> or <strong>Bart\u2019s rebellious spikes<\/strong>, as it explores different dimensions of the same image. Often oversized, InceptionV3 is ideal for scenarios with highly intricate details that require multi-scale detection.<\/li>\n\n\n\n<li><strong>VGG16 or VGG19<\/strong>: Widely used and simpler in structure compared to ConvNet50, yet deep and precise. These networks perform excellently in many computer vision applications, though they tend to be less efficient in terms of resources.<\/li>\n\n\n\n<li><strong>MobileNet<\/strong>: Ideal if my goal were to deploy the model on mobile or low-resource devices. MobileNet is fast and lightweight\u2014an extreme nerd choice if I wanted my CNN to run on an embedded system. But for the Simpsons, opting for a more powerful model made sense!<\/li>\n<\/ul>\n\n\n\n<p>Ultimately, <strong>ConvNet50 offers the perfect balance<\/strong>: it\u2019s deep enough to capture the complexities of Springfield\u2019s characters, well-trained to capture even the smallest details, and optimized to provide fast and efficient results without overloading the system.<\/p>\n\n\n\n<p>To achieve excellent results, I incorporated <strong>data augmentation<\/strong>, an essential technique for improving model performance, especially when the dataset is imbalanced or limited in the number of images. In our case, data augmentation allows us to virtually increase the size of the dataset by creating variations of existing images (through rotation, zoom, contrast, and horizontal reflection).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy-1024x585.webp\" alt=\"Mad Self Portrait of myself analyzing the results archived\" class=\"wp-image-2313\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy-1024x585.webp 1024w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy-300x171.webp 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy-768x439.webp 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy-1536x878.webp 1536w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy-500x286.webp 500w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-accuraciy.webp 1792w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">A self-portrait of myself analyzing the outstanding results achieved<\/figcaption><\/figure>\n\n\n\n<p>After <strong>transfer learning<\/strong>, where we unlock and retrain only the final layers of the pre-trained model, I applied <strong>fine-tuning<\/strong>, unlocking and retraining only the last layers of the model. This approach allows the model to <strong>specialize in the details of the Simpsons characters<\/strong>, retaining general knowledge while adapting to the specific nuances of the new dataset.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"422\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg-1024x422.jpg\" alt=\"\" class=\"wp-image-2322\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg-1024x422.jpg 1024w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg-300x124.jpg 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg-768x317.jpg 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg-500x206.jpg 500w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImage4SuFpg.jpg 1189w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Validation e Training Dataset &#8211; Loss and Accuracy during Transfer Training<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"422\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM-1024x422.jpg\" alt=\"Validation e Training Dataset - Loss and Accuracy during Fine Tuning Training\" class=\"wp-image-2315\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM-1024x422.jpg 1024w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM-300x124.jpg 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM-768x317.jpg 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM-500x206.jpg 500w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImagehwbevM.jpg 1188w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Validation e Training Dataset &#8211; Loss and Accuracy during Fine Tuning Training<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"647\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw-1024x647.jpg\" alt=\"\" class=\"wp-image-2318\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw-1024x647.jpg 1024w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw-300x190.jpg 300w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw-768x485.jpg 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw-475x300.jpg 475w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageLAkYCw.jpg 1133w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Simpson Characters Recognition &#8211; Confusion Matrix<\/figcaption><\/figure>\n\n\n\n<p><strong>We present the simulation on images from the dataset not used in training<\/strong>, showcasing the actual character, the recognized character, and the network\u2019s confidence level. These are images the network has never seen before, yet it identifies them with a high degree of certainty. <strong>Click on the images to view them in detail<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageBHthAB-scaled-e1731534484684.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"1024\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageBHthAB-scaled-e1731534484684-994x1024.jpg\" alt=\"\" class=\"wp-image-2321\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageBHthAB-scaled-e1731534484684-994x1024.jpg 994w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageBHthAB-scaled-e1731534484684-291x300.jpg 291w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageBHthAB-scaled-e1731534484684-768x791.jpg 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/tempImageBHthAB-scaled-e1731534484684.jpg 1233w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871.png\"><img loading=\"lazy\" decoding=\"async\" width=\"983\" height=\"1024\" src=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871-983x1024.png\" alt=\"\" class=\"wp-image-2324\" srcset=\"https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871-983x1024.png 983w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871-288x300.png 288w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871-768x800.png 768w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871-1475x1536.png 1475w, https:\/\/www.lucaamore.com\/wp-content\/uploads\/2024\/11\/simpson-simulation-1-e1731534577871.png 1922w\" sizes=\"auto, (max-width: 983px) 100vw, 983px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><strong><a href=\"https:\/\/www.kaggle.com\/code\/lucaamore\/convnet50-for-detecting-simpsons-characters\" data-type=\"link\" data-id=\"https:\/\/www.kaggle.com\/code\/lucaamore\/convnet50-simpson-character-identifer\"><strong><\/strong><\/a><strong><a href=\"https:\/\/www.kaggle.com\/code\/lucaamore\/convnet50-for-detecting-simpsons-characters\" data-type=\"link\" data-id=\"https:\/\/www.kaggle.com\/code\/lucaamore\/convnet50-simpson-character-identifer\">ANALYZE, REVIEW, AND FREELY MODIFY THE KAGGLE NOTEBOOK WITH THE SOURCES HERE<\/a><\/strong><\/strong><\/p>\n\n\n\n<p><strong>This project is highly reusable for numerous similar applications<\/strong>. Depending on the project\u2019s requirements, one could adjust the model\u2019s structure or choose a different base model.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><a href=\"https:\/\/github.com\/lookee\/cnn-simpson\/\" data-type=\"link\" data-id=\"https:\/\/github.com\/lookee\/cnn-simpson\/\">GITHUB SOURCE &#8211; CNN-SIMPSON<\/a><\/strong> <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8220;In the wise words of Homer Simpson, &#8216;Mmm\u2026 data!&#8217; With this model, even Springfield would be proud of our machine learning journey!&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p>The <strong>charts and model performance metrics<\/strong> are based on a single execution of the notebook. With each run, these values may vary slightly, yet they consistently remain optimal and align closely with the results shown.<\/p>\n\n\n\n<p><strong>If this topic has sparked your interest<\/strong> and you&#8217;d like to delve deeper, <strong>I suggest these references<\/strong>:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.kaggle.com\/code\/kanncaa1\/convolutional-neural-network-cnn-tutorial\">Kaggle &#8211; Convolutional Neural Network (CNN) Tutorial &#8211; Kaggle<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.coursera.org\/learn\/convolutional-neural-networks\" data-type=\"link\" data-id=\"https:\/\/www.coursera.org\/learn\/convolutional-neural-networks\">Coursera &#8211; Convolutional Neural Networks by Andrew Ng<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/cs231n.stanford.edu\/\" data-type=\"link\" data-id=\"https:\/\/cs231n.stanford.edu\/\">Stanford University &#8211; CS231n: Convolutional Neural Networks for Visual Recognition<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/poloclub.github.io\/cnn-explainer\/\" data-type=\"link\" data-id=\"https:\/\/poloclub.github.io\/cnn-explainer\/\">GitHub &#8211; CNN Explainer<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.udacity.com\/course\/convolutional-neural-networks--cd1821\" data-type=\"link\" data-id=\"https:\/\/www.udacity.com\/course\/convolutional-neural-networks--cd1821\">Udacity &#8211; Convolutional Neural Networks<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/d2l.ai\/\" data-type=\"link\" data-id=\"https:\/\/d2l.ai\/\">Dive into Deep Learning (D2L)<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.kaggle.com\/learn-guide\/transfer-learning-cv\">Kaggle &#8211; Transfer Learning for CV Guide<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine sitting on your canary-yellow couch, sipping an ice-cold Duff with Homer, as Bart throws out a few quips and Lisa tries to correct you on every topic. Now, picture this: your one and only mission is to build a &hellip; <a href=\"https:\/\/www.lucaamore.com\/?p=2301\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2306,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[16,111,108,105,42,192,114,103,43,167,166,11,149,194,165,193],"tags":[75,200,101,119,66,197,120,96,202,95,198,65,195,199,201,196],"class_list":["post-2301","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-cnn","category-colab","category-competition","category-computervision","category-convnet50","category-deep-learning","category-kaggle","category-machine-learning","category-models","category-programming","category-python","category-random-forest","category-tensorflow","category-top","category-transfert-learning","tag-artificial-intelligence","tag-cartoon","tag-classification","tag-cnn","tag-colab","tag-data-augmentation","tag-deep-learning","tag-kaggle","tag-keras","tag-machine-learning","tag-multiclass-classification","tag-python","tag-simpson","tag-springfield","tag-tensorflow","tag-transfer-learning"],"_links":{"self":[{"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/posts\/2301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2301"}],"version-history":[{"count":34,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/posts\/2301\/revisions"}],"predecessor-version":[{"id":2377,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/posts\/2301\/revisions\/2377"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=\/wp\/v2\/media\/2306"}],"wp:attachment":[{"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lucaamore.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}