Baada ya kutumia usiku mwingi bila kulala nikifanya kazi na fomati za usimbaji rangi za YUV , niligundua jinsi habari ndogo inayopatikana kuhusu umbizo hili la ajabu. Bado, inaweza kuwa muhimu sana kwa wale wanaohusika katika utiririshaji wa video wa P2P au kuchakata mitiririko ya video na AI.
Kwa mtazamo wa kwanza, RGB na YUV zinaweza kuonekana kama njia tofauti za kuwakilisha rangi. Lakini chini ya tofauti hii kuna vita vinavyoendelea: urahisi dhidi ya ufanisi, usahihi dhidi ya utendaji, mtazamo kamili dhidi ya mbano bila hasara inayoonekana. Mtu anaweza kudhani kuwa RGB ndiye mfalme asiye na shaka wa nafasi za rangi - baada ya yote, kamera, skrini, na mitandao mingi ya neva hufanya kazi ndani yake. Hata hivyo, katika ulimwengu wa utiririshaji na usimbaji wa video, YUV inaongoza, ikijificha chini ya kifuniko mfululizo wa biashara ngumu zinazotuwezesha kutazama video bila kuchelewa, kuokoa gigabytes ya data, na kuharakisha usindikaji wa wakati halisi.
Lakini vipi ikiwa unataka kuziba dunia hizi mbili? Aina za AI zilizofunzwa kwenye RGB hushughulikia vipi mitiririko ya video katika YUV? Kwa nini codecs zinasitasita kufanya kazi na RGB? Na inawezekana kufikia usawa kamili kati ya miundo hii? Hapa, nitakusaidia kuelewa kwa nini RGB na YUV ni kama mabondia wawili kutoka madarasa tofauti ya uzani, wanaolazimishwa kukutana katika pete sawa ya utiririshaji wa video na teknolojia ya AI.
Miundo ya RGB na RGBA ni moja kwa moja na inatumika sana katika michoro ya kompyuta, kwa hivyo hatutazama katika mambo ya msingi. Kwa kifupi, kompyuta yako inapotoa picha, inafanya kazi na chaneli tatu— Nyekundu (R) , Kijani (G) , na Bluu (B) . Hivi ndivyo skrini nyingi zinavyofanya kazi.
RGBA inaongeza chaneli ya ziada - Alpha (A) - ambayo inadhibiti uwazi, na kuifanya iwe muhimu sana kwa michoro ya wavuti na muundo wa dijiti. RGB inawakilisha kwa usahihi rangi bila kuvuruga, lakini ina drawback muhimu - inachukua nafasi nyingi sana. Kwa mfano, picha yenye azimio la 1920 × 1080
katika umbizo la RGBA (kwa kutumia baiti 1 kwa kila kituo) inachukua: 1920×1080×4 = 8294400 bytes ≈ 8.2 MB
Miundo iliyobanwa kama vile JPEG hupunguza saizi ya faili, lakini katika ulimwengu wa utiririshaji wa video wa P2P na usindikaji wa wakati halisi wa AI kwenye mashine za wateja - kama vile utambuzi wa kitu, ugunduzi wa sehemu muhimu, na sehemu - hili si chaguo linalowezekana. Tunahitaji kusambaza na kuchanganua kila fremu kwa wakati halisi, bila kutambulisha vizalia vya programu vya kubana au kupoteza maelezo muhimu. Hapo ndipo YUV inapotumika, ikitoa mbinu bora zaidi ya kusawazisha ubora, ufanisi na utendakazi.
Tofauti na RGB, ambayo huhifadhi maelezo ya rangi moja kwa moja, YUV hutenganisha picha kuwa luma (Y) na vipengele vya chroma (U na V) . Mbinu hii huwezesha mgandamizo bora wa data bila hasara kubwa ya ubora.
Y (Luma, mwangaza) - Inawakilisha mwangaza wa pikseli, kubainisha jinsi mwanga au giza inavyoonekana. Kimsingi, hii ni toleo la rangi ya kijivu (nyeusi-nyeupe) ya picha, kuhifadhi maumbo na maelezo yote.
U na V (Chroma, rangi) - Hifadhi maelezo ya rangi lakini kwa usahihi wa chini kwa kuwa jicho la mwanadamu huona mwangaza kwa kasi zaidi kuliko usahihi wa rangi. Kwa ufupi, chaneli hizi hufanya kama "shift" ya pande mbili ya mwangaza kuelekea hues za rangi tofauti.
Utengano huu ndio ufunguo wa kwa nini YUV inafaa sana kwa ukandamizaji wa video, utiririshaji, na usindikaji wa video kulingana na AI.
Mojawapo ya faida za YUV ambazo hazionekani sana lakini zenye ufanisi zaidi ni kwamba moja ya chaneli zake (Y) haijakusudiwa kuhifadhi rangi hata kidogo. Badala yake, inaelezea kwa usahihi
Jicho la mwanadamu huona picha kwa kutumia aina mbili za vipokea picha kwenye retina:
Seli za fimbo (~ milioni 120) - Nyeti kwa mwangaza na utofautishaji lakini haiwezi kutambua rangi. Zinaturuhusu kuona maumbo na maelezo hata kwa mwanga mdogo.
Seli za koni (~ milioni 6) - Zinawajibika kwa utambuzi wa rangi lakini ni chache mara 20 kwa idadi. Wanafanya kazi tu katika hali nzuri ya taa na kuja katika aina tatu: nyekundu, kijani, na bluu ( RGB , bila ya kushangaza).
Kwa sababu ya usawa huu wa vipokezi, akili zetu hutanguliza sura badala ya rangi. Ikiwa mwangaza au utofautishaji umepotoshwa, tunaona mara moja. Hata hivyo, mabadiliko ya rangi kidogo mara nyingi huenda bila kutambuliwa.
Hii ndio Kanuni kuu ya YUV
Hii inamaanisha kuwa tofauti na RGB - ambapo chaneli zote tatu ni muhimu sawa - YUV hushughulikia chaneli zake tofauti kulingana na mtazamo wa mwanadamu. Kwa kuwa data ya rangi (U na V) sio muhimu sana, tunaweza kupunguza kiasi cha data inayotumwa bila kupoteza ubora unaoonekana.
Hivi ndivyo hasa utaratibu wa Ukusanyaji wa sampuli za Chroma unavyofanya kazi - kuboresha usimbaji wa video kwa kubana maelezo ya rangi kwa kuchagua huku mwangaza ukiwa sawa.
Sampuli ndogo za Chroma ni mbinu ya kupunguza kiasi cha data ya rangi kwenye picha. Badala ya kuhifadhi rangi kwa kila pikseli (kama katika RGB ), YUV inapunguza azimio la chaneli za rangi huku ikiweka mwangaza (umbo) sawa.
Kuna viwango kadhaa vya tasnia vya sampuli ndogo za chroma:
4:2:2 sampuli ndogo - Kila jozi ya pikseli hushiriki maelezo ya rangi. Jicho halitambui tofauti, lakini saizi ya faili imepunguzwa kwa 33%. Njia hii hutumiwa mara chache.
4:2:0 sampuli ndogo - Rangi huhifadhiwa kwa pikseli moja tu kati ya nne, na kupata mgandamizo wa juu zaidi.
Kwa nini 4:2:0 ndio kiwango kikuu?
Umbizo hili hupunguza ukubwa wa data kwa nusu bila kudhalilisha ubora wa picha. Ndio maana ndio kiwango cha kwenda kwa karibu huduma zote za utiririshaji na majukwaa ya video. Kwa mfano, Timu za Microsoft husambaza video saa 4:2:0 kwa sababu hutoa usawa bora kati ya ubora na ufanisi wa kipimo data.
Katika usanidi huu, thamani ya rangi moja inawakilisha pikseli nne, na jicho la mwanadamu halitambui tofauti—hata linapokuzwa—kwa kuwa mwangaza (Y) haujabadilika.
1920×1080×1.5 = 3110400 bytes ≈ 3.1 MB
kwenye fremu moja, hii inasababisha kupunguzwa zaidi ya mara mbili kwa ukubwa wa data ikilinganishwa na RGBA - bila hasara yoyote inayoonekana katika ubora!
Picha iliyo hapa chini inaonyesha jinsi fremu/picha ya mwisho inavyofanana na 4:2:0 sampuli ndogo za chroma. Kumbuka jinsi U moja inaelezea Y nne, ni ushindi wa kumbukumbu mara 4!
Katika ulimwengu wa kisasa, maombi ya AI ya usindikaji wa video katika wakati halisi yanapanuka kwa kasi. Mitandao ya neva haitumiwi tu kwa uchunguzi wa kamera na uboreshaji wa ubora wa mtiririko lakini pia kwa kazi ngumu zaidi kama vile madoido ya uzalishaji, urekebishaji wa mwonekano wa wakati halisi, utambuzi wa kitu na ufuatiliaji wa mwendo.
Kwa mfano, tulitengeneza mfumo wa vipodozi pepe unaotumia rangi ya midomo na kivuli kwenye uso wa mtu kwenye gumzo la video—tukifanya hivyo kwa uhalisia iwezekanavyo. Katika kazi kama hizi, usahihi katika sura na harakati ni muhimu sana, wakati habari ya rangi ni ya pili. Unaweza pia kutoa mafunzo kwa kielelezo chako kuelewa picha za greyscale ili kuongeza utendakazi wake, wakati huo huo, kupata picha za greyscale kwenye GPU kuna ufanisi zaidi ikiwa utachukua YUV 4:2:0 kama ingizo, kwa kuwa unahitaji tu kukata sehemu ya kwanza ya picha ili kupata kituo cha rangi ya kijivu.
Sura ni muhimu zaidi kuliko rangi
Miundo ya AI, kama mifumo mingine mingi ya kuona ya kompyuta, inalenga hasa muundo wa kitu, umbo, na kingo badala ya uzazi sahihi wa rangi. Hii ni kweli kwa utambuzi wa uso, ufuatiliaji wa mwonekano, utambuzi wa hitilafu, na madoido ya Uhalisia Pepe. Kwa mfano, katika mfumo wa utambuzi wa mwendo, muhtasari wa pikseli wa mwili ni muhimu zaidi kuliko toni ya ngozi.
Utendaji ni muhimu
Kwa AI ya wakati halisi, kila fremu lazima ichakatwa kwa chini ya 20 ms
ili kudumisha kasi laini ya fremu ( 50–60 FPS
). Kadiri mtandao wa neva unavyopokea na kuchakata viunzi kwa kasi, ndivyo programu inavyofanya kazi ya asili na maji.
1920×1080
RGBA ina uzito wa 8.2 MB
, na hivyo kuweka mkazo mkubwa kwenye kumbukumbu na nguvu ya kuchakata.O(1)
kwa kutuma rangi katika ubora wa chini, kuhifadhi rasilimali za kukokotoa bila kupoteza ubora unaoonekana.
Uchakataji wa GPU Ulioboreshwa
GPU za kisasa zimeboreshwa sana kwa uchakataji wa YUV, kumaanisha kuwa tunaweza kufanya kazi na picha bila kuzibadilisha kuwa RGB. Hii huondoa mahesabu yasiyo ya lazima na huongeza kasi ya usindikaji.
Bandwidth na Akiba ya Kumbukumbu
Kupunguza saizi ya data ni muhimu kwa uwasilishaji na usindikaji wa video katika wakati halisi:
Wacha tuwe waaminifu - RGB inaonekana kama chaguo dhahiri. Ni kiwango katika kamera, skrini, na michoro ya kompyuta. Lakini inapokuja katika utiririshaji wa video wa ulimwengu halisi na ujumuishaji wa AI, RGB inabadilika kuwa dinosaur wavivu . Kisha YUV huingia kwenye pete, ikitoa usawa kamili wa ubora, kasi na ufanisi wa data. Mfumo wake wa uhifadhi wa busara (unaotenganisha mwangaza kutoka kwa rangi iliyobanwa) huwezesha mambo ambayo yanaweza kuwa ndoto ya kimahesabu katika RGB .
RGB ni nzuri - lakini sio ambapo utendaji wa wakati halisi na AI zinahusika. Katika utiririshaji wa video, YUV ndiye farasi wa kweli na imekuwa ikitoa suluhisho kuu kwa miaka.
Kwa hivyo, ikiwa bado unafikiria RGB ni mfalme, ni wakati wa kufikiria upya. Miundo ya video imechezwa kwa muda mrefu kwa sheria zao wenyewe.