<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: David Ibáñez</title>
    <description>The latest articles on Forem by David Ibáñez (@kriyeng).</description>
    <link>https://forem.com/kriyeng</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F133435%2F9d82b36f-caef-4d5b-9ddd-85e67d9ef593.jpg</url>
      <title>Forem: David Ibáñez</title>
      <link>https://forem.com/kriyeng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kriyeng"/>
    <language>en</language>
    <item>
      <title>Training YOLO using Darknet Set Up Cheat Sheet</title>
      <dc:creator>David Ibáñez</dc:creator>
      <pubDate>Sun, 05 May 2019 16:20:20 +0000</pubDate>
      <link>https://forem.com/kriyeng/yolo-on-draknet-set-up-cheat-sheet-4346</link>
      <guid>https://forem.com/kriyeng/yolo-on-draknet-set-up-cheat-sheet-4346</guid>
      <description>&lt;h2&gt;
  
  
  A cheat sheet to easy understand how the config files have to be set up to train YOLO using Darknet.
&lt;/h2&gt;

&lt;p&gt;This Cheat sheet it's a recap of different files involved in setting up YOLO model using Darknet.  &lt;/p&gt;

&lt;p&gt;Starting off the command line you need to execute to start training your model, it explains which files are needed, what parameters need to be configured, the meaning of each parameter and where to place your data set and config files. It's based in Google Colaboratory notebook, but it can be ported to your local environment as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ubtQimXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://blog.ibanyez.info/download/B20190410T000000072.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ubtQimXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://blog.ibanyez.info/download/B20190410T000000072.png" alt="Darknet Yolo Config Files.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can download the image &lt;a href="http://blog.ibanyez.info/download/B20190410T000000072.png"&gt;here&lt;/a&gt; to expand.&lt;/p&gt;

&lt;p&gt;If you have questions or suggestions, comment these right here!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; Some people asked me on Twitter what's YOLO. You can find a more detailed but basic explanation &lt;a href="http://blog.ibanyez.info/blogs/coding/20190410-run-a-google-colab-notebook-to-train-yolov3-using-darknet-in/#some-information-about-object-detection-yolo-darknet-and-some-basics-about-deep-learning"&gt;in this post&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>beginners</category>
      <category>yolo</category>
      <category>darknet</category>
    </item>
    <item>
      <title>8 Tips For Google Colab Notebooks To Take Advantage Of Their Free-of-charge 12GB-RAM GPU.</title>
      <dc:creator>David Ibáñez</dc:creator>
      <pubDate>Fri, 12 Apr 2019 15:27:52 +0000</pubDate>
      <link>https://forem.com/kriyeng/8-tips-for-google-colab-notebooks-to-take-advantage-of-their-free-of-charge-12gb-ram-gpu-be4</link>
      <guid>https://forem.com/kriyeng/8-tips-for-google-colab-notebooks-to-take-advantage-of-their-free-of-charge-12gb-ram-gpu-be4</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fguw5bt6tjx438fkse6yf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fguw5bt6tjx438fkse6yf.jpg" alt="Title"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Colab is a free cloud service  based on Jupyter Notebooks for machine learning education and research. It provides a runtime fully configured for deep learning and &lt;strong&gt;free-of-charge access to a robust GPU&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;These 8 tips are the result of two weeks playing with Colab to train a YOLO model using Darkent. I was about to give up for some inconvenience of the tool. But, at a second chance and after some struggling, some tweaks, &lt;strong&gt;I discovered a wonderful tool, for free and available for everyone&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first thing you'll notice using Colab notebooks is the handicap of dealing with a runtime that will blow up every 12 hours into the space! This is why is so important to speed up the time you need to run your runtime again. These tips allowed me to start to train again the model in less time and less manual interaction possible. I had my new trained weights automatically saved in my local computer during the trainig as well&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These tips are based on training YOLO using Darknet, but I'll try to generalize. &lt;/p&gt;

&lt;p&gt;Let's take a look!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm in &lt;strong&gt;get to the point mode&lt;/strong&gt; here, but you can find &lt;a href="http://blog.ibanyez.info/blogs/coding/20190410-run-a-google-colab-notebook-to-train-yolov3-using-darknet-in/" rel="noopener noreferrer"&gt;step by step tutorial&lt;/a&gt;, the runnable &lt;a href="https://colab.research.google.com/drive/1lTGZsfMaGUpBG4inDIQwIJVW476ibXk_#scrollTo=Cqo1gtPX6BXO" rel="noopener noreferrer"&gt;Colab notebook&lt;/a&gt; or the &lt;a href="https://github.com/kriyeng/yolo-on-colab-notebook" rel="noopener noreferrer"&gt;github repo&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. Map your Google Drive
&lt;/h2&gt;

&lt;p&gt;On Colab notebooks you can access your Google Drive as a network mapped drive in the Colab VM runtime.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# This cell imports the drive library and mounts your Google Drive as a VM local drive.  
# You can access to your Drive files using this path "/content/gdrive/My Drive/"
&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.colab&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;drive&lt;/span&gt;
&lt;span class="n"&gt;drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.ibanyez.info%2Fdownload%2FB20190408T000000060.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.ibanyez.info%2Fdownload%2FB20190408T000000060.jpg" alt="schema drive.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Work with your files transparently in your computer
&lt;/h2&gt;

&lt;p&gt;You can sync a Google Drive folder in your computer. Along with the previous tip, your local files will be available locally in your Colab notebook.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.ibanyez.info%2Fdownload%2FB20190408T000000063.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.ibanyez.info%2Fdownload%2FB20190408T000000063.jpg" alt="Sync Drive.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll use a Google Drive folder named &lt;code&gt;darknet&lt;/code&gt;. This is the folder I'll keep synced in my local computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Reduce manual interactions on every run
&lt;/h2&gt;

&lt;p&gt;In my case I need to download cuDNN form Nvidia every time. This library needs login to download. My approach is to save the tar file in my computer one time. On every run I extract the files directly where the lib files need to be. No need to manual upload.&lt;br&gt;
You can apply this to any lib you need to install.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Extracts the cuDNN files from Drive folder directly to the VM CUDA folders
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;xzvf&lt;/span&gt; &lt;span class="n"&gt;gdrive&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;My&lt;/span&gt;\ &lt;span class="n"&gt;Drive&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cuDNN&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cudnn&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;10.0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v7&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;56.&lt;/span&gt;&lt;span class="n"&gt;tgz&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;chmod&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cuda&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cudnn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;

&lt;span class="c1"&gt;# Now we check the version we already installed. Can comment this line on future runs
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cuda&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cudnn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;grep&lt;/span&gt; &lt;span class="n"&gt;CUDNN_MAJOR&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Don't compile libraries on every run, just once.
&lt;/h2&gt;

&lt;p&gt;Because I'm using Darknet, I need to clone the repository and compile the framework on every run. This takes some time on every run. My solution was to compile the sources only the first time I run the notebook and keep a copy of the executable file in my Drive folder. On future runs, I only need to copy the bin file to the necessary folder. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code for the first run&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Leave this code uncommented on the very first run of your notebook
# or if you ever need to recompile darknet again.
# Comment this code on the future runs.
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;kriyeng&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;darknet&lt;/span&gt;

&lt;span class="c1"&gt;# Check the folder
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;ls&lt;/span&gt;

&lt;span class="c1"&gt;# I have a branch where I have done the changes commented below
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;checkout&lt;/span&gt; &lt;span class="n"&gt;feature&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;colab&lt;/span&gt;

&lt;span class="c1"&gt;#Compile Darknet
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;make&lt;/span&gt;

&lt;span class="c1"&gt;#Copies the Darknet compiled version to Google drive
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;cp&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gdrive&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;My&lt;/span&gt;\ &lt;span class="n"&gt;Drive&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you are interested in using Darknet:&lt;/strong&gt; I use a modified version of Darknet. I needed to apply some changes on the original source. My approach here is to use the configuration files directly from Drive. Original Darknet does not allow to have spaces on the file paths in the config file &lt;code&gt;obj.data&lt;/code&gt;. I added the feature to accept escaped spaces: &lt;strong&gt;(...)/grdive/My\ Drive/darknet&lt;/strong&gt; &lt;br&gt;
I reduced the number of log lines printed on screen. Original source prints more lines on screen that Colab notebook can synchronize with your browser.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Code to execute after the first run&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Uncomment after the first run, when you have a copy of compiled darkent in your Google Drive
&lt;/span&gt;
&lt;span class="c1"&gt;# Makes a dir for darknet and move there
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="n"&gt;darknet&lt;/span&gt;
&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;darknet&lt;/span&gt;

&lt;span class="c1"&gt;# Copy the Darkent compiled version to the VM local drive
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;cp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gdrive&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;My&lt;/span&gt;\ &lt;span class="n"&gt;Drive&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;

&lt;span class="c1"&gt;# Set execution permissions to Darknet
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;chmod&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Clean your root folder on Google Drive
&lt;/h2&gt;

&lt;p&gt;There's some resources from Google that explains that having a lot of files in your root folder can affect the process of mapping the unit. If you have a lot of files in your root folder on Drive, create a new folder and move all of them there. I suppose that having a lot of folders on the root folder will have similar impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Copy your data sets to VM local filesystem to improve training speeds.
&lt;/h2&gt;

&lt;p&gt;Colab notebooks sometimes have some lag working with the Drive files. I found that copying your dataset to the VM filesystem improves the speed. This causes that on every run you need to spend some time to copy your data set files locally, but it'll have a considerable impact on training times.&lt;br&gt;
You can try two approaches here depending on your data set size and your results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First approach. Copy your data from Drive to the VM drive&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Copy files from Google Drive to the VM local filesystem
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;cp&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/img&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maybe there's another option is to have your data set compressed in your Drive. Then copy the tar file and extract locally in the notebook. I've not tested this one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second approach. Upload your data set to git repo and download them from there&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Git clone directly to ./img folder
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;your&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;

&lt;span class="c1"&gt;# Check the result - Uncomment when you checked for speed up further runs
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Work with the config files directly from your computer.
&lt;/h2&gt;

&lt;p&gt;Keeping all you config files on your computer can make the things a lot easier and handy. You modify any config locally, with your favorite editor and will be synced automatically and accessible from your notebook.&lt;/p&gt;

&lt;p&gt;This is how I execute darknet to start training.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt; &lt;span class="n"&gt;detector&lt;/span&gt; &lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/obj.data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/yolov3.cfg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/darknet53.conv.74&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dont_show&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and this is my &lt;code&gt;obj.data&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classes=1
train = /content/gdrive/My\ Drive/darknet/train.txt
test = /content/gdrive/My\ Drive/darknet/test.txt
names = /content/gdrive/My\ Drive/darknet/obj.names
backup = /content/gdrive/My\ Drive/darknet/backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. Get your trained weights directly synced in your computer in real-time during the training
&lt;/h2&gt;

&lt;p&gt;As you can see in the lines above, I'm setting the backup folder to my Google Drive. Because my Drive is synced to my computer, then I receive the trained weights in real-time while the notebook is training. This has some advantages: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can check how it is going locally in your computer with your test data set while the model is training.&lt;/li&gt;
&lt;li&gt;When the runtime is closed after 12 hours, you have your last trained weights saved in your computer&lt;/li&gt;
&lt;li&gt;You can run the notebook again and start training where it was the last session with this code:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Start training at the point where the last runtime finished
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;darknet&lt;/span&gt; &lt;span class="n"&gt;detector&lt;/span&gt; &lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/obj.data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/yolov3.cfg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/gdrive/My Drive/darknet/backup/yolov3_last.weights&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dont_show&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find an step tutorial or the runnable Colab notebook here 👇&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More deep explanation in the &lt;a href="http://blog.ibanyez.info/blogs/coding/20190410-run-a-google-colab-notebook-to-train-yolov3-using-darknet-in/" rel="noopener noreferrer"&gt;step by step tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Run it for yourself at Colab: &lt;a href="https://colab.research.google.com/drive/1lTGZsfMaGUpBG4inDIQwIJVW476ibXk_" rel="noopener noreferrer"&gt;Colab notebook for training YOLO using Darknet with tips &amp;amp; tricks to turn Colab notebook into a useful tool&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;You can find the notebook at &lt;a href="https://github.com/kriyeng/yolo-on-colab-notebook/" rel="noopener noreferrer"&gt;Github&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading! I hope you enjoyed! I'll encourage you to send me some feedback and suggestions. Open a discussion here!&lt;/p&gt;

&lt;p&gt;Happy object detection programming!&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.ibanyez.info%2Fdownload%2FB20190410T000000073.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.ibanyez.info%2Fdownload%2FB20190410T000000073.jpg" alt="cyclist-3659933_1920-yolo.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;YOLO original web site &lt;a href="https://pjreddie.com/darknet/yolo/" rel="noopener noreferrer"&gt;Joseph Redmon Page&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AlexeyAB darknet repo &lt;a href="https://github.com/AlexeyAB/darknet/" rel="noopener noreferrer"&gt;github&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Ivan Goncharov &lt;a href="https://github.com/ivangrov/YOLOv3-GoogleColab/blob/master/YOLOv3_GoogleColab.ipynb" rel="noopener noreferrer"&gt;notebook&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ieeexplore.ieee.org/document/8485684" rel="noopener noreferrer"&gt;Performance Analysis of Google Colaboratory as a Tool for Accelerating Deep Learning Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>machinelearning</category>
      <category>beginners</category>
      <category>yolo</category>
      <category>darknet</category>
    </item>
    <item>
      <title>50 Days of the #100DaysOfCode challenge</title>
      <dc:creator>David Ibáñez</dc:creator>
      <pubDate>Sun, 17 Feb 2019 16:06:27 +0000</pubDate>
      <link>https://forem.com/kriyeng/50-days-of-the-100daysofcode-challenge-58n</link>
      <guid>https://forem.com/kriyeng/50-days-of-the-100daysofcode-challenge-58n</guid>
      <description>&lt;h1&gt;
  
  
  50 Days Of The #100DaysOfCode challenge
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TJ0zhXJk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j96f49mu5bbjik8sfrv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TJ0zhXJk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j96f49mu5bbjik8sfrv8.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm in the &lt;strong&gt;halfway point&lt;/strong&gt; of the challenge today! At this point I'm &lt;strong&gt;definitely happy&lt;/strong&gt; of taking part on it.&lt;br&gt;
It's being a funny and productive journey so far. I'm learning a lot of new things, meeting a lot of great people and working on myself.&lt;/p&gt;

&lt;p&gt;I have to say that taking part in the challenge it's part of last year &lt;strong&gt;purpose to work on myself&lt;/strong&gt;. The challenge is not the only inputs I have to improve.&lt;/p&gt;

&lt;p&gt;On January, I've set &lt;a href="http://blog.ibanyez.info/blogs/about-me/20190102-my-achievable-goals-for-2019/"&gt;My achievable goals for 2019&lt;/a&gt;. Thanks to the challenge, We're in mid February and I'm almost at the &lt;strong&gt;50% of reaching these goals&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let's see my achievements so far!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal improvements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I've got consistency in applying some time a day to a defined goal. I used to learn, to write, and to work on side projects. I realized that this &lt;strong&gt;consistency is helping me&lt;/strong&gt; in other areas of my life, removing some background laziness. It's something like going to gym for a while everyday.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thanks to consistency (and working on myself as well), I'm starting to improve the way I appreciate other activities. I'm becoming better &lt;strong&gt;enjoying my family time&lt;/strong&gt;, focusing on what I'm doing on every moment. Far from the point where I'd like to be, but &lt;strong&gt;improving!&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PCbTYO22--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0ty2ajew326w5fyx012s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PCbTYO22--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0ty2ajew326w5fyx012s.png" alt="undraw_fatherhood_7i19.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've started to enjoy dedicating some time to not productive activities &lt;strong&gt;without regretting myself&lt;/strong&gt;. Just enjoying it!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Projects and coding related&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discovered and start to being involved in a &lt;strong&gt;great community out there&lt;/strong&gt;. It's amazing how many people exists willing to help others and with so many projects and awesome ideas.&lt;/li&gt;
&lt;li&gt;For the first time ever I started to work on &lt;strong&gt;open source projects&lt;/strong&gt;. I've opened a few pull requests, accepted and merged. Learnt a lot on how these communities get organized and how &lt;code&gt;git&lt;/code&gt; tools work on this environments.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've been involved in &lt;strong&gt;starting two projects for fun&lt;/strong&gt; with some people around the world. It's funny to discover how to organize communities with so many time zones.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--efISEtBl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bx9da4ln4xjwtjyeb7yx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--efISEtBl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bx9da4ln4xjwtjyeb7yx.png" alt="undraw_group_chat_v059.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I'm beating my fear to share my work. I start to feel good sharing my work, writing tutorials. I'm overcoming my impostor syndrome &lt;em&gt;bit by bit&lt;/em&gt; ;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've posted 6 of 10 of the articles I've proposed for this year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've published Part #1 and part #2 of the tutorial &lt;a href="http://blog.ibanyez.info/blogs/coding/20190126-create-your-own-framework/"&gt;Create Your Own Framework In Less Than 350 Lines Of Code&lt;/a&gt;. I'm in the halfway point of it!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My assessment of taking part in the challenge at this point is therefore &lt;strong&gt;excellent&lt;/strong&gt;. I &lt;strong&gt;highly recommend&lt;/strong&gt; this challenge to almost everyone who needs some willpower and encouragement to start doing those things she/he never started or ended.&lt;/p&gt;

&lt;p&gt;I'll get the second part of the challenge totally encouraged and excited to accomplish a lot more things!&lt;/p&gt;

&lt;p&gt;This post was published early today &lt;a href="http://blog.ibanyez.info/blogs/about-me/20190217-what-i-achieved-after-50-days-taking-part-in-the-100daysofco/"&gt;on my blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>challenge</category>
      <category>learning</category>
    </item>
    <item>
      <title>Open question. Is it really possible to keep a big project code clean?</title>
      <dc:creator>David Ibáñez</dc:creator>
      <pubDate>Thu, 14 Feb 2019 18:48:47 +0000</pubDate>
      <link>https://forem.com/kriyeng/open-question-is-it-really-possible-to-keep-a-big-project-code-clean-4e9</link>
      <guid>https://forem.com/kriyeng/open-question-is-it-really-possible-to-keep-a-big-project-code-clean-4e9</guid>
      <description>&lt;p&gt;I've been coding for more than 15 years now. I've worked on many different technologies and tryied some different patterns. I always find struggling with the code when the project reach some level of complexity and size. No matter if using MVC, modules, components, event driven. At some points and as soon projects need evolution during the time, it gets messed up in some way. &lt;/p&gt;

&lt;p&gt;During the years I've seen that the more design at the beginning the longer it keeps neat, but at some point always get messed up in some way.&lt;/p&gt;

&lt;p&gt;I don't mean totally uncontrolled code, or unreadable one, but it's hard to know what parts interacts with each other, what code is related in some manner to another one, ...I always find myself wanting to refactor the project almost from scratch.&lt;/p&gt;

&lt;p&gt;I'd like to have an honest opionion from your experiences and if you &lt;strong&gt;really&lt;/strong&gt; find a way to keep the things totally under control.&lt;/p&gt;

&lt;p&gt;Is always design before already code the main reason to keep your code clean?&lt;/p&gt;

&lt;p&gt;Did you find your tool/framework that &lt;strong&gt;sincerely&lt;/strong&gt; allows you to keep it neater?&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tips</category>
    </item>
    <item>
      <title>A little story about Javascript Protoype</title>
      <dc:creator>David Ibáñez</dc:creator>
      <pubDate>Wed, 06 Feb 2019 13:59:19 +0000</pubDate>
      <link>https://forem.com/kriyeng/a-little-story-about-javascript-protoype-4p45</link>
      <guid>https://forem.com/kriyeng/a-little-story-about-javascript-protoype-4p45</guid>
      <description>&lt;h1&gt;
  
  
  A little story about Javascript Protoype
&lt;/h1&gt;

&lt;p&gt;On Javascript every object will delegate to its prototype on failed lookups. In other words, If an object doesn't have a prop or method, then check its prototype.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fliv12igo7u6ewiqf04ss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fliv12igo7u6ewiqf04ss.png" alt="A little story about Object Protoype"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
  </channel>
</rss>
