mirror of
https://github.com/jomjol/AI-on-the-edge-device-docs.git
synced 2025-12-09 04:56:57 +03:00
253 lines
16 KiB
HTML
253 lines
16 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html class="writer-html5" lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
|
|
<meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/collect-new-images/" rel="canonical"/>
|
|
<link href="../img/favicon.ico" rel="shortcut icon"/>
|
|
<title>Collect images to improve the models - AI on the Edge Device</title>
|
|
<link href="../css/theme.css" rel="stylesheet"/>
|
|
<link href="../css/theme_extra.css" rel="stylesheet"/>
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
|
|
<script>
|
|
// Current page data
|
|
var mkdocs_page_name = "Collect images to improve the models";
|
|
var mkdocs_page_input_path = "collect-new-images.md";
|
|
var mkdocs_page_url = "/AI-on-the-edge-device-docs/collect-new-images/";
|
|
</script>
|
|
<!--[if lt IE 9]>
|
|
<script src="../js/html5shiv.min.js"></script>
|
|
<![endif]-->
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
|
<script>hljs.highlightAll();</script>
|
|
</head>
|
|
<body class="wy-body-for-nav" role="document">
|
|
<div class="wy-grid-for-nav">
|
|
<nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
|
|
<div class="wy-side-scroll">
|
|
<div class="wy-side-nav-search">
|
|
<img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
|
|
<a class="icon icon-home" href=".."> AI on the Edge Device
|
|
</a><div role="search">
|
|
<form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
|
|
<input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
|
|
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Installation/">Installation</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../initial-setup/">Initial Setup</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Hardware-Compatibility/">Hardware Compatibility</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Best-Practice/">Best Practice</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../FAQs/">Frequently Asked Questions</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">External Links</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="" href="https://github.com/jomjol/AI-on-the-edge-device/releases">Releases</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="" href="https://jomjol.github.io/AI-on-the-edge-device/index.html">Web Installer/Console</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="" href="https://github.com/jomjol/AI-on-the-edge-device/issues">Create an Issue</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="" href="https://github.com/jomjol/AI-on-the-edge-device/discussions">Join a Discussion</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Configuration</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Reference-Image/">Reference Image</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Alignment/">Alignment References</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../ROI-Configuration/">ROIs (Regions of Interest)</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Configuration/">Graphical Configuration</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Choosing-the-Model/">Model Selection</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../ota/">Over-The-Air (OTA) Update</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Advanced</span></p>
|
|
<ul class="current">
|
|
<li class="toctree-l1"><a class="reference internal" href="../Parameters/">Parameters</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Integration-Home-Assistant/">Integration into Home Assistant</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../External-LED/">External LED</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../data-logging/">Data Logging</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../rolling-installation/">Living on the Edge</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Watermeter-specific-analog---digital-transition/">Analog/Digital Transition on Water Meters</a>
|
|
</li>
|
|
<li class="toctree-l1 current"><a class="reference internal current" href="./">Collect images to improve the models</a>
|
|
<ul class="current">
|
|
<li class="toctree-l2"><a class="reference internal" href="#before-you-start">Before you start</a>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#collecting-images">Collecting images</a>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#collecting-images-for-dig-class100dig-contana-class100">Collecting images for dig-class100/dig-cont/ana-class100</a>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#share-your-images">Share your images</a>
|
|
<ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="#images-can-be-rejected-if">Images can be rejected if</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Learn-models-with-your-own-images/">Learn a model with your own images</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Correction%20Algorithm/">Correction Algorithm</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Neural-Network-Types/">Neural Network Types</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Additional-Information/">Additional Information</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../New-Releases-Notification/">Notification about new Releases</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Troubleshooting</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Error-Codes/">Reduced webinterface (error codes)</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../StatusLED-BlinkCodes/">Board status LED (blink codes)</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../WLAN-disconnect-reason/">WLAN disconnect reasons</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Error-Debugging/">Often observed issues</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Frequent-Reboots/">Basic hardware/config issues</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Demo-Mode/">Demo mode</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">API's</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../REST-API/">REST API</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../MQTT-API/">MQTT API</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Influx-DB/">Influx DB</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Development</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Build-Instructions/">Build the Project</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Old Pages (no longer maintained)</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../outdated--Integrated-Functions/">Integrated Functions</a>
|
|
</li>
|
|
</ul>
|
|
<p class="caption"><span class="caption-text">Assorted Pages</span></p>
|
|
<ul>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
|
|
<nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
|
|
<i class="fa fa-bars" data-toggle="wy-nav-top"></i>
|
|
<a href="..">AI on the Edge Device</a>
|
|
</nav>
|
|
<div class="wy-nav-content">
|
|
<div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
|
|
<ul class="wy-breadcrumbs">
|
|
<li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
|
|
<li>Advanced »</li>
|
|
<li class="breadcrumb-item active">Collect images to improve the models</li>
|
|
<li class="wy-breadcrumbs-aside">
|
|
<a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/collect-new-images.md"> Edit on GitHub</a>
|
|
</li>
|
|
</ul>
|
|
<hr/>
|
|
</div>
|
|
<div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
|
|
<div class="section" itemprop="articleBody">
|
|
<h1 id="collect-images-to-improve-the-models"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Collect images to improve the models</h1>
|
|
<p>If your device has new, different digits or pointers it might be that the existing models don't recognize them well. In such case you can collect your images and so we can train the model better. This helps you and also others as the models get more accurate. Adding more images also helps if you have a model that is already known, but the neural models do not produce good results.</p>
|
|
<p>Experienced users can do the training also by themselves, see <a href="../Learn-models-with-your-own-images/">Learn a model with your own images</a>. </p>
|
|
<h2 id="before-you-start"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Before you start</h2>
|
|
<p>Before you go ahead, please check if your digits/pointers are not yet contained in the training data. A visual overview is available at <a href="https://jomjol.github.io/neural-network-digital-counter-readout">digits</a> resp. <a href="https://jomjol.github.io/neural-network-analog-needle-readout/">pointers</a>.</p>
|
|
<p>Poor recognition is often caused by blurred images, low contrast or incorrect setting of the ROIs. Therefore, check these possibilities first, as additional training will bring little improvement here. See <a href="../ROI-Configuration/">ROI Configuration</a> for details.</p>
|
|
<h2 id="collecting-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Collecting images</h2>
|
|
<p>The neural network is trained based on a set of images that have already been collected over time. If your digits are included or at least very similar to included images, the chance is very high that the neural network is working fine for you as well.</p>
|
|
<p>The neural network configuration is stored in the TensorFlow Lite format as <code>*.tfl</code> or <code>*.tflite</code> in the <code>/config</code> directory on the SD card. A model can be updated (or a new one added) by uploading the new file and activating it on the configuration page or in the config file <code>/config/config.ini</code>.</p>
|
|
<p>In order to incorporate new digits a training set of images is required. The training images needs to be collected in the final setup with the help of the <code>Digits</code> or <code>Analog</code> log settings (not to be confused with the <code>Data</code> or <code>Debug</code> log). Enable the logging of the images on the configuration page or in the config file <code>/config/config.ini</code>:</p>
|
|
<p><img alt="" src="../img/enable_log_image.jpg"/></p>
|
|
<p>Now be patient! You have to wait until it has collected an image of each digit of every type. They will be placed on the SD card in the folder <code>/log/digit/</code> resp. <code>/log/analog/</code>.</p>
|
|
<p>After some days, there will be a lot of images, many of them very similar. Because of this, it is important to select only a subset of them for the model training.</p>
|
|
<p>The tools shown below can help you with that.</p>
|
|
<h2 id="collecting-images-for-dig-class100dig-contana-class100"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Collecting images for dig-class100/dig-cont/ana-class100</h2>
|
|
<p>For digits use <a href="https://github.com/haverland/collectmeterdigits">Collectmeterdigits</a> resp. for pointers use <a href="https://github.com/haverland/collectmeteranalog">collectmeteranalog</a> to fetch the images from the device and select a subset of them. Please read the detailed instructions on the mentioned links for details!</p>
|
|
<p>If the fetching of the images is too slow for you, a faster way to get the images to your PC is to remove the SD-card from the ESP32 module and insert it into the card reader of yur PC.
|
|
Then search for two..three images of each digit (<strong>not more! :-)</strong>). You will have to make sure to label the images yourself matching the effective value they are supposed to show. </p>
|
|
<h2 id="share-your-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> Share your images</h2>
|
|
<p>In most cases we will integrate your images in the training dataset of the models. Only if we fear a degradation of the models or you need a different behavior, we might not include the data in the standard models (see at bottom of page for reasons).</p>
|
|
<p>To provide your images to us for training the model, open an <a href="https://github.com/jomjol/AI-on-the-edge-device/issues/new/choose">Github Issue</a> and append the zipped images ito it.</p>
|
|
<h3 id="images-can-be-rejected-if"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.1</span> Images can be rejected if</h3>
|
|
<ul>
|
|
<li>You provide too many images. More than 1000 images of your device are really to much. </li>
|
|
<li>Images which are not good enough (see <a href="../ROI-Configuration/">ROI Configuration</a>) will be rejected. It would reduce the accuracy of the networks.</li>
|
|
<li>Images with too little focus will be rejected. </li>
|
|
<li>Images with too much blur are rejected.</li>
|
|
</ul>
|
|
<p>Our models are to small to recognize everything in any quality. So we use only images of medium or good quality.</p>
|
|
</div>
|
|
</div><footer>
|
|
<div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
|
|
<a class="btn btn-neutral float-left" href="../Watermeter-specific-analog---digital-transition/" title="Analog/Digital Transition on Water Meters"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
|
<a class="btn btn-neutral float-right" href="../Learn-models-with-your-own-images/" title="Learn a model with your own images">Next <span class="icon icon-circle-arrow-right"></span></a>
|
|
</div>
|
|
<hr/>
|
|
<div role="contentinfo">
|
|
<!-- Copyright etc -->
|
|
</div>
|
|
|
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
</footer>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
<div aria-label="Versions" class="rst-versions" role="note">
|
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
|
<span>
|
|
<a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
|
|
</span>
|
|
<span><a href="../Watermeter-specific-analog---digital-transition/" style="color: #fcfcfc">« Previous</a></span>
|
|
<span><a href="../Learn-models-with-your-own-images/" style="color: #fcfcfc">Next »</a></span>
|
|
</span>
|
|
</div>
|
|
<script src="../js/jquery-3.6.0.min.js"></script>
|
|
<script>var base_url = "..";</script>
|
|
<script src="../js/theme_extra.js"></script>
|
|
<script src="../js/theme.js"></script>
|
|
<script src="../search/main.js"></script>
|
|
<script>
|
|
jQuery(function () {
|
|
SphinxRtdTheme.Navigation.enable(true);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|