Зургийг хэт шахахын тулд AI ашиглах

Зургийг хэт шахахын тулд AI ашиглах
Мэдрэлийн сүлжээ гэх мэт өгөгдөлд суурилсан алгоритмууд дэлхийг шуурганд автуулсан. Тэдний хөгжил нь хямд, хүчирхэг тоног төхөөрөмж, асар их хэмжээний өгөгдөл зэрэг хэд хэдэн шалтгаантай холбоотой юм. Мэдрэлийн сүлжээнүүд нь дүрсийг таних, байгалийн хэлийг ойлгох гэх мэт "танин мэдэхүйн" ажлуудтай холбоотой бүх зүйлийн тэргүүн эгнээнд явж байна. Гэхдээ тэд ийм даалгавараар хязгаарлагдах ёсгүй. Энэ нийтлэлд үлдэгдэл сурах аргыг ашиглан мэдрэлийн сүлжээг ашиглан зургийг хэрхэн шахах тухай өгүүлнэ. Нийтлэлд үзүүлсэн арга нь стандарт кодлогчоос илүү хурдан бөгөөд илүү дээр юм. Схемүүд, тэгшитгэлүүд, мэдээжийн хэрэг, зүсэлтийн доорх тест бүхий хүснэгт.

Энэ нийтлэл дээр үндэслэсэн болно энэ нь ажил. Та мэдрэлийн сүлжээ, тэдгээрийн ойлголтыг мэддэг гэж үздэг. эргэлт и алдагдал функц.

Зургийн шахалт гэж юу вэ, энэ нь хэрхэн ажилладаг вэ?

Зургийг шахах гэдэг нь зургийг бага зай эзэлдэг болгож хувиргах үйл явц юм. Зүгээр л зургийг хадгалахад маш их зай эзэлдэг тул анхны зургийн хэмжээг багасгах зорилготой JPEG, PNG гэх мэт кодлогч байдаг.

Таны мэдэж байгаагаар зураг шахах хоёр төрөл байдаг: алдагдалгүй и алдагдалтай. Нэрнээс нь харахад алдагдалгүй шахалт нь зургийн анхны өгөгдлийг хадгалж чаддаг бол алдагдалтай шахалт нь шахалтын явцад зарим өгөгдлийг алддаг. жишээлбэл, JPG нь алдагдалтай алгоритмууд [ойролцоогоор. орчуулга. - үндсэндээ алдагдалгүй JPEG-ийн талаар мартаж болохгүй], PNG бол алдагдалгүй алгоритм юм.

Зургийг хэт шахахын тулд AI ашиглах
Алдагдалгүй ба алдагдалтай шахалтын харьцуулалт

Баруун талд байгаа зурган дээр маш олон бөглөрсөн олдвор байгааг анзаараарай. Энэ бол алдагдсан мэдээлэл. Ойролцоох өнгөний ойролцоох пикселүүдийг орон зай хэмнэхийн тулд нэг талбар болгон шахдаг боловч бодит пикселийн талаарх мэдээлэл алга болдог. Мэдээжийн хэрэг, JPEG, PNG гэх мэт кодлогчдод ашигладаг алгоритмууд нь илүү төвөгтэй боловч энэ нь алдагдалтай шахалтын сайн жишээ юм. Алдагдалгүй шахалт нь сайн боловч алдагдалгүй шахагдсан файлууд нь дискний зайг их хэмжээгээр эзэлдэг. Маш их мэдээлэл алдалгүйгээр зургийг шахах илүү сайн аргууд байдаг ч тэдгээр нь нэлээд удаан бөгөөд олонхи нь давтагдах аргыг ашигладаг. Энэ нь тэдгээрийг олон CPU эсвэл GPU цөм дээр зэрэгцүүлэн ажиллуулах боломжгүй гэсэн үг юм. Энэ хязгаарлалт нь тэдгээрийг өдөр тутмын хэрэглээнд бүрэн ашиглах боломжгүй болгодог.

Convolutional Neural Network оролт

Хэрэв ямар нэг зүйлийг тооцоолох шаардлагатай бөгөөд тооцоолол нь ойролцоо байж болох юм бол нэмнэ үү мэдрэлийн сүлжээ. Зохиогчид зургийн шахалтыг сайжруулахын тулд нэлээд стандарт эвдэрсэн мэдрэлийн сүлжээг ашигласан. Үзүүлсэн арга нь хамгийн сайн шийдлүүдтэй (хэрэв илүү сайн биш бол) ижил түвшинд ажиллаад зогсохгүй зэрэгцээ тооцооллыг ашиглах боломжтой бөгөөд энэ нь хурдыг эрс нэмэгдүүлэхэд хүргэдэг. Шалтгаан нь Convolutional Neural Networks (CNN) нь зурагнаас орон зайн мэдээллийг гаргаж авахдаа маш сайн байдаг ба дараа нь илүү авсаархан хэлбэрээр үзүүлдэг (жишээлбэл, зөвхөн зургийн "чухал" битүүд хадгалагддаг). Зохиогчид зургуудыг илүү сайн харуулахын тулд CNN-ийн энэхүү чадварыг ашиглахыг хүссэн.

архитектур

Зохиогчид давхар сүлжээг санал болгосон. Эхний сүлжээ нь дүрсийг оролт болгон авч, авсаархан дүрслэл (ComCNN) үүсгэдэг. Дараа нь энэ сүлжээний гаралтыг стандарт кодлогч (жишээ нь JPEG) боловсруулдаг. Кодек боловсруулсны дараа дүрсийг хоёр дахь сүлжээнд дамжуулдаг бөгөөд энэ нь кодлогчоос авсан зургийг "засдаг" бөгөөд анхны зургийг буцааж өгөхийг оролддог. Зохиогчид энэ сүлжээг Reconstructive CNN (RecCNN) гэж нэрлэсэн. GAN-уудын нэгэн адил хоёр сүлжээг давтах хэлбэрээр сургадаг.

Зургийг хэт шахахын тулд AI ашиглах
ComCNN Компакт дүрслэлийг стандарт кодлогч руу дамжуулдаг

Зургийг хэт шахахын тулд AI ашиглах
RecCNN. ComCNN-ийн гаралтыг томруулж, RecCNN-д нийлүүлдэг бөгөөд энэ нь үлдсэн хэсгийг сурахыг оролдох болно

Кодекийн гаралтыг томруулж, дараа нь RecCNN руу дамжуулна. RecCNN нь зургийг эх хувилбартай нь аль болох ойртуулахыг хичээх болно.

Зургийг хэт шахахын тулд AI ашиглах
Төгсгөлд нь дүрс шахах хүрээ. Co(.) нь зураг шахах алгоритм юм. Зохиогчид JPEG, JPEG2000 болон BPG ашигласан

Үлдэгдэл гэж юу вэ?

Үлдсэн хэсгийг кодлогчоор тайлж буй зургийг "сайжруулах" дараах боловсруулалтын алхам гэж үзэж болно. Мэдрэлийн сүлжээ нь дэлхийн талаар маш их "мэдээлэл" эзэмшсэн тул юу засах талаар танин мэдэхүйн шийдвэр гаргах боломжтой. Энэ санаа дээр үндэслэсэн үлдэгдэл суралцах, боломжтой дэлгэрэнгүй мэдээллийг уншина уу энд.

Алдагдлын функцууд

Бидэнд хоёр мэдрэлийн сүлжээ байгаа учраас алдагдлын хоёр функцийг ашигладаг. Эдгээрийн эхнийх нь ComCNN нь L1 гэсэн шошготой бөгөөд дараах байдлаар тодорхойлогддог.

Зургийг хэт шахахын тулд AI ашиглах
ComCNN-д зориулсан алдагдлын функц

Тайлбар

Энэ тэгшитгэл нь төвөгтэй мэт санагдаж болох ч энэ нь үнэндээ стандарт юм (язгуурын квадрат алдаа) МХБ. ||² гэдэг нь тэдгээрийн хавсаргасан векторын нормыг хэлнэ.

Зургийг хэт шахахын тулд AI ашиглах
Тэгшитгэл 1.1

Cr нь ComCNN-ийн гаралтыг илэрхийлнэ. θ нь ComCNN параметрүүдийн суралцах чадварыг илэрхийлдэг бол XK нь оролтын дүрс юм

Зургийг хэт шахахын тулд AI ашиглах
Тэгшитгэл 1.2

Re() RecCNN гэсэн үгийн товчлол. Энэ тэгшитгэл нь RecCNN-д 1.1-р тэгшитгэлийн утгыг энгийнээр дамжуулдаг. θ нь RecCNN-ийн сургах боломжтой параметрүүдийг илэрхийлдэг (дээд талд байгаа малгай нь параметрүүд тогтмол байна гэсэн үг).

Зөн совингийн тодорхойлолт

Тэгшитгэл 1.0 нь ComCNN-ийн жинг өөрчлөхөд хүргэдэг бөгөөд ингэснээр RecCNN-ээр дахин үүсгэх үед эцсийн дүрс нь оролтын зурагтай аль болох адилхан харагдах болно. Хоёр дахь RecCNN алдагдлын функцийг дараах байдлаар тодорхойлно.

Зургийг хэт шахахын тулд AI ашиглах
Тэгшитгэл 2.0

Тайлбар

Дахин хэлэхэд функц нь төвөгтэй мэт санагдаж болох ч энэ нь ихэвчлэн мэдрэлийн сүлжээний алдагдлын стандарт функц (MSE) юм.

Зургийг хэт шахахын тулд AI ашиглах
Тэгшитгэл 2.1

Co() кодек гаралт, дээр нь малгайтай x нь ComCNN гаралт гэсэн үг. θ2 нь RecCNN сургах боломжтой параметрүүд, res() зүгээр л RecCNN-ийн үлдэгдэл гаралт юм. RecCNN нь Co() болон оролтын зургийн хоорондох ялгаан дээр сургагдсан боловч оролтын зураг дээр биш гэдгийг тэмдэглэх нь зүйтэй.

Зөн совингийн тодорхойлолт

Тэгшитгэл 2.0 нь RecCNN-ийг жингээ өөрчлөхөд хүргэдэг бөгөөд ингэснээр гаралт нь оролтын зурагтай аль болох адилхан харагдах болно.

Сурах схем

Загваруудыг давтах байдлаар сургадаг GAN. Эхний загварын жинг хоёр дахь загварын жинг шинэчлэх үед, дараа нь эхний загварыг сургах явцад хоёр дахь загварын жинг тогтооно.

Шалгалт

Зохиогчид өөрсдийн аргыг одоо байгаа аргууд, тэр дундаа энгийн кодлогчтой харьцуулсан. Тэдний арга нь тохирох тоног төхөөрөмж дээр өндөр хурдыг хадгалахын зэрэгцээ бусдаас илүү сайн ажилладаг. Нэмж дурдахад зохиогчид хоёр сүлжээний зөвхөн нэгийг нь ашиглахыг оролдсон бөгөөд гүйцэтгэл буурч байгааг тэмдэглэжээ.

Зургийг хэт шахахын тулд AI ашиглах
Бүтцийн ижил төстэй байдлын индексийн харьцуулалт (SSIM). Өндөр утгууд нь анхныхтай илүү төстэй байгааг харуулж байна. Тод үсэг нь зохиогчдын ажлын үр дүнг илэрхийлнэ

дүгнэлт

Бид дүрсийг шахахад гүн гүнзгий суралцах аргыг ашиглах шинэ аргыг судалж, дүрс ангилах, хэл боловсруулах зэрэг "ерөнхий" ажлуудаас гадна даалгавруудад мэдрэлийн сүлжээг ашиглах боломжийн талаар ярилцсан. Энэ арга нь орчин үеийн шаардлагаас доогуур биш төдийгүй зургийг илүү хурдан боловсруулах боломжийг олгодог.

Бид Habravchan-д зориулж сурталчилгааны код хийсэн тул мэдрэлийн сүлжээг сурах нь илүү хялбар болсон ХАБР, баннер дээр заасан хөнгөлөлтөд нэмэлт 10% хөнгөлөлт үзүүлэх.

Зургийг хэт шахахын тулд AI ашиглах

Илүү олон курс

Онцлох нийтлэлүүд

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх