{"id":1970,"date":"2026-07-18T06:29:51","date_gmt":"2026-07-18T13:29:51","guid":{"rendered":"http:\/\/macdaddy4sure.ai\/?p=1970"},"modified":"2026-07-18T06:29:51","modified_gmt":"2026-07-18T13:29:51","slug":"desktop-icon-vision-computer-desktop-rl","status":"publish","type":"post","link":"http:\/\/macdaddy4sure.ai\/index.php\/2026\/07\/18\/desktop-icon-vision-computer-desktop-rl\/","title":{"rendered":"Desktop Icon Vision (Computer \/ Desktop RL)"},"content":{"rendered":"\n<p>Train a <strong>program-icon classifier<\/strong> from .exe files for Computer RL and desktop<\/p>\n\n\n\n<p>automation: extract Windows icons \u2192 augment \u2192 TensorFlow SavedModel + LiteRT<\/p>\n\n\n\n<p>(TFLite).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why<\/h2>\n\n\n\n<p>Computer RL already tracks windows, OCR text, and generic object detections.<\/p>\n\n\n\n<p>Recognizing <strong>which app icon<\/strong> is under the cursor or on the taskbar\/desktop<\/p>\n\n\n\n<p>gives a stronger app_family \/ target signal (Chrome vs VS Code vs Explorer).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pipeline<\/h2>\n\n\n\n<p><em>[text]<br><\/em>scan .exe dirs<br>&nbsp;&nbsp;&nbsp; \u2192 extract associated icons (Shell32)<br>&nbsp;&nbsp;&nbsp; \u2192 dedupe identical artwork<br>&nbsp;&nbsp;&nbsp; \u2192 augment (bg, scale, color, blur)<br>&nbsp;&nbsp;&nbsp; \u2192 train CNN (default) or MobileNetV2<br>&nbsp;&nbsp;&nbsp; \u2192 export SavedModel + model.tflite + desktop_icons.names<\/p>\n\n\n\n<p>Script:<\/p>\n\n\n\n<p><em>[text]<br><\/em>scripts\/train_desktop_icon_classifier.py<br>scripts\/train_desktop_icon_classifier.ps1<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Train<\/h2>\n\n\n\n<p>Default (Local Programs + Program Files, cap 300 EXEs):<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>cd &#8220;E:\\_AugmentedIntelligence\\_src\\_AugmentedIntelligence_v11.0 &#8211; Typed Commands&#8221;<br>.\\scripts\\train_desktop_icon_classifier.ps1<\/p>\n\n\n\n<p>Custom directory:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>.\\scripts\\train_desktop_icon_classifier.ps1 `<br>&nbsp; -ScanDir &#8220;C:\\Program Files&#8221;,&#8221;C:\\Users\\Temp\\AppData\\Local\\Programs&#8221; `<br>&nbsp; -MaxExes 500 `<br>&nbsp; -Epochs 20 `<br>&nbsp; -AugPerClass 64<\/p>\n\n\n\n<p>Python:<\/p>\n\n\n\n<p><em>[bat]<br><\/em>python scripts\/train_desktop_icon_classifier.py &#8211;scan-dir &#8220;C:\\Program Files&#8221; &#8211;max-exes 400 &#8211;epochs 20<\/p>\n\n\n\n<p>Reuse extracted icons only:<\/p>\n\n\n\n<p><em>[bat]<br><\/em>python scripts\/train_desktop_icon_classifier.py &#8211;skip-extract &#8211;epochs 25<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Outputs<\/h2>\n\n\n\n<p>Default root:<\/p>\n\n\n\n<p><em>[text]<br><\/em>C:\\_AugmentedIntelligence\\tensorflow_models\\desktop_icons\\<br>&nbsp; icons\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; per-class PNGs (icon_00 + aug_*)<br>&nbsp; desktop_icons.names&nbsp;&nbsp;&nbsp;&nbsp; class labels (line index = class id)<br>&nbsp; labels.json&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label + source EXE paths<br>&nbsp; manifest.json&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; metrics + export paths<br>&nbsp; saved_model\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TF SavedModel (frozen export)<br>&nbsp; saved_model_tf\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; copy for TF C API path<br>&nbsp; model.tflite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LiteRT \/ TFLite<br>&nbsp; model_float32.tflite&nbsp;&nbsp;&nbsp; LiteRT float32<br>&nbsp; keras_model.keras<br>&nbsp; history.json<br>&nbsp; README.md<\/p>\n\n\n\n<p>Re-export only (if Keras exists but TFLite\/SavedModel missing):<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>python scripts\/export_desktop_icon_models.py<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Runtime (C++ LiteRT)<\/h2>\n\n\n\n<p>DesktopIconClassifier loads model.tflite + desktop_icons.names.<\/p>\n\n\n\n<p><em>[text]<br><\/em>desktop icon status<br>desktop icon enable<br>desktop icon file C:\\_AugmentedIntelligence\\tensorflow_models\\desktop_icons\\icons\\chrome\\icon_00.png<br>computer rl icon status<br>computer icon labels 20<\/p>\n\n\n\n<p>Settings:<\/p>\n\n\n\n<p><em>[text]<br><\/em>desktop_icon_classifier_enabled=true<br>tflite_desktop_icon_model=C:\/_AugmentedIntelligence\/tensorflow_models\/desktop_icons\/model.tflite<br>tflite_desktop_icon_labels=C:\/_AugmentedIntelligence\/tensorflow_models\/desktop_icons\/desktop_icons.names<br>tensorflow_desktop_icon_model=C:\/_AugmentedIntelligence\/tensorflow_models\/desktop_icons\/saved_model_tf\/<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Inference contract<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Field<\/strong><\/td><td><strong>Value<\/strong><\/td><\/tr><tr><td>Input name<\/td><td>image<\/td><\/tr><tr><td>Shape<\/td><td>[1, 64, 64, 3] (default &#8211;image-size 64)<\/td><\/tr><tr><td>Dtype<\/td><td>float32<\/td><\/tr><tr><td>Scale<\/td><td>RGB <strong>[0, 1]<\/strong><\/td><\/tr><tr><td>Output<\/td><td>probs softmax over classes<\/td><\/tr><tr><td>Labels<\/td><td>desktop_icons.names (one label per line)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Settings paths (see AugmentedIntelligence.cpp):<\/p>\n\n\n\n<p><em>[text]<br><\/em>tflite_desktop_icon_model&nbsp;&nbsp; = C:\/_AugmentedIntelligence\/tensorflow_models\/desktop_icons\/model.tflite<br>tflite_desktop_icon_labels&nbsp; = C:\/_AugmentedIntelligence\/tensorflow_models\/desktop_icons\/desktop_icons.names<br>tensorflow_desktop_icon_model = C:\/_AugmentedIntelligence\/tensorflow_models\/desktop_icons\/saved_model_tf\/<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Computer RL integration notes<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crop candidate icon regions from the desktop\/taskbar capture (OpenCV).<\/li>\n\n\n\n<li>Resize crop \u2192 64\u00d764, convert BGR\u2192RGB, \/255.0.<\/li>\n\n\n\n<li>Run LiteRT interpreter (same pattern as LoL skin classifier in GamingLoL.cpp).<\/li>\n\n\n\n<li>Map argmax \u2192 desktop_icons.names[i] \u2192 feature or action target label.<\/li>\n\n\n\n<li>Prefer <strong>dry-run<\/strong> in Computer RL before actuating clicks on recognized icons.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Tips<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Installer\/updater EXEs (setup, unins, vcredist, \u2026) are skipped by name.<\/li>\n\n\n\n<li>Identical icons collapse to one class; extra EXE paths stay in labels.json.<\/li>\n\n\n\n<li>For more classes, raise &#8211;max-exes and re-run (or &#8211;skip-extract after a wider extract).<\/li>\n\n\n\n<li>Use &#8211;backbone cnn for 64px icons (default). Use mobilenet only with &#8211;image-size 96+.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Safety<\/h2>\n\n\n\n<p>Local personal models only. Do not ship third-party proprietary icon artwork<\/p>\n\n\n\n<p>as a public dataset; keep icons\/ on the workstation that owns the software.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Train a program-icon classifier from .exe files for Computer RL and desktop automation: extract Windows icons \u2192 augment \u2192 TensorFlow SavedModel + LiteRT (TFLite). Why Computer RL already tracks windows, OCR text, and generic object detections. Recognizing which app icon is under the cursor or on the taskbar\/desktop gives a stronger app_family \/ target signal [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1970","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/comments?post=1970"}],"version-history":[{"count":1,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1970\/revisions"}],"predecessor-version":[{"id":1971,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1970\/revisions\/1971"}],"wp:attachment":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/media?parent=1970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/categories?post=1970"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/tags?post=1970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}