MYCSS

1 березня 2024 р.

Згорткові нейронні мережі (Conv), що таке знайоме :)

Ознайомлюючись з лекцію про "Згорткові нейронні мережі" (Conv) в темі "Python Data Sciense" школи GoIT. Думаю що ж таке знайоме.

convolutional neural network

Знаходжу код далекого 2014 року, де у браузері, в той час Chrome NaCL мав можливість виконувати порогами клієнта на С, компілювавши на стороні клієнта файл (.pexe), писали код котрий покращував зображення відео на "льоту" через OpenGL Shaders.

(Capture кадр відео, і поверх відео малював  OpenGL зображення, а оригінальне відео не було видно.)

Так от там і були операції як раз такі самі як у Conv kernel 3х3 , і середнє потім забиралося. 😀

const char kFragShaderSource[] =  "precision mediump float;\n"
 "uniform sampler2D u_texture;\n"
 "uniform float imgWidth;\n"
 "uniform float imgHeight;\n"
 "varying vec2 v_texcoord;\n"
 "float kernel[9];\n"
 "vec2 offset[9];\n"
 "float step_w = 1.0/imgWidth;\n"
 "float step_h = 1.0/imgHeight;\n"
 "void main() {\n"
 "offset[0] = vec2(-step_w, -step_h);\n"
 "offset[1] = vec2(0.0, -step_h);\n"
 "offset[2] = vec2(step_w, -step_h);\n"
 "offset[3] = vec2(-step_w, 0.0);\n"
 "offset[4] = vec2(0.0, 0.0);\n"
 "offset[5] = vec2(step_w, 0.0);\n"
 "offset[6] = vec2(-step_w, step_h);\n"
 "offset[7] = vec2(0.0, step_h);\n"
 "offset[8] = vec2(step_w, step_h);\n"
 "kernel[0] = 0.;\n"
 "kernel[1] = -.4;\n"
 "kernel[2] = 0.;\n"
 "kernel[3] = -.4;\n"
 "kernel[4] = 2.6;\n"
 "kernel[5] = -.4;\n"
 "kernel[6] = 0.;\n"
 "kernel[7] = -.4;\n"
 "kernel[8] = 0.;\n"
 "vec4 sum = vec4(0.0);\n"
 "int i;\n"
 "for (i = 0; i < 9; i++) {\n"
 "vec4 color = texture2D(u_texture, (vec2(1.0,1.0)-v_texcoord) + offset[i]);\n"
 "sum += color * kernel[i];\n"
 "}\n"
 "gl_FragColor = sum;\n"
 "}\n";

kernel:

 0.0  -0.4   0.0
-0.4   2.6  -0.4
 0.0  -0.4   0.0
Так як паддінгу не було, на жаль в коді.
То по периметру були проблеми на 1 піксель :)
"offset[0] = vec2(-step_w, -step_h);\n"

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready