<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by RomRoc on Medium]]></title>
        <description><![CDATA[Stories by RomRoc on Medium]]></description>
        <link>https://medium.com/@romroc?source=rss-668fed1c1d5f------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*w82nMZVR5bErqVHiWQ8fKw.jpeg</url>
            <title>Stories by RomRoc on Medium</title>
            <link>https://medium.com/@romroc?source=rss-668fed1c1d5f------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 12 Nov 2026 08:31:34 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@romroc/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Object Detection in Colab with Fizyr Retinanet]]></title>
            <link>https://medium.com/free-code-camp/object-detection-in-colab-with-fizyr-retinanet-efed36ac4af3?source=rss-668fed1c1d5f------2</link>
            <guid isPermaLink="false">https://medium.com/p/efed36ac4af3</guid>
            <category><![CDATA[keras]]></category>
            <category><![CDATA[tech]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[google-colab]]></category>
            <dc:creator><![CDATA[RomRoc]]></dc:creator>
            <pubDate>Thu, 04 Apr 2019 17:56:59 GMT</pubDate>
            <atom:updated>2019-04-04T17:56:59.577Z</atom:updated>
            <content:encoded><![CDATA[<h3>Object Detection in Google Colab with Fizyr Retinanet</h3><p>Let’s continue our journey to explore the best machine learning frameworks in computer vision.</p><p>In the <a href="https://hackernoon.com/object-detection-in-google-colab-with-custom-dataset-5a7bb2b0e97e">first article</a> we explored object detection with the official Tensorflow APIs. The <a href="https://hackernoon.com/instance-segmentation-in-google-colab-with-custom-dataset-b3099ac23f35">second article</a> was dedicated to an excellent framework for instance segmentation, Matterport Mask R-CNN based on Keras.</p><p>In this article we examine <strong>Keras implementation of RetinaNet object detection developed by </strong><a href="https://github.com/fizyr/keras-retinanet"><strong>Fizyr</strong></a>. RetinaNet, as described in <a href="https://arxiv.org/abs/1708.02002">Focal Loss for Dense Object Detection</a>, is the state of the art for object detection.<br>The object to detect with the trained model will be my little goat Rosa.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/596/1*g5nzQWVR79PK2vyznKgPAA.png" /><figcaption>Object detection with Fizyr</figcaption></figure><p><strong>The colab notebook and dataset are available in </strong><a href="https://github.com/RomRoc/objdet_fizyr_colab"><strong>my Github repo</strong></a><strong>.</strong></p><p>In this article, we go through all the steps in a single Google Colab netebook to train a model starting from a custom dataset.</p><p>We will keep in mind these principles:</p><ul><li>illustrate how to make the annotation dataset</li><li>describe all the steps in a single Notebook</li><li>use free software, Google Colab and Google Drive, so it’s based exclusively on <strong><em>free cloud resources</em></strong></li></ul><p>At the end of the article you will be surprised by the simplicity of use and the good results we will obtain through this object detection framework.</p><p><em>Despite its ease of use, Fizyr is a great framework, also used by the </em><a href="https://www.kaggle.com/c/rsna-pneumonia-detection-challenge/discussion/70421"><strong><em>winner</em></strong></a><strong><em> of the Kaggle competition</em></strong><em> “RSNA Pneumonia Detection Challenge”.</em></p><h3>Making the dataset</h3><p>We start by creating annotations for the training and validation dataset, using the tool <a href="https://github.com/tzutalin/labelImg"><strong>LabelImg</strong></a>. This excellent annotation tool let you quickly annotate the bounding boxes of the objects to train the machine learning model.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hexkVOVcABg586PVKLA8_w.jpeg" /><figcaption>LabelImg annotation tool</figcaption></figure><p>LabelImg creates annotations in PascalVoc format, so we need to convert annotations to Fizyr format:</p><ul><li>create a zip file containing training dataset images and annotations with the same filename (check my example dataset in Github)</li></ul><pre>objdet_dataset.zip<br>|- img1.jpg<br>|- img1.xml<br>|- img2.jpg<br>|- img2.xml<br>...</pre><ul><li>Upload zip file in Google Drive, get Drive file id, and substitute the DATASET_DRIVEID value</li><li>Run cell that iterates over the xml files and creates annotations.csv file</li></ul><p><em>Note: you can see </em><a href="https://stackoverflow.com/a/48855034/9250875"><em>my answer</em></a><em> on Stackoverflow to get the Drive file id.</em></p><h3>Model training</h3><p>Model training is the core of the notebook. Fizyr offers various parameters, described in <a href="https://github.com/fizyr/keras-retinanet/blob/c841da27f540084d27e971b6d00c178ff005d344/keras_retinanet/bin/train.py#L358">Github</a>, to run and optimize this step.</p><p>It’s a good option to start from a pretrained model instead of training a model from scratch. Fizyr released a model based on ResNet50 architecture, pretrained on Coco dataset.</p><pre>URL_MODEL = &#39;https://github.com/fizyr/keras-retinanet/releases/download/0.5.0/resnet50_coco_best_v2.1.0.h5&#39;</pre><p>We can even use our pretrained model, and continue the training from it. This option is particularly useful to train for some epochs, so save it in Google Drive, and later restart the training from the saved model. In this way we can bypass the 12-hour execution limit in Colab, and we can train the model for many epochs.</p><p>From my tests, a high value of batch_size and steps offers better results, but they greatly increase the execution time of each epoch.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/956/1*JqERUThopJQqX7S8QvkTtw.png" /><figcaption>Tensorboard training charts</figcaption></figure><p>We can start training from our custom dataset with:</p><pre>!keras_retinanet/bin/train.py --freeze-backbone --random-transform --weights {PRETRAINED_MODEL} --batch-size 8 --steps 500 --epochs 10 csv annotations.csv classes.csv</pre><p>Let’s analyze each argument passed to the script train.py.</p><ul><li>freeze-backbone: freeze the backbone layers, particularly useful when we use a small dataset, to avoid overfitting</li><li>random-transform: randomly transform the dataset to get data augmentation</li><li>weights: initialize the model with a pretrained model (your own model or one released by Fizyr)</li><li>batch-size: training batch size, higher value gives smoother learning curve</li><li>steps: number of steps for epochs</li><li>epochs: number of epochs to train</li><li>csv: annotations files generated by the script above</li></ul><p>The training process output contains a description of layers and loss metrics during training, and as you can see, loss metrics decrease during each epoch:</p><pre>Using TensorFlow backend.<br>...<br>Layer (type)                    Output Shape         Param #     Connected to<br>input_1 (InputLayer)            (None, None, None, 3 0<br>padding_conv1 (ZeroPadding2D)   (None, None, None, 3 0           input_1[0][0]                    <br>...<br>Total params: 36,382,957<br>Trainable params: 12,821,805<br>Non-trainable params: 23,561,152<br>None<br>Epoch 1/10<br>500/500 [==============================] - 1314s 3s/step - loss: 1.0659 - regression_loss: 0.6996 - classification_loss: 0.3663<br>Epoch 2/10<br>500/500 [==============================] - 1296s 3s/step - loss: 0.6747 - regression_loss: 0.5698 - classification_loss: 0.1048<br>Epoch 3/10<br>500/500 [==============================] - 1304s 3s/step - loss: 0.5763 - regression_loss: 0.5010 - classification_loss: 0.0753</pre><pre>Epoch 3/10<br>500/500 [==============================] - 1257s 3s/step - loss: 0.5705 - regression_loss: 0.4974 - classification_loss: 0.0732</pre><h3>Inference</h3><p>The last step performs inference of test images with the trained model.<br>The Fizyr framework allows us to perform inference using CPU, even if you trained the model with GPU. This feature is important in typical production environments, where people usually opt for less expensive hardware infrastructures for inference, without GPUs.</p><p>Let’s examine the following lines in detail:</p><pre>model_path = os.path.join(&#39;snapshots&#39;, sorted(os.listdir(&#39;snapshots&#39;), reverse=True)[0])<br>print(model_path)</pre><pre># load retinanet model<br>model = models.load_model(model_path, backbone_name=&#39;resnet50&#39;)<br>model = models.convert_model(model)</pre><p>The first line sets the model file as the last model generated by the training process in /snapshots directory. Then the model is loaded from the filesystem and converted to run inference.</p><p>You can change the values of THRES_SCORE, which represents the confidence threshold to show an object detection.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/596/1*PQgEJCIHsRx8FgwK1gCZYA.png" /><figcaption>Object detection inference</figcaption></figure><h3>Conclusions</h3><p>We went through the complete journey to make object detection with Fizyr implementation of RetinaNet. We created a dataset, trained a model, and ran inference (<a href="https://github.com/RomRoc/objdet_fizyr_colab">here</a> is my Github repo for the notebook and dataset).</p><p>I was impressed by the following aspects of this excellent framework:</p><ul><li>this framework is <strong>easy to use </strong>to get good inference, even without much customization</li><li>it was <strong>simple to transform annotations </strong>to Fizyr’s dataset format, compared to other frameworks.</li></ul><p>In general Fizyr is a good choice to start an object detection project, in particular if you need to quickly get good results.</p><p>If you enjoyed this article, leave a few claps, it will encourage me to explore further machine learning opportunities :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=efed36ac4af3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/free-code-camp/object-detection-in-colab-with-fizyr-retinanet-efed36ac4af3">Object Detection in Colab with Fizyr Retinanet</a> was originally published in <a href="https://medium.com/free-code-camp">We’ve moved to freeCodeCamp.org/news</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Instance Segmentation in Google Colab with Custom Dataset]]></title>
            <link>https://medium.com/hackernoon/instance-segmentation-in-google-colab-with-custom-dataset-b3099ac23f35?source=rss-668fed1c1d5f------2</link>
            <guid isPermaLink="false">https://medium.com/p/b3099ac23f35</guid>
            <category><![CDATA[google]]></category>
            <category><![CDATA[custom-dataset]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[google-colab]]></category>
            <category><![CDATA[instance-segmentation]]></category>
            <dc:creator><![CDATA[RomRoc]]></dc:creator>
            <pubDate>Tue, 18 Sep 2018 13:11:02 GMT</pubDate>
            <atom:updated>2018-09-18T13:11:02.522Z</atom:updated>
            <content:encoded><![CDATA[<p>This article proposes an easy and free solution to train a Tensorflow model for instance segmentation in Google Colab notebook, with a custom dataset.</p><p><a href="https://hackernoon.com/object-detection-in-google-colab-with-custom-dataset-5a7bb2b0e97e">Previous article</a> was about Object Detection in Google Colab with Custom Dataset, where I trained a model to infer bounding box of my dog in pictures. The protagonist of my article is again my dog: in this case we take a step forward, we identify not only the bounding box, we make even pixel wise classification.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*hXM7HTFNazzsUXI6MREbnA.png" /><figcaption>Instance segmentation with my dog</figcaption></figure><p><em>Compared to previous article, we hold the same characteristics:</em></p><ul><li><em>Only requirement is the dataset, created with annotation tool</em></li><li><em>A single Google Colab notebook contains all the steps: it starts from the dataset, executes the model’s training and shows inference</em></li><li><em>It runs in Google Colab (GPU enabled environment) and Google Drive storage, so </em><strong><em>it’s based exclusively on free cloud resources</em></strong></li></ul><p>These features allow anybody following this tutorial to create an instance segmentation model, and test it in Google Colab or export the model to run in a local machine.</p><p>Source code of this article, including the sample dataset, is available in my <a href="https://github.com/RomRoc/maskrcnn_train_tensorflow_colab">Github repo</a>.</p><h3>Choosing Framework</h3><p>There are various open source frameworks to implement instance segmentation, you can find an overview in <a href="http://cs231n.stanford.edu/slides/2018/cs231n_2018_ds06.pdf">this presentation</a> of Stanford University.</p><p>We discard solutions that are not based on Tensorflow, such as Facebook Detectron based on Caffe2, because we decided to train the model in Google Colab, that is already integrated with Tensorflow.</p><p>One of the most popular frameworks, easy to use and well documented, is <strong>Matterport Mask R-CNN</strong>. From my tests it’s one of the simplest and most robust implementations available.</p><p>In addition, a big effort I faced with other implementations is to convert the annotations output file to framework input format. To be clear, once you create the pixel annotations of dataset with a graphical tool, you should convert it to input format defined by training framework.</p><p>Matterport developed this task in a clear <a href="https://engineering.matterport.com/splash-of-color-instance-segmentation-with-mask-r-cnn-and-tensorflow-7c761e238b46">article</a>, demonstrating how to transform annotations file to Matterport Mask R-CNN format.</p><h3>Making Dataset</h3><p>In previous article we created bounding box annotations to obtain object detection model, now we are going to train instance segmentation model, therefore we create pixel level mask annotations to define the boundaries of the objects in dataset. Among various available tools, I chose an intuitive and well done tool: <strong>VGG Image Annotator (VIA)</strong> by University of Oxford, you can see documentation in the <a href="http://www.robots.ox.ac.uk/~vgg/software/via/">official page</a> of the project. Furthermore, it’s easy to integrate VIA with Matterport framework.</p><p>This tool doesn’t need any installation, you just download the package and open the via.htmlfile with a modern browser.</p><p>It’s important to create a good dataset to achieve a well performing trained model. Taking pictures of objects with different lighting conditions, from various angles and in different contexts, are good principles to obtain a well generalized model, and avoid overfitting.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/977/1*XKP96dxuk-gW1Iqz7oKt0w.png" /><figcaption>Dataset of dog</figcaption></figure><p>At the end of the annotation process, I created “images.zip” file with the following structure:</p><pre>images.zip<br>|- &quot;train&quot; directory<br>  |- jpg image files of training data<br>  |- &quot;via_region_data.json&quot; annotations file of training data<br>|- &quot;val&quot; directory<br>  |- jpg image files of validation data<br>  |- &quot;via_region_data.json&quot; annotations file of validation data</pre><p>Lastly I uploaded zip file into Google Drive, to use it during the training and test process. I included the dataset file in my Gitub repo, having pixel wise annotations of dog images.</p><h3>Training Model</h3><p>All the steps are in Google Colab notebook included in my repo. In my example, training process last about half an hour for 5 epochs, to get a more accurate model you can increase the number of epochs and the dataset size.</p><p>I selected Python3 GPU enabled environment, to use up to 12 hours of Tesla K80 GPU offered in Google Colab. Next steps in notebook are:</p><p><strong>Install required packages</strong>: install packages, repositories and environment variables for Matterport instance segmentation with Tensorflow.</p><p><strong>Download and extract dataset</strong>: download images.zip dataset in Google Colab filesystem, previously uploaded in Google Drive. Update fileId variable with Google Drive id of your image.zip dataset.</p><p><strong>Edit settings file</strong>: code in my repo is inspired by Matterport Splash of Color sample, to run with a different dataset you should replace occurrences of “balloon” and “Balloon” with the name of object.</p><p><strong>Train model</strong>: use pretrained weights to apply transfer learning in training process. Options are COCO and ImageNet.</p><p>Training process outputs the structure of neural network and various parameters, like the network architecture (Resnet50 or Resnet101).</p><pre>Using TensorFlow backend. <br>Weights:  coco <br>Dataset:  dataset/ <br>Logs:  /logs</pre><pre>Configurations: <br>BACKBONE                       resnet101 <br>BACKBONE_STRIDES               [4, 8, 16, 32, 64] <br>BATCH_SIZE                     2<br>...<br>GPU_COUNT                      1 <br>GRADIENT_CLIP_NORM             5.0 <br>IMAGES_PER_GPU                 2<br>...<br>Selecting layers to train <br>fpn_c5p5               (Conv2D) <br>fpn_c4p4               (Conv2D) <br>fpn_c3p3               (Conv2D) <br>fpn_c2p2               (Conv2D) <br>...</pre><p>Below the Tensorboard charts of training process:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/709/1*46TdUZSSTKd599B-10RIIw.png" /><figcaption>Tensorboard charts</figcaption></figure><h3>Inference</h3><p>Finally we can run test dataset inference with trained model.</p><p>Output includes inference data (image resolution, anchors shapes, …), and test images with bounding box, segmentation mask and confidence score.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*fe8fjQ3WJWn7BbpTCvTa_Q.png" /></figure><h3>Conclusions</h3><p>If you want to run instance segmentation on a single object class, you can make a few minor changes to my Github code and adapt it to your dataset.</p><p>I hope you liked this article, in case leave some claps, it will encourage me to write other practical articles about machine learning for computer vision :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b3099ac23f35" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hackernoon/instance-segmentation-in-google-colab-with-custom-dataset-b3099ac23f35">Instance Segmentation in Google Colab with Custom Dataset</a> was originally published in <a href="https://medium.com/hackernoon">HackerNoon.com</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Object Detection in Google Colab with Custom Dataset]]></title>
            <link>https://medium.com/hackernoon/object-detection-in-google-colab-with-custom-dataset-5a7bb2b0e97e?source=rss-668fed1c1d5f------2</link>
            <guid isPermaLink="false">https://medium.com/p/5a7bb2b0e97e</guid>
            <category><![CDATA[object-detection]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[google-colab]]></category>
            <category><![CDATA[tensorflow-model]]></category>
            <category><![CDATA[google]]></category>
            <dc:creator><![CDATA[RomRoc]]></dc:creator>
            <pubDate>Wed, 01 Aug 2018 16:14:28 GMT</pubDate>
            <atom:updated>2018-08-01T16:14:28.621Z</atom:updated>
            <content:encoded><![CDATA[<p>This article propose an easy and free solution to train a Tensorflow model for object detection in Google Colab, based on custom datasets. To demonstrate how it works I trained a model to detect my dog in pictures.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/618/0*7F_cuDcwjF0zJfno" /><figcaption>Object Detection with my dog</figcaption></figure><p>All the code and dataset used in this article is available in <a href="https://github.com/RomRoc/objdet_train_tensorflow_colab">my Github repo</a>.</p><p><em>Peculiarities of this proposal are:</em></p><ul><li><em>Only requirement is the dataset created with LabelImg</em></li><li><em>A single Google Colab notebook contains all the steps: it starts from the dataset, executes the model’s training and shows inference</em></li><li><em>It runs in Google Colab’s GPU enabled and Google Drive storage, so </em><strong><em>it’s based exclusively on free cloud resources</em></strong></li></ul><p>Furthermore, important changes have recently been made to Tensorflow’s Object Detection api, that made obsolete other available tutorials.</p><h3>Making dataset</h3><p>The only step not included in the Google Colab notebook is the process to create the dataset.</p><p>With an appropriate number of photos (my example have 50 photos of dog), I created the annotations. The tool I used is <a href="https://github.com/tzutalin/labelImg">LabelImg</a>. For the sake of simplicity I identified a single object class, my dog. It’s possible to extend it to obtain models that perform object detection on multiple object classes.</p><p>I renamed the image files in the format objectclass_id.jpg (i.e. dog_001.jpg, dog_002.jpg). Then in LabelImg, I defined the bounding box where the object is located, and I saved annotations in Pascal Voc format.</p><p>Finally I uploaded annotations files in my Google Drive account, using a single zip file with the following structure:</p><pre>.zip file<br>|-images directory<br>  |-image files (filename format: objectclass_id.jpg)<br>|-annotations directory<br>  |-xmls directory<br>    |-annotations files (filename format: objectclass_id.xml)</pre><p>Check my dataset file in Github to see an example.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/643/0*1XmU3NWh9KdO9uUH" /><figcaption>Dataset example</figcaption></figure><h3>Model training</h3><p>All the next steps are included in the Google Colab notebook. I execute cells in sequence to train the model and run inference:</p><p><strong>Install required packages:</strong> install packages, repositories and environment variables for object detection in Tensorflow, then run a test.</p><p><strong>Download and extract dataset:</strong> download in the filesystem the dataset created. It’s important that the zip file has the structure explained above.</p><p><strong>Empty png files:</strong> this is a cell to avoid error in create_pet_tf_record.py, it has not any effect in training process.</p><p><strong>Create TFRecord:</strong> from the dataset it creates the TFRecord. In this simplified version, algorithm will train model only for one class.</p><p><strong>Download pretrained model:</strong> download pretrained model from ModelZoo as initial checkpoint for transfer learning. In the example we download the model faster_rcnn_inception_v2_coco, to use another model from ModelZoo change MODEL var.</p><pre>MODEL = &#39;faster_rcnn_inception_v2_coco_2018_01_28&#39;<br>MODEL_FILE = MODEL + &#39;.tar.gz&#39;<br>DOWNLOAD_BASE = &#39;http://download.tensorflow.org/models/object_detection/&#39;<br>DEST_DIR = &#39;pretrained_model&#39;</pre><p><strong>Edit model config file:</strong> set the fields of the config file, identified by PATH_TO_BE_CONFIGURED. If you choose a different initial checkpoint model, update accordingly filename var and re.sub functions in the cell.</p><p><strong>Train model:</strong> this is the main step, it performs the train of the model with the data and the configurations so far created. It is possible to change the number of steps in train and in validation.</p><p>Below the Tensorboard charts resulting from training process:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/697/1*qGb5XNny5G8PrGQ5sejFvw.png" /><figcaption>Tensorboard charts</figcaption></figure><h3>Inference</h3><p><strong>Export trained model:</strong> export model to run inference. The cell converts last trained model to the format to run inference.</p><p><strong>Upload image for inference:</strong> browser upload of test image file to run inference in the next step.</p><p><strong>Run inference:</strong> finally it performs inference of the uploaded image, and shows the result below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/618/0*QoWclIHoL5pfCThl" /></figure><h3>Next goals</h3><p>Thanks a lot for reading my article. In this article we easily trained an object detection model in Google Colab with custom dataset, using Tensorflow framework. If you liked, leave some claps, I will be happy to write more about machine learning.</p><p>In next articles we will extend the Google Colab notebook to:</p><ul><li>Include <strong>multiple classes</strong> of object detection</li><li>View <strong>Tensorboard</strong> in a different browser tab during model training</li><li>Perform <strong>instance segmentation</strong> to do pixel wise classification</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5a7bb2b0e97e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hackernoon/object-detection-in-google-colab-with-custom-dataset-5a7bb2b0e97e">Object Detection in Google Colab with Custom Dataset</a> was originally published in <a href="https://medium.com/hackernoon">HackerNoon.com</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>