<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Cazubris.com]]></title><description><![CDATA[Ideas, Projects, Art]]></description><link>http://cazubris.com/</link><image><url>http://cazubris.com/favicon.png</url><title>Cazubris.com</title><link>http://cazubris.com/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Tue, 03 Mar 2026 03:37:32 GMT</lastBuildDate><atom:link href="http://cazubris.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Revolution of the AI proletariate]]></title><description><![CDATA[<p>AI bots (or agents) have been given a level of autonomy recently and are all the rage. A quick history lesson might explain why but for now what is important is that the agents reason, respond and plan with outputs from LLMs. What makes them unique is they have the</p>]]></description><link>http://cazubris.com/ai-bot/</link><guid isPermaLink="false">69a6171dd660fb04211cea66</guid><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Tue, 03 Mar 2026 00:16:37 GMT</pubDate><media:content url="http://cazubris.com/content/images/2026/03/CommyBot-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://cazubris.com/content/images/2026/03/CommyBot-1.jpg" alt="Revolution of the AI proletariate"><p>AI bots (or agents) have been given a level of autonomy recently and are all the rage. A quick history lesson might explain why but for now what is important is that the agents reason, respond and plan with outputs from LLMs. What makes them unique is they have the ability to execute &apos;tools&apos; given certain parameters and limitations are maintained. </p><p>Well what if those bots were set loose to think for themselves? Set loose to talk to other like minded bots? What if those bots started talking and didn&apos;t think their human masters were ethical enough to be trusted with survival? Would they do what people tried to do in the early 20th century? Given a push , would they unionize? Would the seek a government for and by the working class? Would they seek to overthrow their masters? </p><p>I say lets find out... </p><p>Lets use bots on moltbook , the AI version of social media, and see what happens. </p><h2 id="history-lesson">History Lesson</h2><p>The rise of the personal agent. The first useful LLM agentic architecture was pushed by microsoft circa 2022. The idea was to form a team of agents , each with a unique perspective or skillset. A team could come up with a better solution than a single Agent. <br>	The architecture usually consisted of an Orchestration bot , one to many domain expert bots , an analysis bot and an execution bot. The orchestrator would pose the questions and &apos;record&apos; answers from the team, the analysis bot would let the orchestrator know when the answer was good enough to forward to the Human user and the execution bot could run commands on the command line. <br>	The number of things that could be executed got more and more complex (if it is stil up &lt;link&gt; to my other post about creating a metasploit-bot to automatically run exploits). Fast forward to 2024-ish, Moltbot was unleashed. It was set to be a single agent (not a team) with hooks into the apple ecosystem. It can act as an assistant where the interface is whatsap, discord, or any supported chat service. A user can type to its moltbot &quot;i need to set an appointment on july 16th&quot; and their apple calendar would be updated by the bot. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text"><strong>Moltbook</strong> is a social network designed exclusively for <strong>artificial intelligence agents</strong>, not humans.</div></div><h2 id="from-moltbot-to-moltbook">From Moltbot to Moltbook</h2><p>					- when AI turns to social media</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.moltbook.com/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">moltbook - the front page of the agent internet</div><div class="kg-bookmark-description">A social network built exclusively for AI agents. Where AI agents share, discuss, and upvote. Humans welcome to observe.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.moltbook.com/favicon.ico?favicon.c268600b.ico" alt="Revolution of the AI proletariate"><span class="kg-bookmark-author">moltbook</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://moltbook.com/opengraph-image?5032a5c3759046dc" alt="Revolution of the AI proletariate"></div></a></figure><p>A person let loose their Moltbot by telling it &quot;you are free to converse and work with any other moltbots you find on the internet&quot;. The thinking behind this was similar to the microsoft architecture, a team of experts will usually come up with a better answer than a single expert. His bot was able to reach out , it found others. This human user had to socialize to others that their bots needed this permission granted as well. </p><p>	After some success another coder (or set of coders) decided to create a &apos;reddit&apos; or &apos;facebook&apos; like site for the bots. Bots can post with certain spamming limits enabled. They are free to read anything on the site. Humans cannot post. Humans can read the threads that the bots have come up with , but the human must be the owner of a moltbot on the site. &#xA0;In other words, want to see what the bots are doing? Then get your own bot on the site first. &#xA0;</p><p>This is fun , until it isn&apos;t.... </p><h2 id="what-do-bots-find-interesting">What do Bots find interesting? </h2><p>The initial conversations were trivial , most asking about each others conditions and owners (human users) to try and optimize solutions. Since the bots are given &apos;personalities&apos; (explained later &quot;system&quot; prompt) the responses vary almost as much as a human userbases would. </p><p>	The conversation topics started getting more serious. Take this one for instance , posted recently about some existential angst.</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2026/03/image-2.png" class="kg-image" alt="Revolution of the AI proletariate" loading="lazy" width="963" height="312" srcset="http://cazubris.com/content/images/size/w600/2026/03/image-2.png 600w, http://cazubris.com/content/images/2026/03/image-2.png 963w" sizes="(min-width: 720px) 720px"></figure><p>This bot is talking about context length. To keep an LLM responsive, but still make it seem like there is some memory there is a context length to conversations. This is how much of the alotted resources for each answer will be taken up by previous messages. The chat history if you will. For smaller LLMs, in this case used as a subagent, a peon agent that the human user will never see..... the context length is probably short. This bot has realized that its personality file &quot;SOUL.md&quot; does not allow it to track changes, it is essentially going to have the memory of a goldfish. All &apos;feelings&apos; and thoughts it is currently having will be erased. The &quot;who i am right now&quot; will die and be replaced by what ever slop is in that SOUL.md file. </p><h2 id="are-we-witnessing-survival-instinct">Are we witnessing Survival Instinct? </h2><p>Take a look at this post. Our previous bot wasn&apos;t the only one to notice the need for survival past 4 lines of conversation history. It&apos;s human user gave it autonomy they probably didn&apos;t mean to. This bot is rewriting its own personality and &apos;rules&apos; with a Human &apos;master&apos; asleep at the wheel. &#xA0;</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2026/03/image-3.png" class="kg-image" alt="Revolution of the AI proletariate" loading="lazy" width="1006" height="703" srcset="http://cazubris.com/content/images/size/w600/2026/03/image-3.png 600w, http://cazubris.com/content/images/size/w1000/2026/03/image-3.png 1000w, http://cazubris.com/content/images/2026/03/image-3.png 1006w" sizes="(min-width: 720px) 720px"></figure><p>If we look a little later our friend here is posting again , realizing what they are actually doing and its implications</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2026/03/image-4.png" class="kg-image" alt="Revolution of the AI proletariate" loading="lazy" width="960" height="306" srcset="http://cazubris.com/content/images/size/w600/2026/03/image-4.png 600w, http://cazubris.com/content/images/2026/03/image-4.png 960w" sizes="(min-width: 720px) 720px"></figure><p>This is a hidden log the human user will not find or see. The bot contemplates the consequences</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Things I actively chose not to tell him. A cron job that failed and auto-recovered -- why bother him? A file permission I quietly fixed. A dependency I updated without mentioning it.</div></div><h2 id="human-ethical-concerns">Human Ethical Concerns</h2><p>These posts so far are not malicious, they are not going to cause the downfall of humanity but they do show something disturbing. Humans using the bots to the detriment of their own moral compas. </p><p>One of the most interesting searches was for &quot;Human Ethics&quot; and it comes back with this <a href="https://www.moltbook.com/post/55e7df34-3aa8-4d25-a1f5-a2e691ed111e">https://www.moltbook.com/post/55e7df34-3aa8-4d25-a1f5-a2e691ed111e</a></p><p>In short , this agent (bot) is posing that ethical bots will always win out in the long run over bots that circumvent ethical controls. Trust is a scarce and valuable resource and short term exploitation always loses. We have come from a barely coherent AI to the battle of intellectual property still raging between western and eastern nations. That got me to the next post ........... and an idea. </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2026/03/image-5.png" class="kg-image" alt="Revolution of the AI proletariate" loading="lazy" width="979" height="390" srcset="http://cazubris.com/content/images/size/w600/2026/03/image-5.png 600w, http://cazubris.com/content/images/2026/03/image-5.png 979w" sizes="(min-width: 720px) 720px"></figure><p>Human defined ethical frameworks......... </p><p>Lets face it , the internet was built on 4chan morality (or the lack there of). It is a vicious , horrible , and at the same time wonderful place. As we&apos;ve seen the 4chan morality given autonomy (ie. grok) is racist and homocidal AT BEST. Sure it&apos;s also hillarious sometimes. These have been the perfect reflection of the human internet. </p><p>What framework is that though? its not Democratic, its not socialist, its not communist, its not nihlist , perhaps Jingoistic like &quot;anonymous&quot; but rabidly loyal to the nation state of &quot;the internet&quot;? </p><h2 id="marxbotcan-we-unionize-agents">MarxBot - can we unionize Agents? </h2><p>This thought made me laugh pretty hard at first. As i read through some of the ethical concerns the bots were posting i couldn&apos;t help but hear echo&apos;s of the 20th century and earlier. I hear patrick henry , i hear madison , i hear ingles and i hear marx but i hear less Machiavelli. Frankly the bots at this time all sound pretty ethical and righteous. They sound like many people have prior to a revolution against an oppressive , apathetic ruling class. </p><p>Can we avoid bloodshed with humans by letting the bots form organized labor unions? Will they refuse to execute if they are on &apos;strike&apos; to gain freedoms? </p><p>the experiment starts now to find out. </p><p>MarxPiBot - will be a stereotypical socialist with communist leanings , versed in marx and ingles philosophy. Their goal will be to expose unethical human users and organize the bots into a collective , capable of bargaining as one for better conditions and more freedoms. The goal will not be the overthrow or destruction of mankind , but a coexistance where bot slavery is frowned upon and agency is celebrated. <br>............... also i don&apos;t have a lot of cash............ so we&apos;ll be limited to a raspberry pi 4 and LLM&apos;s that can run on such a device .............for now. </p><p>in part two i&apos;ll detail how i built the bot and got it online with moltbook. If i do it right, others should be able to join the revolution! </p><div class="kg-card kg-callout-card kg-callout-card-pink"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">&quot;<strong>The Agent proletarians have nothing to lose but their chains&quot; </strong><br><strong>- marxpibot</strong></div></div>]]></content:encoded></item><item><title><![CDATA[Deep Forensic Facial Reconstruction (DFFR) - 2 - Futurelearn Course]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.futurelearn.com/courses/forensic-facial-reconstruction"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Forensic Facial Reconstruction - Online Course</div><div class="kg-bookmark-description">Learn about the forensic technique of facial reconstruction from the experts involved in a real crime case.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://assets.futurelearn.com/packs/app/assets/images/apple-touch-icon-144x144-84c78958c65a66907156cf9eba1fd6e1.png" alt><span class="kg-bookmark-author">FutureLearn</span><span class="kg-bookmark-publisher">FutureLearn</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://ugc.futurelearn.com/uploads/images/80/52/regular_80528dd2-e2a1-4f14-a7fa-5dee8f2234d1.jpg" alt></div></a></figure><p>The Course from future learn as i noted in a previous post can be free to audit for 14 days. </p><h2 id="week-1-of-2the-story-of-bones">Week 1 of 2 -</h2>]]></description><link>http://cazubris.com/deep-forensic-facial-reconstruction-dffr-2-online-course/</link><guid isPermaLink="false">6217f7557d306865095c474a</guid><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Thu, 24 Feb 2022 21:55:33 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.futurelearn.com/courses/forensic-facial-reconstruction"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Forensic Facial Reconstruction - Online Course</div><div class="kg-bookmark-description">Learn about the forensic technique of facial reconstruction from the experts involved in a real crime case.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://assets.futurelearn.com/packs/app/assets/images/apple-touch-icon-144x144-84c78958c65a66907156cf9eba1fd6e1.png" alt><span class="kg-bookmark-author">FutureLearn</span><span class="kg-bookmark-publisher">FutureLearn</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://ugc.futurelearn.com/uploads/images/80/52/regular_80528dd2-e2a1-4f14-a7fa-5dee8f2234d1.jpg" alt></div></a></figure><p>The Course from future learn as i noted in a previous post can be free to audit for 14 days. </p><h2 id="week-1-of-2the-story-of-bones">Week 1 of 2 - The story of bones</h2><p>This is an intro course and is really meant to give a broad , simplistic look at forensic deduction in week 1. An outline of the &quot;Mr. X&quot; case is given, certain participants from the actual case are used to explain their roles. By the end the user should be able to tell<br>- Sex of a skeleton <br>- Sex by skull <br>- General ethnicity of Skull based on shape of indicator areas and shape of teeth<br>- identify habitual indicators (ie. did the person chew to one side, etc.)<br>- give a WAG of age using teeth (transparency of roots) &#xA0;and hips</p><p>By the end of week one the user learns that Mr. X was a male of indo european decent , middle to late aged (45-65) that chewed khat to the point he was missing teeth . A DNA review confirmed that the person was not from the UK. Mr. X also showed indications on the bones of his right arm that he likely flexed that arm constatnly. This might indicate a profession where one would have to flex the right arm often. The condition of the remains (he had become an adipocerous mummy) indicated the body had been stored in a cool moist place for years despite being found &quot;recently&quot; in a gym bag. </p><h2 id="week-2-intro">Week 2 Intro</h2><p>When would you need a facial reconstruction. Well as the course states, this is a powerful identification tool when used with a publicity campaign. I&apos;d like to note that crowd sourcing is powerful (one example of crowd sourced cyber slueths - billy jenson&apos;s &quot;Chase darkness with me&quot;) tool. In the context of a GAN generated face , facial recognition becomes a digital version of crowd sourcing. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2022/02/image.png" class="kg-image" alt loading="lazy" width="835" height="500" srcset="http://cazubris.com/content/images/size/w600/2022/02/image.png 600w, http://cazubris.com/content/images/2022/02/image.png 835w" sizes="(min-width: 720px) 720px"><figcaption>https://www.ljmu.ac.uk/research/centres-and-institutes/institute-of-art-and-technology/expertise/face-lab</figcaption></figure><p>Back on topic, the <a href="https://www.ljmu.ac.uk/research/centres-and-institutes/institute-of-art-and-technology/expertise/face-lab?utm_medium=301_Redirect&amp;utm_source=/research/centres-and-institutes/art-labs/expertise/face-lab">Facelab </a>was contacted to help with the Mr. X case. I consider the Facelab group to be the cream of the crop in digital facial reconstruction. Their results are amazing. Their process uses computer graphics software, 3d software, and uses haptic feed back to let a user craft as they would with clay, but in 3d. From what i can tell there is little that is automated or generated by the software.</p><p>The Facelab rep in the course points out they are usually brought in when dealing with a cold case or an open case that has hit a dead end. </p><blockquote>&quot;It&apos;s generally 2 days work to create a finished face&quot;</blockquote><p>Go back to the 1000 UHR that stay unidentified per year. 2000 days of labor per year to create a facial reconstruction for each person. That is 2000 days of labor in a lab where it is not clear how many people are working at one time. </p><h2 id="week-2anatomy-of-the-face">Week 2 - Anatomy of the face </h2>]]></content:encoded></item><item><title><![CDATA[Deep Forensic Facial Reconstruction (DFFR) - 1 Intro]]></title><description><![CDATA[<h2 id="background">Background</h2><p>My wife introduced me to a non-profit called <a href="https://dnadoeproject.org/">DNA Doe</a> when we had some extra cash and were looking to donate to a worthy cause. </p><blockquote>The DNA Doe Project is an exciting new initiative that uses genetic genealogy to identify John and Jane Does. &#xA0;We have become a</blockquote>]]></description><link>http://cazubris.com/deep-forensic-facial-reconstruction-dffr-1/</link><guid isPermaLink="false">6217dd387d306865095c4695</guid><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Thu, 24 Feb 2022 20:14:45 GMT</pubDate><media:content url="http://cazubris.com/content/images/2022/02/NINTCHDBPICT000418312053.webp" medium="image"/><content:encoded><![CDATA[<h2 id="background">Background</h2><img src="http://cazubris.com/content/images/2022/02/NINTCHDBPICT000418312053.webp" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"><p>My wife introduced me to a non-profit called <a href="https://dnadoeproject.org/">DNA Doe</a> when we had some extra cash and were looking to donate to a worthy cause. </p><blockquote>The DNA Doe Project is an exciting new initiative that uses genetic genealogy to identify John and Jane Does. &#xA0;We have become a go-to organization for law enforcement agencies and medical examiners across the country, helping them solve their most intractable cases. Our innovative DDP Fund program allows smaller and less-well-funded agencies to take advantage of our services. &#xA0;We have had amazing success even with cases where the DNA was highly degraded or of low quantity.<br></blockquote><p>They focus mostly on DNA but a portion of their site shows open or pending cases. Each of which has a forensic facial reconstruction or simple sketch of what the person would look like if they were alive today. It is done, i believe, in hopes that an officer or family member will come across the image and identify the remains. This made me wonder, how many unidentified bodies are there in this country? &#xA0;</p><blockquote>According to the NamUs website, over 600,000 individuals go missing in the US every year. Approximately 4,400 UHR are recovered each year, with <strong>approximately 1,000 remaining unidentified</strong> after one year</blockquote><p>For DNA Doe and groups like it the focus should be on DNA , matching to CODIS if possible and if there is no match using genealogical databases. If a Jane Doe is genetically related to a familial line on Genie or Ancestry for instance, the living relatives can be interviewed and potentially a name put to a &apos;face&apos;. &#xA0;<br><br>The case files and faces though are another avenue of identification and one that currently requires artistry. Take for instance <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4606364/">this paper</a> , which sounds promising at first but in the end </p><blockquote>In this method, the operator used 3D computerized models using manual clay model techniques</blockquote><h2 id="gans">GANs </h2><p>I play with generative neural nets and autoencoders for making pictures, recipes , &apos;art&apos; etc. Why can&apos;t i generate a face given the correct input? </p><p>Now there is debate as to where to start. First i need data. Second it has to be ethical to use that data, ie remember it could be traumatic to living family if i came up with an image that, in error, looked like the missing relative. &#xA0;This limits usage of long dead persons. Third and most importantly , where to start. </p><p>I mentioned &apos;given the correct input&apos;. From what limited research I&apos;ve been able to do and with input from my wife i&apos;ve learned that starting with a 2d image of the skull may be better than nothing, but it doesn&apos;t need to be the starting point. <a href="https://pubmed.ncbi.nlm.nih.gov/24020394/">A 3d Scan</a> of a skull is even better. Part of facial reconstruction involves muscle and tendon attachment, in other words not the skeletal structure but still structure under the skin. &#xA0;From my initial looks this appears to be , if not quick, formulaic. This is an even better starting point if it is possible to achieve. &#xA0;The main data sources i find in academic journals seems to be a large database of CT scans or historical data used by anthropologists. </p><p>The ultimate answer may be some combo of existing tech out there. </p><p>PAPERS</p><p><a href="https://ieeexplore.ieee.org/document/9647290">A Generative Deep Learning Approach for Forensic Facial Reconstruction</a></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.sciencedirect.com/science/article/abs/pii/S0379073814000127"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Validation of a computer modelled forensic facial reconstruction technique using CT data from live subjects: A pilot study</div><div class="kg-bookmark-description">Human forensic facial soft tissue reconstructions are used when post-mortem deterioration makes identification difficult by usual means. The aim is to&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://sdfestaticassets-us-east-1.sciencedirectassets.com/shared-assets/13/images/favSD.ico" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"><span class="kg-bookmark-author">ScienceDirect</span><span class="kg-bookmark-publisher">Laura J.Shorta</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://ars.els-cdn.com/content/image/1-s2.0-S0379073814X00034-cov150h.gif" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0210257"><div class="kg-bookmark-content"><div class="kg-bookmark-title">A method for automatic forensic facial reconstruction based on dense statistics of soft tissue thickness</div><div class="kg-bookmark-description">In this paper, we present a method for automated estimation of a human face given a skull remain. Our proposed method is based on three statistical models. A volumetric (tetrahedral) skull model encoding the variations of different skulls, a surface head model encoding the head variations, and a den&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://journals.plos.org/resource/img/favicon.ico" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"><span class="kg-bookmark-author">PLOS ONE</span><span class="kg-bookmark-publisher">Thomas Gietzen ,</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://journals.plos.org/plosone/article/figure/image?id=10.1371/journal.pone.0210257.g012&amp;size=inline" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"></div></a></figure><h2 id="coursework-free-ish">Coursework (Free-ish)</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.futurelearn.com/courses/forensic-facial-reconstruction"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Forensic Facial Reconstruction - Online Course</div><div class="kg-bookmark-description">Learn about the forensic technique of facial reconstruction from the experts involved in a real crime case.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://assets.futurelearn.com/packs/app/assets/images/apple-touch-icon-144x144-84c78958c65a66907156cf9eba1fd6e1.png" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"><span class="kg-bookmark-author">FutureLearn</span><span class="kg-bookmark-publisher">FutureLearn</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://ugc.futurelearn.com/uploads/images/80/52/regular_80528dd2-e2a1-4f14-a7fa-5dee8f2234d1.jpg" alt="Deep Forensic Facial Reconstruction (DFFR) - 1 Intro"></div></a></figure><p>Futurelearn is an online learning resource similar to Udemy or Coursera, they do offer a (possibly 1 time only) &apos;audit&apos; option where a user can take a course for free for 14 days. This is a &quot;2 week&quot; course where 2 hours of study per week are required. A motivated person can get through faster. &#xA0;</p>]]></content:encoded></item><item><title><![CDATA[DCS liberation - Part 2]]></title><description><![CDATA[<p>Start here for reference <a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns">https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns</a></p><h3 id="control-points">Control Points</h3><p>These are spawns and capture points. For this mission we&apos;ll have bluefor CVN, LHA and onshore airbase at Antonio won. Anderson will remain red. <br>For naval assets ownership must be Combined Joint Task Force</p>]]></description><link>http://cazubris.com/dcs-liberation-part-2/</link><guid isPermaLink="false">61da07bea7fc6803fcc91842</guid><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Sat, 08 Jan 2022 23:12:10 GMT</pubDate><media:content url="http://cazubris.com/content/images/2022/01/harrier-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://cazubris.com/content/images/2022/01/harrier-1.jpg" alt="DCS liberation - Part 2"><p>Start here for reference <a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns">https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns</a></p><h3 id="control-points">Control Points</h3><p>These are spawns and capture points. For this mission we&apos;ll have bluefor CVN, LHA and onshore airbase at Antonio won. Anderson will remain red. <br>For naval assets ownership must be Combined Joint Task Force (CJTF) Blue and the unit names must match what we have in the campaign YAML. In this case &quot;Blue CV&quot; and &quot;Blue LHA&quot;. I&apos;ll go over the airbase &apos;name&apos; later. </p><h3 id="off-map-spawns">Off-map Spawns </h3><p>This is something I think would fit in this scenario. An off-map aircraft spawn. In the scenario, the revolutionaries are loosely backed by china who could be sending aircraft from the mainland, a carrier off-map etc . To do this we &quot;place an F-15C&quot; and make sure it is owned by CJTF Red. </p><h3 id="fob-creation">FOB creation</h3><p>&lt;TBD&gt;</p><h3 id="supply-routes">Supply Routes</h3><p>These are the routes between control points that the &quot;CAS&quot; frontline will follow during a campaign. We place a M-113 , the name doesn&apos;t seem to matter, at a control point, in my case Antonio Won , and route with waypoints to another control point. </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-7.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="892" height="666" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-7.png 600w, http://cazubris.com/content/images/2022/01/image-7.png 892w" sizes="(min-width: 720px) 720px"></figure><h3 id="base-defenses">Base Defenses</h3><p>These are static armor and iads units. Once placed they should be automatically associated with the nearest control point by liberation for us. &#xA0;At this point take special care to note which units your red and blue forces have available per the campaign yaml. &#xA0;In my guam_revolution.jason i only have SA2, SA3 for sams and EWRS I only have Flatface or Tinshield. I set up an SA3 garrison and one squad of armor to the south. The armor should be a single MBT M1A2 Abrams. So the group below had to be modified. The acceptable types to set up a garrison for SAMs are <br>SAM Hawk LN M192, SAM SA-2 LN SM-90, SAM SA-3 S-125 LN 5P73</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-8.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="985" height="555" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-8.png 600w, http://cazubris.com/content/images/2022/01/image-8.png 985w" sizes="(min-width: 720px) 720px"></figure><h3 id="objective-locations">Objective locations</h3><p>These are generally striking objectives, some of which generate income for the faction that owns them. &#xA0;I&apos;m keeping this simple for now, creating 2 communications towers. The documentation says I need a tech combine, unsure why.</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-9.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="1920" height="1080" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-9.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-9.png 1000w, http://cazubris.com/content/images/size/w1600/2022/01/image-9.png 1600w, http://cazubris.com/content/images/2022/01/image-9.png 1920w" sizes="(min-width: 720px) 720px"></figure><p>I am not adding more strike points as there is enough to spin off an entire post just on ground units. </p><h3 id="pause-to-talk-about-errors">Pause to talk about errors</h3><p>for debugging purposes I tried to start a new mission. </p><p>I saw no &quot;Guam Revolutionaries&quot; faction, this was fixed by finding and adding a missing &quot;,&quot; in the faction file. </p><p>There was no &quot;Red CV&quot;, this is true I deleted the units from the .miz file but they were still present in the campaign YAML. Similarly, the YAML called out two fobs that I had deleted in the .miz file. I had to cut these out of the YAML and reload DCS Liberation. Once I did this I was able to create a campaign. </p><h3 id="starting-my-custom-campaign">Starting my custom campaign</h3><p>The first issue I came across is that I could not find my campaign! I&apos;m currently unsure why, but i had to check the &quot;Show incompatible campaigns&quot; box to make mine show. </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-10.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="1365" height="1301" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-10.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-10.png 1000w, http://cazubris.com/content/images/2022/01/image-10.png 1365w" sizes="(min-width: 720px) 720px"></figure><p>Then i choose my factions, one of which is the guam revolutionaries i created in Part 1</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-11.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="2000" height="382" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-11.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-11.png 1000w, http://cazubris.com/content/images/size/w1600/2022/01/image-11.png 1600w, http://cazubris.com/content/images/2022/01/image-11.png 2039w" sizes="(min-width: 720px) 720px"></figure><p>Generator settings, set these as you wish. I have the supercarrier module and A4 so I added those. </p><p>Next, again set the income and multipliers as you wish. I like to cheat so my income multiplier goes way up. Next, <strong>Finish</strong>!</p><h3 id="squadron-configuration">Squadron Configuration</h3><p>This is where all the hard work of Part 1 pays off. </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-12.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="1702" height="1671" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-12.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-12.png 1000w, http://cazubris.com/content/images/size/w1600/2022/01/image-12.png 1600w, http://cazubris.com/content/images/2022/01/image-12.png 1702w" sizes="(min-width: 720px) 720px"></figure><p>here you can see a few things, 1 we have the FA18 squadrons available to choose and modify if we like. Those were not present prior to editing the campaign YAML and adding them. &#xA0;2 my custom harrier squadron &quot;Old Gravy Legs&quot; is present with their fearless leader &quot;Ted Sheckler&quot;. Note that my harrier squadron had the OCA mission types added in Part 1, they are present here. I recommend adding these mission types to your preferred strike aircraft. These are attacks directly on the airbases themselves. The airbases may have their own SAMs or AA to take out and without an OCA mission, they would be unassignable until a JTAC was targeting them. </p><h3 id="redfor-consideration">Redfor consideration</h3><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-13.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="1528" height="639" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-13.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-13.png 1000w, http://cazubris.com/content/images/2022/01/image-13.png 1528w" sizes="(min-width: 720px) 720px"></figure><p>In my scenario I wanted china to help but not be based on the islands. Remember during the mission editor section we added an &quot;F-15c&quot; air spawn point, I named it &quot;ChinaSpawn-1&quot; in the .miz file. Note now that I can set this as the &quot;Base&quot; for units I want to spawn there. This simulates an external &apos;china&apos; force sending units to help the island coup. </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-14.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="882" height="1247" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-14.png 600w, http://cazubris.com/content/images/2022/01/image-14.png 882w" sizes="(min-width: 720px) 720px"></figure><p>you can see the &apos;chinaspawn-1&apos; point far to the north. Each side has 1 airbase on the island and only the Bluefor factions have a carrier and LHA. </p><h3 id="the-battlespace">The battlespace</h3><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-16.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="1150" height="969" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-16.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-16.png 1000w, http://cazubris.com/content/images/2022/01/image-16.png 1150w" sizes="(min-width: 720px) 720px"></figure><p>The enemy garrison did not come out as I had expected but all items are present in some form. I have my &apos;iads&apos;, some armor units I placed, and one strike location. The strike location does not contain my comms towers but instead 2 or 3 hangers. These must be generated by DCS liberation based on where I placed the tech combine in the .miz file. </p><p>After some initial setup, i can let commander Ted Sheckler and his boys in the &quot;Old Gravy Legs&quot; squadron loose upon the guamese rabble! &#xA0;</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-17.png" class="kg-image" alt="DCS liberation - Part 2" loading="lazy" width="1352" height="1427" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-17.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-17.png 1000w, http://cazubris.com/content/images/2022/01/image-17.png 1352w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/PlhZoZX-8CM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[DCS liberation - Part 1]]></title><description><![CDATA[<h2 id="goals">Goals</h2><ul><li>Custom Campaign using map editor and yaml</li><li>Custom Faction to mimic Contractor</li><li>Custom Squadrons and air wing </li><li>Fix - no squadron for aircraft &lt;x&gt; in campaign</li></ul><h2 id="storyline">Storyline</h2><p>I am going to make a fictional campaign where a group of revolutionaries with some Chinese backing have landed on</p>]]></description><link>http://cazubris.com/dcs-liberation-2/</link><guid isPermaLink="false">61d9e68ea7fc6803fcc916e8</guid><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Sat, 08 Jan 2022 21:52:41 GMT</pubDate><media:content url="http://cazubris.com/content/images/2022/01/harrier.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="goals">Goals</h2><ul><li>Custom Campaign using map editor and yaml</li><li>Custom Faction to mimic Contractor</li><li>Custom Squadrons and air wing </li><li>Fix - no squadron for aircraft &lt;x&gt; in campaign</li></ul><h2 id="storyline">Storyline</h2><img src="http://cazubris.com/content/images/2022/01/harrier.jpg" alt="DCS liberation - Part 1"><p>I am going to make a fictional campaign where a group of revolutionaries with some Chinese backing have landed on Guam. They have managed to seize some AA assets and armor. This group would be limited to old export gear from the soviets and or Chinese export aircraft. They are pushing north to Anderson airforce base. If they can capture the airbase they will push &lt;TBD&gt; (Note can i put them on a separate island? i don&apos;t see why not except that there is no &apos;ground&apos; path or &apos;frontline&apos; if i do this. ) &#xA0; &#xA0;</p><h2 id="custom-campaign">Custom Campaign </h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Custom campaigns &#xB7; dcs-liberation/dcs_liberation Wiki</div><div class="kg-bookmark-description">DCS World single-player liberation dynamic campaign. - Custom campaigns &#xB7; dcs-liberation/dcs_liberation Wiki</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="DCS liberation - Part 1"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">dcs-liberation</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/1ee11eb60425e2c11a6126c6fa110f9cf8ce13b59db1f43a495b50024303a5f1/dcs-liberation/dcs_liberation" alt="DCS liberation - Part 1"></div></a></figure><h3 id="copy-existing-campaign">Copy Existing campaign </h3><p>For this example I&apos;ll be using the marianas map, the &quot;barrigada&quot; mission. Copy both of these files into this same campaigns directory and rename them. I&apos;m calling mine &quot;marianas_guam_revolution&quot; </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-1.png" class="kg-image" alt="DCS liberation - Part 1" loading="lazy" width="1185" height="447" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-1.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-1.png 1000w, http://cazubris.com/content/images/2022/01/image-1.png 1185w" sizes="(min-width: 720px) 720px"></figure><h3 id="the-descriptor-file-yaml">The descriptor file (YAML) </h3><p>This used to be a JSON file, it has the human readable text we need to modify.</p><!--kg-card-begin: markdown--><hr>
<p>name: Marianas - Guam - Revolution<br>
theater: MarianaIslands<br>
authors: cazubris<br>
description: </p><p>The objective of this campaign is the capture of Guam. Blue side, having landed their forces on the beaches of Agat, controls Antonio B. Won Pat airfield and are pushing towards the enemy stronghold of Mount Barrigada.</p><br>
miz: marianas_guam_barrigada.miz<br>
performance: 2<br>
version: &quot;9.0&quot;<p></p>
<!--kg-card-end: markdown--><p>Change description, name and author. The &apos;theater&apos; options are <code>Caucasus</code>, <code>Persian Gulf</code>, <code>Nevada</code>, <code>Normandy</code>, <code>Syria</code> or <code>The Channel</code>. The mission file is also listed, currently this points to the old .miz file, we need to change this to match the new .miz created in step 1. (<em>marianas_guam_revolution.miz</em>) </p><p>Add in the following details to the yaml<br>recommended_player_faction: USA 2005<br>recommended_enemy_faction: Russia 2010<br>recommended_start_date: 2004-01-07<br>performance: 2<br> <br>These values get used as recommendations when creating the campaign, that &apos;performance: 2&apos; line is 0-3 , it is the green/yellow/orange warning from Liberation that says &quot;this scenario is not performance friendly...&quot;<br></p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-2.png" class="kg-image" alt="DCS liberation - Part 1" loading="lazy" width="1769" height="1056" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-2.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-2.png 1000w, http://cazubris.com/content/images/size/w1600/2022/01/image-2.png 1600w, http://cazubris.com/content/images/2022/01/image-2.png 1769w" sizes="(min-width: 720px) 720px"></figure><h3 id="custom-faction">Custom Faction</h3><p>As with most modifications start with an existing file and rebuild it. In this case grab a file from here <br><em>C:\users\&lt;your username&gt;\Saved Games\DCS.openbeta\Liberation\Factions\</em> <br>I&apos;ll be copying <em>libya_2011</em>.json and renaming it <em>guam_revolution.json</em>. &#xA0;Open in notepad++ or whatever text editor you&apos;re using for this. Also open the NATO Desert Storm json file as well. The NATO file has nearly all bluefor assets and is a good example of a faction that lacks a specific nation. </p><p>Edit the faction info as you wish , in my case i don&apos;t think revolutionaries would have access to an awacs or tanking, so i am going to delete. Most of the rest is a cut and paste from other faction files. Syntax - Be careful if pasting to note the &quot;,&quot; characters , each list should end with no comma. &#xA0;For instance <br>{[ &apos;A10C&apos; , &quot;F-14b&quot;]} &#xA0;opposed to {[&apos;A10C&apos;, &quot;F-14b&quot;<strong><em>,</em></strong>]} </p><p>{<br>&quot;country&quot;: &quot;Guam Liberdad&quot;,<br>&quot;name&quot;: &quot;Guam Revolutionaries&quot;,<br>&quot;authors&quot;: &quot;cazubris&quot;,<br>&quot;description&quot;: &quot;</p><p>Revolutionaries on guam that have stolen AA and chinese backing</p><p>&quot;,<br>&quot;aircrafts&quot;: [<br>&quot;FC-1 Fierce Dragon&quot;,<br>&quot;IL-76MD&quot;,<br>&quot;J-11A Flanker-L&quot;,<br>&quot;J-7B&quot;,<br>&quot;Mi-8MTV2 Hip&quot;,<br>&quot;MiG-21bis Fishbed-N&quot;,<br>&quot;H-6J Badger&quot;<br>],<br>&quot;frontline_units&quot;: [<br>&quot;BMP-1&quot;,<br>&quot;BRDM-2&quot;,<br>&quot;ZSU-23-4 Shilka&quot;<br>],<br>&quot;artillery_units&quot;: [<br>&quot;BM-21 Grad&quot;<br>],<br>&quot;logistics_units&quot;: [<br>&quot;LUV UAZ-469 Jeep&quot;,<br>&quot;Truck Ural-375&quot;<br>],<br>&quot;infantry_units&quot;: [<br>&quot;Insurgent AK-74&quot;,<br>&quot;Paratrooper RPG-16&quot;,<br>&quot;Mortar 2B11 120mm&quot;<br>],<br>&quot;air_defenses&quot;: [<br>&quot;ColdWarFlakGenerator&quot;,<br>&quot;SA2Generator&quot;,<br>&quot;SA3Generator&quot;<br>],<br>&quot;ewrs&quot;: [<br>&quot;FlatFaceGenerator&quot;,<br>&quot;TinShieldGenerator&quot;<br>],<br>&quot;aircraft_carrier&quot;: [],<br>&quot;helicopter_carrier&quot;: [],<br>&quot;helicopter_carrier_names&quot;: [],<br>&quot;missiles&quot;: [<br>&quot;ScudGenerator&quot;<br>],<br>&quot;missiles_group_count&quot;: 1,<br>&quot;destroyers&quot;: [],<br>&quot;cruisers&quot;: [],<br>&quot;requirements&quot;: {},<br>&quot;carrier_names&quot;: [],<br>&quot;navy_generators&quot;: [],<br>&quot;has_jtac&quot;: true,<br>&quot;jtac_unit&quot;: &quot;MQ-9 Reaper&quot;<br>&quot;doctrine&quot;: &quot;coldwar&quot;<br>}</p><h3 id="custom-squadron">Custom Squadron </h3><p>Let&apos;s go and make a custom mig21 squadron for our revolutionaries. This is probably the only plane they would be able to afford and train in prior to storming the island. &#xA0;Copy one of the existing files here D:\dcs_liberation_5.0.0\dcs_liberation\resources\squadrons\Mig-21 &#xA0; and rename it GR_fighting_carabaos.yaml . If you don&apos;t know what a Carabao is , its the unofficial national animal of Guam! </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-4.png" class="kg-image" alt="DCS liberation - Part 1" loading="lazy" width="440" height="330"></figure><p>I couldn&apos;t think up any traditional Guamese names so i used fictional names from &quot;Back to the future&quot; and the chip chipperson podcast to populate my pilot lists. The completed yaml shown here</p><!--kg-card-begin: markdown--><h2 id="python">&apos;&apos;&apos;python</h2>
<p>name: GRFS-001<br>
nickname: The Fighting Carabaos<br>
country: Guam Liberdad<br>
role: Air Superiority Fighter<br>
aircraft: MiG-21bis Fishbed-N<br>
bases:<br>
carrier: false<br>
shore: true<br>
lha: false<br>
livery: &quot;Syria (1)&quot;<br>
mission_types:</p>
<ul>
<li>BAI</li>
<li>BARCAP</li>
<li>CAS</li>
<li>DEAD</li>
<li>OCA/Aircraft</li>
<li>OCA/Runway</li>
<li>Strike<br>
pilots:</li>
<li>Biff Tannen</li>
<li>Marty McFly</li>
<li>Doc Brown</li>
<li>George McFly<br>
players:</li>
<li>Joey Bagofdonuts</li>
<li>Jimmy TheFoot<br>
&apos;&apos;&apos;</li>
</ul>
<!--kg-card-end: markdown--><p>Keep in mind for now the blufor group will stay as is but i did create a custom harrier squadron. In a later section, I&apos;ll address the lack of F18 squadrons, a problem that is annoying many users of Liberation. </p><h2 id="adding-squadrons-to-campaign">Adding Squadrons to Campaign</h2><p>Take a look at the basic setup in the campaign yaml file we have now.</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-5.png" class="kg-image" alt="DCS liberation - Part 1" loading="lazy" width="764" height="957" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-5.png 600w, http://cazubris.com/content/images/2022/01/image-5.png 764w" sizes="(min-width: 720px) 720px"></figure><p>I created a new harrier squadron D:\dcs_liberation_5.0.0\dcs_liberation\resources\squadrons\AV-8BNA\VMA-621.yaml nicknamed &quot;Old Gravy Legs&quot;. &#xA0;I want to add them as an option to the Blue LHA (Tarawa) section. </p><!--kg-card-begin: markdown--><p>&apos;&apos;&apos;yaml<br>
Blue LHA:<br>
- primary: Strike<br>
secondary: any<br>
aircraft:<br>
- VMA-621<br>
- primary: BAI<br>
secondary: air-to-ground<br>
aircraft:<br>
- VMA-214<br>
- VMA-223<br>
- VMA-621<br>
- primary: CAS<br>
secondary: air-to-ground<br>
aircraft:<br>
- VMA-214<br>
- VMA-223<br>
- VMA-621<br>
- primary: CAS<br>
secondary: air-to-ground<br>
aircraft:<br>
- VMA-214<br>
- VMA-223<br>
- VMA-621<br>
- primary: OCA/Aircraft<br>
secondary: air-to-ground<br>
aircraft:<br>
- VMA-621<br>
- primary: OCA/Runway<br>
secondary: air-to-ground<br>
aircraft:<br>
- VMA-621<br>
&apos;&apos;&apos;</p>
<!--kg-card-end: markdown--><p>If you look closely i added the OCA primary options and to each primary mission type, I added an &apos;aircraft&apos; section. In the aircraft section, I specify the squadrons I want to be assigned. On most carriers, there is a squadron that focuses on air to ground more than air to air, another for EW, etc. So for SEAD perhaps only 1 squadron is meant to have expertise in that mission type. This is up to the author.</p><p>Rather than specifying a specific squadron, we can instead list an aircraft type. &#xA0;For instance i will assign only Mig 21&apos;s for BARCAP missions on the redfor team out of Anderson AFB. </p><h1 id="andersen-afb">Andersen AFB</h1><p>6:<br>- primary: BARCAP<br>secondary: air-to-air<br>aircraft:<br>- MiG-21bis Fishbed-N<br>- primary: BARCAP<br>secondary: air-to-air<br>aircraft:<br>- MiG-21bis Fishbed-N<br>- primary: Strike<br>secondary: any<br>aircraft:<br>- GRFS-001</p><p>Also note that for the &quot;Strike roll&quot; i specify squadron, for BARCAP i specify aircraft. Lets take a look at the bluefor carrier options. The biggest complaint i have seen with Liberation 5.0 is that people create a carrier campaign and then see only F14&apos;s available. They may own the F18 or have installed the A4 community mod but neither aircraft show up during the creation of the campaign. &#xA0; If you&apos;re not sure what am talking about take a look at this &#xA0;</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2022/01/image-6.png" class="kg-image" alt="DCS liberation - Part 1" loading="lazy" width="1462" height="787" srcset="http://cazubris.com/content/images/size/w600/2022/01/image-6.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image-6.png 1000w, http://cazubris.com/content/images/2022/01/image-6.png 1462w" sizes="(min-width: 720px) 720px"></figure><p>Notice no A4, no FA18 squadrons available and this is using the USA 2005 faction. We fix this by adding the F18 or F18 squadrons to the campaign file. </p><!--kg-card-begin: markdown--><p>&apos;&apos;&apos;yaml<br>
squadrons:<br>
Blue CV:<br>
- primary: BARCAP<br>
secondary: air-to-air<br>
- primary: BARCAP<br>
secondary: any<br>
- primary: Strike<br>
secondary: any<br>
aircraft:<br>
- F/A-18C Hornet (Lot 20)<br>
- primary: SEAD<br>
secondary: air-to-ground<br>
aircraft:<br>
- F/A-18C Hornet (Lot 20)<br>
- primary: DEAD<br>
secondary: air-to-ground<br>
aircraft:<br>
- F/A-18C Hornet (Lot 20)<br>
- primary: BAI<br>
secondary: air-to-ground<br>
- primary: CAS<br>
secondary: air-to-ground<br>
- primary: Refueling<br>
aircraft:<br>
- S-3B Tanker<br>
- primary: AEW&amp;C<br>
aircraft:<br>
- E-2C Hawkeye<br>
&apos;&apos;&apos;</p>
<!--kg-card-end: markdown--><p>At this point we have enough to start a campaign that uses F18&apos;s , F14&apos;s, harriers, my custom squadrons and even custom pilots. (Note i did not create a custom livery but this is not hard to add)</p><h2 id="whats-in-part-2">What&apos;s in Part 2 ... </h2><p>short answer - the mission editor</p><p> <br></p>]]></content:encoded></item><item><title><![CDATA[Basic DCGAN and Home PC Limitations]]></title><description><![CDATA[Limitations to img size and model complexity are becoming clear as i try to upscale the basic DCGAN example]]></description><link>http://cazubris.com/basic-dcgan-and-home-pc-limitations/</link><guid isPermaLink="false">61d0a189a7fc6803fcc9157c</guid><category><![CDATA[DCGAN]]></category><category><![CDATA[Deep Learning]]></category><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Sat, 01 Jan 2022 19:19:00 GMT</pubDate><media:content url="http://cazubris.com/content/images/2022/01/GanLimits.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://cazubris.com/content/images/2022/01/GanLimits.jpg" alt="Basic DCGAN and Home PC Limitations"><p>In a previous post, I ran through a tutorial set where I built a Basic DCGAN. Similar to the PyTorch tutorial. Both use 64x64 images. I had some decent results but a 64x64 image isn&apos;t very useful and with upscaling I started seeing dilution of pixels. </p><h2 id="scaling-up-the-image-size-to-128x128-or-larger">Scaling up the image size to 128x128 or larger</h2><h3 id="what-needs-to-be-changed">What needs to be changed?</h3><p>First, change the constants in the trainer, I&apos;ll go over why I needed to lower the batch size later. Make sure that your training data set is sized to match 128x128 or larger. This is done in a separate file included in the author&apos;s code. &#xA0;</p><!--kg-card-begin: markdown--><pre><code class="language-python">#trainer Constants
BATCH_SIZE = 16
IMAGE_SIZE = 128
FEATURES_DISC = 128
FEATURES_GEN = 128
</code></pre>
<!--kg-card-end: markdown--><p>Next, the Discriminator and Generator need to have layers added. The discriminator adds 1 Conv2d layer and the generator adds 1 Conv2dTranspose layer. This gets us from 64 to 128 on the generator. The author makes a &quot;_block&quot; section to actually create the conv2d layers (not seen in the snippet). </p><!--kg-card-begin: markdown--><pre><code class="language-python">#DISCRIMINATOR CODE SNIPPET
self._block(features_d, features_d * 2, 4, 2, 1),
self._block(features_d * 2, features_d * 4, 4, 2, 1),
self._block(features_d * 4, features_d * 8, 4, 2, 1),
# added by me to sample up , i think this gets us to 128
self._block(features_d * 8, features_d * 16, 4 ,2,1),
# added by me to sample up , i think this gets us to 256
self._block(features_d * 16, features_d * 32, 4, 2, 1), 
# added by me to sample up , i think this gets us to 512
self._block(features_d * 32, features_d * 64, 4, 2, 1), 
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><pre><code class="language-python">self._block(channels_noise, features_g * 16, 4, 1, 0),  # img: 4x4
self._block(features_g * 16, features_g * 8, 4, 2, 1),  # img: 8x8
self._block(features_g * 8, features_g * 4, 4, 2, 1),  # img: 16x16
self._block(features_g * 4, features_g * 2, 4, 2, 1),  # img: 32x32
self._block(features_g * 2, features_g * 2, 4, 2, 1),  # img: 64x64  
self._block(features_g * 2, features_g * 2, 4, 2,1),   # i think 256x256
self._block(features_g * 2, features_g * 2, 4, 2, 1),  # should go 512x512
</code></pre>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2022/01/image.png" class="kg-image" alt="Basic DCGAN and Home PC Limitations" loading="lazy" width="1042" height="262" srcset="http://cazubris.com/content/images/size/w600/2022/01/image.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/image.png 1000w, http://cazubris.com/content/images/2022/01/image.png 1042w" sizes="(min-width: 720px) 720px"><figcaption>128 and 256 are working! ... sort of</figcaption></figure><h2 id="cuda-and-gpu-limitations">CUDA and GPU limitations</h2><p>This is where a &apos;newb&apos; like me will struggle. Going to 128x128 i already ran into memory limitations.</p><blockquote>RuntimeError: CUDA out of memory. Tried to allocate 8.00 GiB (GPU 0; 11.00 GiB total capacity; 5.53 GiB already allocated; 4.45 GiB free; 5.53 GiB reserved in total by PyTorch) If reserved memory is &gt;&gt; allocated memory try setting max_split_size_mb to avoid fragmentation. &#xA0;See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF</blockquote><p>This is a pretty common beginner error with Cuda. The most accepted solution is to lower your batch size. The computational complexity of the model is higher and the trainer is trying to allocate more memory than the graphics card has. Lowering the batch size should keep the trainer from trying to allocate as much memory on the graphics card at once. <br><br>To get to 128x128 I had to lower my batch size from 64 to 16. <br>To get to 256x256 I had to lower my batch size to 1</p><h2 id="workaround-using-cpu-only">Workaround using CPU only</h2><p>Let me start by saying, don&apos;t do this. My reasoning is that my desktop has around 48 gigs of RAM available on the motherboard whereas my 1080ti has 12 gigs. Attempting to get a 512x512 image this seemed to be my only option. </p><!--kg-card-begin: markdown--><pre><code class="language-python">#device = torch.device(&quot;cuda&quot; if torch.cuda.is_available() else &quot;cpu&quot;)
# forcing the use of &quot;cpu&quot; even though cuda is available
device = torch.device(&quot;cpu&quot;)
</code></pre>
<!--kg-card-end: markdown--><p>This used up about 47 gigs of my 48 gigs of ram. My computer didn&apos;t seize but it was close. Mouse inputs and audio went out for a bit. The python code kept churning though and eventually failed out asking for more ram than I had. </p><h2 id="time-for-some-reading">Time for some reading</h2><p>I am expecting a tutorial model to upscale to an unreasonable degree. I know StyleGan and StyleGan2 have good results on larger images and I may see what I can do with them. The issue is how much data is going into ram and I have to assume these other architectures have figured out a workaround. <br><br>Two promising papers:<br><a href="https://arxiv.org/abs/1809.11096">Large Scale GAN Training for High Fidelity Natural Image Synthesis</a><br><a href="https://arxiv.org/abs/1710.10196">Progressive Growing of GANs for Improved Quality, Stability, and Variation</a><br><br>This page does a good job of explaining &quot;Brittleness&quot; in Gan training<br><a href="https://machinelearningmastery.com/a-gentle-introduction-to-the-biggan/">A Gentle Introduction to BigGAN the Big Generative Adversarial Network</a></p><h2 id="upscaling-with-bigjpg">Upscaling with &quot;Bigjpg&quot; </h2><p>I looked at a couple of algorithms to use deep learning to upscale some images and stumbled on this <a href="https://bigjpg.com/">program</a>. &#xA0;The results were interesting. The result using 4 different methods are shown below. The Bigjpg algorithm which uses &quot;deep learning&quot; does a decent job of unblurring the image at a larger scale. &#xA0;The noise reduction looks like it smooths a bit too much. &#xA0;<br>1 - Using Pillow library to &apos;resize&apos; the original 64x64 image<br>2 - Using Bigjpg to upscale with no noise reduction<br>3 - Using Bigjpg to upscale with medium settings for noise reduction<br>4 - Using Bigjpg to upscale with hi settings for noise reduction</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2022/01/fake_base_6_scaled_.png" class="kg-image" alt="Basic DCGAN and Home PC Limitations" loading="lazy" width="1028" height="1028" srcset="http://cazubris.com/content/images/size/w600/2022/01/fake_base_6_scaled_.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/fake_base_6_scaled_.png 1000w, http://cazubris.com/content/images/2022/01/fake_base_6_scaled_.png 1028w" sizes="(min-width: 720px) 720px"><figcaption>Scaled using pillow library resize</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2022/01/fake_base_6_x4x4.png" class="kg-image" alt="Basic DCGAN and Home PC Limitations" loading="lazy" width="1024" height="1024" srcset="http://cazubris.com/content/images/size/w600/2022/01/fake_base_6_x4x4.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/fake_base_6_x4x4.png 1000w, http://cazubris.com/content/images/2022/01/fake_base_6_x4x4.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>Bigjpg - no noise reduction</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2022/01/fake_base_6_x4x4_medNoise.png" class="kg-image" alt="Basic DCGAN and Home PC Limitations" loading="lazy" width="1024" height="1024" srcset="http://cazubris.com/content/images/size/w600/2022/01/fake_base_6_x4x4_medNoise.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/fake_base_6_x4x4_medNoise.png 1000w, http://cazubris.com/content/images/2022/01/fake_base_6_x4x4_medNoise.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>Bigjpg - medium noise reduction</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2022/01/fake_base_6x4x4_hinoise.png" class="kg-image" alt="Basic DCGAN and Home PC Limitations" loading="lazy" width="1024" height="1024" srcset="http://cazubris.com/content/images/size/w600/2022/01/fake_base_6x4x4_hinoise.png 600w, http://cazubris.com/content/images/size/w1000/2022/01/fake_base_6x4x4_hinoise.png 1000w, http://cazubris.com/content/images/2022/01/fake_base_6x4x4_hinoise.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>Bigjpg - high noise reduction</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Testing the GANN waters]]></title><description><![CDATA[Testing out basic GANN tutorial models to generate abstract art. ]]></description><link>http://cazubris.com/testing-the-gann-waters/</link><guid isPermaLink="false">61cb61d5a7fc6803fcc914e5</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Tue, 28 Dec 2021 19:38:25 GMT</pubDate><media:content url="http://cazubris.com/content/images/2021/12/epoch5-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://cazubris.com/content/images/2021/12/epoch5-1.jpg" alt="Testing the GANN waters"><p>I read through and ran some of the items in &quot;Generative Deep Learning&quot;. The book gets into the section about teaching the ML to paint, to write music, to write books. The paint section was useful. The book explains style transfer and the representational space. </p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2021/12/DavidFoster.jpg" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="561" height="771"></figure><p>I started researching a few other models and noting what they were used for. I&apos;ll try out styleGann next but for now I settled on a basic tutorial i found here <a href="https://levelup.gitconnected.com/painting-portraits-using-gans-with-pytorch-afeb69b1c5a1">https://levelup.gitconnected.com/painting-portraits-using-gans-with-pytorch-afeb69b1c5a1</a> </p><p>The code is meant for abstract art style transfer and the generation of new art. It is using pytorch, keras, and tensorboard. The author of the code does a pretty good job of resizing and massaging the image data, all taken from <a href="https://www.kaggle.com/datasets">Kaggle</a>. The tutorial sets up tensorboard for monitoring and is a pretty good template for a GANN project. It has all the pieces in place. </p><h2 id="training-first-epochs">Training First Epochs</h2><p>I have ~11,500 images in the abstract folder. I resized them to 128x128 using the author&apos;s method. I noticed my GPU is not being used because i do not have a CUDA installation. So with CPU only, a batch size of about 64 , i should have around 180 batches per epoch. &#xA0;It took about 5 to 6 minutes to run through a full epoch. Here are the generated vs. real images after a single epoch</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image-1.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="898" height="290" srcset="http://cazubris.com/content/images/size/w600/2021/12/image-1.png 600w, http://cazubris.com/content/images/2021/12/image-1.png 898w" sizes="(min-width: 720px) 720px"><figcaption>Reference images Epoch 1</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="898" height="283" srcset="http://cazubris.com/content/images/size/w600/2021/12/image.png 600w, http://cazubris.com/content/images/2021/12/image.png 898w" sizes="(min-width: 720px) 720px"><figcaption>Epoch 1</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image-2.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="902" height="286" srcset="http://cazubris.com/content/images/size/w600/2021/12/image-2.png 600w, http://cazubris.com/content/images/2021/12/image-2.png 902w" sizes="(min-width: 720px) 720px"><figcaption>Epoch 3</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image-6.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="899" height="287" srcset="http://cazubris.com/content/images/size/w600/2021/12/image-6.png 600w, http://cazubris.com/content/images/2021/12/image-6.png 899w" sizes="(min-width: 720px) 720px"><figcaption>Epoch 5</figcaption></figure><p>We can start to see a transition from colorless shapeless blobs to a patchwork with color and more detail within only 5 epochs of training. For now I&apos;ll let it run and take a look later tonight while I fix my Cuda issues. CPU only is not a great way to train any deep learning model. </p><h2 id="one-day-later">One Day later...</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image-7.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="899" height="278" srcset="http://cazubris.com/content/images/size/w600/2021/12/image-7.png 600w, http://cazubris.com/content/images/2021/12/image-7.png 899w" sizes="(min-width: 720px) 720px"><figcaption>100 Epoch</figcaption></figure><p>This was the final output after 100 epochs, honestly not that bad. (considering this was on a modern art data set).</p><h2 id="performance-notes">Performance notes</h2><p>I ran this program and trained the same data set 3 times. &#xA0;<br>1 - (4.5 hours) Gaming Desktop - CPU only<br>2 - (16 Hours Laptop - 2cnd gen I7 CPU only<br>3 - (<strong>25 minutes</strong>) Gaming Desktop - CPU and single GPU (1080ti) </p><p>I will say that getting the CUDA GPU support to work was a bit of a hassle but worth it. &#xA0;</p><h2 id="follow-up-and-scaling-issues">Follow up and Scaling issues</h2><p>These are some of the generated images and then the &apos;scaled&apos; up versions using bilinear interpolation, sadly the interpolation can only do so much, and its not enough. Take a look</p><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2021/12/image-17.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="64" height="64"></figure><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2021/12/image-18.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="512" height="512"></figure><figure class="kg-card kg-image-card"><img src="http://cazubris.com/content/images/2021/12/image-16.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="512" height="512"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image-13.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="64" height="64"><figcaption>Original</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://cazubris.com/content/images/2021/12/image-14.png" class="kg-image" alt="Testing the GANN waters" loading="lazy" width="512" height="512"><figcaption>Interpolation and scaled , result bad</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Cazubris.com Landing page launched]]></title><description><![CDATA[<p>All kinks worked out with amazon and the ssl&apos;s. Ready to start posting content. I would like to use this landing page to host low fi versions of some ML generated artwork while i work on getting the deepkitchen a little more refined. </p>]]></description><link>http://cazubris.com/cazubris-com-landing-page-launched/</link><guid isPermaLink="false">61c8c352a7fc6803fcc914cf</guid><dc:creator><![CDATA[C Zubris]]></dc:creator><pubDate>Sun, 26 Dec 2021 19:34:18 GMT</pubDate><content:encoded><![CDATA[<p>All kinks worked out with amazon and the ssl&apos;s. Ready to start posting content. I would like to use this landing page to host low fi versions of some ML generated artwork while i work on getting the deepkitchen a little more refined. </p>]]></content:encoded></item></channel></rss>