PhyCV
PhyCV är det första datorseendebiblioteket som använder algoritmer direkt härledda från fysikens ekvationer som styr fysiska fenomen. Algoritmerna som visas i den första versionen emulerar spridningen av ljus genom ett fysiskt medium med naturliga och konstruerade diffraktiva egenskaper följt av koherent detektion. Till skillnad från traditionella algoritmer som är en sekvens av handgjorda empiriska regler, utnyttjar fysikinspirerade algoritmer fysiska naturlagar som ritningar. Dessutom kan dessa algoritmer i princip implementeras i verkliga fysiska enheter för snabb och effektiv beräkning i form av analog beräkning. För närvarande har PhyCV tre algoritmer, Phase-Stretch Transform (PST) och Phase-Stretch Adaptive Gradient-Field Extractor (PAGE), och synförbättring via virtuell diffraktion och koherent detektion (VEViD). Alla algoritmer har CPU- och GPU-versioner. PhyCV är nu tillgängligt på GitHub och kan installeras från pip .
Historia
Algoritmer i PhyCV är inspirerade av fysiken i den fotoniska tidssträckan (en hårdvaruteknik för ultrasnabb och engångsdatainsamling). PST är en kantdetekteringsalgoritm som skapades med öppen källkod 2016 och har 800+ stjärnor och 200+ gafflar på GitHub. PAGE är en algoritm för riktad kantdetektering som skapades med öppen källkod i februari 2022. PhyCV utvecklades ursprungligen och skapades med öppen källkod av Jalali-Lab @ UCLA i maj 2022. I den första utgåvan av PhyCV, den ursprungliga koden med öppen källkod för PST och PAGE är avsevärt omstrukturerad och förbättrad för att vara modulär, effektivare, GPU-accelererad och objektorienterad. VEViD är en algoritm för svagt ljus och färgförbättring som lades till PhyCV i november 2022.
Bakgrund
Phase-Stretch Transform (PST)
Phase-Stretch Transform (PST) är en beräkningseffektiv kant- och texturdetekteringsalgoritm med exceptionell prestanda i bilder med synskadade. Algoritmen omvandlar bilden genom att emulera utbredning av ljus genom en enhet med konstruerad diffraktiv egenskap följt av koherent detektion. Det har använts för att förbättra upplösningen av MRI- bilder, extrahera blodkärl i näthinnabilder, delfinidentifiering och avloppsvattenbehandling, biologisk avbildning av en molekyl och klassificering av UAV med mikrodoppleravbildning.
Phase-Stretch Adaptive Gradient-Field Extractor (PAGE)
Phase-Stretch Adaptive Gradient-Field Extractor (PAGE) är en fysikinspirerad algoritm för att upptäcka kanter och deras orienteringar i digitala bilder i olika skalor. Algoritmen är baserad på optikens diffraktionsekvationer. Metaforiskt sett emulerar PAGE fysiken för dubbelbrytande (orienteringsberoende) diffraktiv utbredning genom en fysisk enhet med en specifik diffraktiv struktur. Utbredningen omvandlar en bild med verkligt värde till en komplex funktion. Relaterad information finns i utdatans verkliga och imaginära komponenter. Utgången representerar fasen av den komplexa funktionen.
Synförbättring via virtuell diffraktion och koherent detektion (VEViD)
Vision Enhancement via Virtual diffraction and coherent Detection (VEViD) en effektiv och tolkningsbar algoritm för svagt ljus och färgförbättring som ombildar en digital bild som ett rumsligt varierande metaforiskt ljusfält och sedan utsätter fältet för de fysiska processer som liknar diffraktion och koherent detektering. Termen "Virtuell" fångar avvikelsen från den fysiska världen. Ljusfältet är pixlat och utbredningen ger en fas med ett godtyckligt frekvensberoende som kan skilja sig från det kvadratiska beteendet för fysisk diffraktion. VEViD kan accelereras ytterligare genom matematiska uppskattningar som minskar beräkningstiden utan nämnvärda uppoffringar av bildkvalitet. En approximation i sluten form för VEViD som vi kallar VEViD-lite kan uppnå upp till 200 FPS för 4K-videoförbättring.
Höjdpunkter
Modulär kodarkitektur
Koden i PhyCV har en modulär design som troget följer den fysiska process som algoritmen härstammar från. Både PST- och PAGE-moduler i PhyCV-biblioteket emulerar fortplantningen av insignalen (original digital bild) genom en enhet med konstruerad diffraktiv egenskap följt av koherent (fas) detektion. Den dispersiva fortplantningen applicerar en faskärna på frekvensdomänen för den ursprungliga bilden. Denna process har tre steg i allmänhet, laddar bilden, initierar kärnan och applicerar kärnan. I implementeringen av PhyCV representeras varje algoritm som en klass i Python och varje klass har metoder som simulerar stegen som beskrivs ovan. Den modulära kodarkitekturen följer fysiken bakom algoritmen. Se källkoden på GitHub för mer information.
GPU-acceleration
PhyCV stöder GPU-acceleration. GPU-versionerna av PST och PAGE är byggda på PyTorch accelererad av CUDA- verktygslådan. Accelerationen är fördelaktig för att tillämpa algoritmerna i realtids bildvideobehandling och andra djupinlärningsuppgifter. Körtiden per bildruta för PhyCV-algoritmer på CPU (Intel i9-9900K) och GPU (NVIDIA TITAN RTX) för videor med olika upplösningar visas nedan. Observera att PhyCV-förbättringen i svagt ljus fungerar i HSV-färgrymden, så körtiden inkluderar även RGB- till HSV-konvertering. Men för alla körtider som använder GPU:er ignorerar vi tiden för att flytta data från processorer till GPU:er och räknar endast algoritmens drifttid.
CPU | GPU | |
---|---|---|
1080p (1920x1080) | 550 ms | 4,6 ms |
2K (2560 x 1440) | 1000 ms | 8,2 ms |
4K (3840 x 2160) | 2290 ms | 18,5 ms |
CPU | GPU | |
---|---|---|
1080p (1920x1080) | 2800 ms | 48,5 ms |
2K (2560 x 1440) | 5000 ms | 87 ms |
4K (3840 x 2160) | 11660 ms | 197 ms |
CPU | GPU | |
---|---|---|
1080p (1920x1080) | 175 ms | 4,3 ms |
2K (2560 x 1440) | 320 ms | 7,8 ms |
4K (3840 x 2160) | 730 ms | 17,9 ms |
CPU | GPU | |
---|---|---|
1080p (1920x1080) | 60 ms | 2,1 ms |
2K (2560 x 1440) | 110 ms | 3,5 ms |
4K (3840 x 2160) | 245 ms | 7,4 ms |
Installation och exempel
Se GitHub README-filen för en detaljerad teknisk dokumentation.
Aktuella begränsningar
I/O (Input/Output) Flaskhals för videobearbetning i realtid
När man hanterar videoströmmar i realtid från kameror, fångas ramarna och buffras i CPU och måste flyttas till GPU för att köra de GPU-accelererade PhyCV-algoritmerna. Denna process är tidskrävande och det är en vanlig flaskhals för videobearbetningsalgoritmer i realtid.
Brist på parameteranpassning för olika bilder
För närvarande måste parametrarna för PhyCV-algoritmer ställas in manuellt för olika bilder. Även om en uppsättning förvalda parametrar fungerar relativt bra för ett brett spektrum av bilder, förblir bristen på parameteranpassning för olika bilder en begränsning för närvarande.
Se även
- Kantdetektering
- Funktionsdetektering (datorseende)
- Time stretch analog-till-digital-omvandlare
- Dispersiv Fouriertransform i tidssträcka
- Fassträckomvandling