<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Image Editing | Dat Viet Thanh Nguyen</title><link>https://datvtn.github.io/tags/image-editing/</link><atom:link href="https://datvtn.github.io/tags/image-editing/index.xml" rel="self" type="application/rss+xml"/><description>Image Editing</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 01 Jan 2024 00:00:00 +0000</lastBuildDate><image><url>https://datvtn.github.io/media/icon_hu82c06b08a282889123d30d9b11b05ced_13465_512x512_fill_lanczos_center_3.png</url><title>Image Editing</title><link>https://datvtn.github.io/tags/image-editing/</link></image><item><title>AI Photo Editing App</title><link>https://datvtn.github.io/project/ai-photo-editing/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://datvtn.github.io/project/ai-photo-editing/</guid><description>&lt;p>&lt;strong>Sep 2023 – Jan 2024&lt;/strong>&lt;/p>
&lt;h2 id="problem">Problem&lt;/h2>
&lt;p>The edits people actually want from a photo app — &lt;em>remove that person&lt;/em>, &lt;em>drop the background&lt;/em>, &lt;em>make the sky dramatic&lt;/em>, &lt;em>put him in a suit&lt;/em> — are each a different technical problem, but users expect all of them behind a single tap. Each feature needs an accurate mask, a plausible fill, and a result that survives being zoomed into.&lt;/p>
&lt;h2 id="approach">Approach&lt;/h2>
&lt;p>I built four editing features on a shared backbone of segmentation plus generative inpainting:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Object removal&lt;/strong> — segment the unwanted region, then inpaint it with surroundings-consistent content rather than a blur or clone-stamp patch.&lt;/li>
&lt;li>&lt;strong>Background removal&lt;/strong> — high-quality alpha matting around hard cases: hair, glasses, motion blur at the subject boundary.&lt;/li>
&lt;li>&lt;strong>Sky replacement&lt;/strong> — sky segmentation combined with colour harmonisation, so the relit foreground matches the new sky instead of looking pasted on.&lt;/li>
&lt;li>&lt;strong>Suit changer&lt;/strong> — garment-region segmentation and generative synthesis that keeps the subject&amp;rsquo;s identity and pose intact.&lt;/li>
&lt;/ul>
&lt;p>The common thread is that mask quality dominates perceived output quality: a strong generative model behind a sloppy mask still looks wrong at the edges, so most of the tuning effort went into the segmentation stage and its boundary refinement.&lt;/p>
&lt;h2 id="tech-stack">Tech stack&lt;/h2>
&lt;p>&lt;code>PyTorch&lt;/code> · &lt;code>Diffusion Models&lt;/code> · &lt;code>Segmentation networks&lt;/code> · &lt;code>OpenCV&lt;/code> · &lt;code>Python&lt;/code>&lt;/p>
&lt;h2 id="outcome">Outcome&lt;/h2>
&lt;p>Delivered as a set of consumer-facing editing features.&lt;/p>
&lt;!-- TODO: add before/after examples and any quality or runtime numbers that can be shared publicly. --></description></item></channel></rss>