рдЬрдм рд╣рдо рд╢реЙрдЯреНрд╕ рдХреА рдПрдХ рдмрдбрд╝реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдлрдЬреА рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдмрдбрд╝реА рдСрдЯреЛрдореЛрдмрд╛рдЗрд▓ рдХрдВрдкрдиреА рдХреЛ рднреА рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХрд╛рд░ рдХреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХреА рдХреБрдЫ рддрд╕реНрд╡реАрд░реЗрдВ рдзреБрдВрдзрд▓реА рдирд┐рдХрд▓реАрдВ, рдЬреЛ рдмрд┐рдХреНрд░реА рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред
рдирд┐рдореНрди-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпрд╛рдВ рд╕реАрдзреЗ рдореБрдирд╛рдлреЗ рдХреЛ рдХрдо рдХрд░рддреА рд╣реИрдВред- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрддрд░ рдкрд░ рдПрдХ рдЖрд╡реЗрджрди рдлрдЬреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ?
- RGB рдЗрдореЗрдЬ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреИрд╕реЗ рдорд╛рдкреЗрдВ?

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реВрдкрдг
рдореИрдВ рдПрдХ рдмрдбрд╝реА рдСрдЯреЛрдореЛрдмрд╛рдЗрд▓ рдХрдВрдкрдиреА рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдХрд╛рд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рд╡реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдлреЛрдЯреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдЬреЛ рддреБрд░рдВрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдВ рдзреБрдВрдзрд▓реА рд╣реИрдВ, рдЬреЛ рдмрд┐рдХреНрд░реА рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╣реИредрдпрд╣рд╛рдВ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: "рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрддрд░ рдкрд░ рдлрдЬреА рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рдП?"рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреА 1200 рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдирдореВрдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рдирдореВрдиреЗ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд┐рддреНрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ рд╣реИрдВредрдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдордПрд▓ рдореЙрдбрд▓ "рдПрдХ рд╢рд┐рдХреНрд╖рдХ рдХреЗ рд╕рд╛рде" рд╕реАрдЦрдирд╛ рд╕рдорд╛рдзрд╛рди рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИредрдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдЯреВрд▓реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:- рдЕрдЬрдЧрд░ ред рдкреБрд╕реНрддрдХрд╛рд▓рдп: рд╕реБрдиреНрди, matplotlib, cv2;
- рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХред
рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрддрд╛рдКрдВрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдпрд╛ рдерд╛редрд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЪрд░рдг 1. рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
рдХреНрдпрд╛ рддрд╕реНрд╡реАрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?рдПрдХ рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдЙрдЪреНрдЪрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрдЬреА рд╢реЙрдЯреНрд╕ рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реАрдорд╛ рдзреБрдВрдзрд▓реА рд╣реЛрддреА рд╣реИредрддрд╕реНрд╡реАрд░ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?рд╕реАрдорд╛рдУрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд░рдВрдЧ рдЕрдВрддрд░ рджреЗрдЦрддреЗ рд╣реИрдВредрдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рддрд╕реНрд╡реАрд░реЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрдирдХреЗ рдЖрдХрд╛рд░, рдореЛрдЯрд╛рдИ, рд╕рдВрдЦреНрдпрд╛ рдЖрджрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВредрдлреЛрдЯреЛ рдореЗрдВ 0 рд╕реЗ 255 рддрдХ рдХреА рддреАрди-рдЖрдпрд╛рдореА рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ: (рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ, 3 рд░рдВрдЧ)редрдореИрдВрдиреЗ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЧрд╣рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдореЗрдВ: рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреЛ рдЧреБрдгрд╛ рдХрд░рдХреЗ (рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП): тФВ 1 -1 тФВ
тФВ 1 -1 тФВ
рдПрдХ рд░рдВрдЧ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд░рдгреА рдПрдХ рдЙрдЪреНрдЪ рдорд╛рдкрд╛рдВрдХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛редрддреЛ рд╣рдо рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрдХрдЧрдгрд┐рдд рдорд╛рдзреНрдп рдлреЛрдЯреЛрдЧреНрд░рд╛рдл рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдорд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИредрдЪрд░рдг 2. рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рд╕реАрдорд╛рдПрдБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВредрдХреИрд╕реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХреА рд╕реАрдорд╛ рд╕реЗ рдПрдХ рдлрдЬреА рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛ рдХреЛ рднреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдкрд░, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдорд┐рд▓рд╛:- рдореВрд▓ рддрд╕реНрд╡реАрд░ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рдЪрд░рдг 1 рдореЗрдВ рд╡рд░реНрдгрд┐рдд);
- рдореВрд▓ рдЫрд╡рд┐ рдХреЛ рдзреБрдВрдзрд▓рд╛ рдХрд░реЗрдВ;
- рдзреБрдВрдзрд▓реА рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рдЪрд░рдг 1 рдореЗрдВ рд╡рд░реНрдгрд┐рдд);
- рд╣рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рдФрд░ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2 рдХреЗ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рдзреНрдп рдХреЗ рдЕрдиреБрдкрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ;
- рдкрд░рд┐рдгрд╛рдореА рдЧреБрдгрд╛рдВрдХ рдЫрд╡рд┐ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рд╕рд░рд▓ рд╣реИ: рд╕реНрдкрд╖реНрдЯ рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ, рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдлрдЬреА рд╡рд╛рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдШрдЯрд┐рдд рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЧреБрдгрд╛рдВрдХ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛редрдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реАрдзреЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:import numpy as np
import matplotlib.pyplot as plt
import cv2
рд╕реАрдорд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:def edges(n, orient):
edges = np.ones((2*n, 2*n, 3))
if orient == 'vert':
for i in range(0, 2*n):
edges[i][n: 2*n] *= -1
elif orient == 'horiz':
edges[n: 2*n] *= -1
return edges
рдкреИрд░рд╛рдореАрдЯрд░ n рдХреЗ рддрд╣рдд, рд╣рдо рдЙрди рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╕реАрдорд╛ рдЕрдиреБрдорд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрд╖реИрддрд┐рдЬ рдпрд╛ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрдЖрдЧреЗ рдХреЗ рдХрд╛рд░реНрдп рдПрдХ рдЧрд╣рд░реА рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рдд рдХреЗ рд╕рдорд╛рди рд╣реИрдВ:
def conv_single_step(a_slice_prev, W):
s = W * a_slice_prev
Z = np.sum(s)
Z = np.abs(Z)
return Z
def conv_forward(A_prev, W, hparameters):
m = len(A_prev)
(f, f, n_C) = W.shape
stride = hparameters['stride']
pad = hparameters['pad']
Z = list()
flag = 0
z_max = hparameters['z_max']
if len(z_max) == 0:
z_max = list()
flag = 1
for i in range(m):
(x0, x1, x2) = A_prev[i].shape
A_prev_pad = A_prev[i][
int(x0 / 4) : int(x0 * 3 / 4),
int(x1 / 4) : int(x1 * 3 / 4),
:]
(n_H_prev, n_W_prev, n_C_prev) = A_prev_pad.shape
n_H = int((n_H_prev - f + 2*pad) / stride) + 1
n_W = int((n_W_prev - f + 2*pad) / stride) + 1
z = np.zeros((n_H, n_W))
a_prev_pad = A_prev_pad
for h in range(n_H):
vert_start = h * stride
vert_end = h * stride + f
for w in range(n_W):
horiz_start = w * stride
horiz_end = w * stride + f
a_slice_prev = a_prev_pad[vert_start: vert_end, horiz_start: horiz_end, :]
weights = W[:, :, :]
z[h, w] = conv_single_step(a_slice_prev, weights)
if flag == 1:
z_max.append(np.max(z))
Z.append(z / z_max[i])
cache = (A_prev, W, hparameters)
return Z, z_max, cache
def pool_forward(A_prev, hparameters, mode = 'max'):
m = len(A_prev)
f = hparameters['f']
stride = hparameters['stride']
A = list()
for i in range(m):
(n_H_prev, n_W_prev) = A_prev[i].shape
n_H = int(1 + (n_H_prev - f) / stride)
n_W = int(1 + (n_W_prev - f) / stride)
a = np.zeros((n_H, n_W))
for h in range(n_H):
vert_start = h * stride
vert_end = h * stride + f
for w in range(n_W):
horiz_start = w * stride
horiz_end = w * stride + f
a_prev_slice = A_prev[i][vert_start: vert_end, horiz_start: horiz_end]
if mode == 'max':
a[h, w] = np.max(a_prev_slice)
elif mode == 'avg':
a[h, w] = np.mean(a_prev_slice)
A.append(a)
cache = (A_prev, hparameters)
return A, cache
conv_single_step - рд╕реАрдорд╛ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реБрдП рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдЫрд╡рд┐ рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдгрдиредconv_forward - рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдореЗрдВ рд╕реАрдорд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рдкрд░рд┐рднрд╛рд╖рд╛редpool_forward - рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдХрд░реЗрдВредрдЕрд▓рдЧ-рдЕрд▓рдЧ, рдореИрдВ conv_forward рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдореВрд▓реНрдп рдиреЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ:(x0, x1, x2) = A_prev[i].shape
A_prev_pad = A_prev[i][
int(x0 / 4) : int(x0 * 3 / 4),
int(x1 / 4) : int(x1 * 3 / 4),
:]
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реА рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдХреЗрдВрджреНрд░реАрдп рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреИрдорд░рд╛ рдХреЗрдВрджреНрд░ рдкрд░ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЪрд┐рддреНрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреЛ рдХреЗрдВрджреНрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛редрдирд┐рдореНрди рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
def borders(images, filter_size = 1, stride = 1, pool_stride = 2, pool_size = 2, z_max = []):
Wv = edges(filter_size, 'vert')
hparameters = {'pad': pad, 'stride': stride, 'pool_stride': pool_stride, 'f': pool_size, 'z_max': z_max}
Z, z_max_v, _ = conv_forward(images, Wv, hparameters)
print('edge filter applied')
hparameters_pool = {'stride': pool_stride, 'f': pool_size}
Av, _ = pool_forward(Z, hparameters_pool, mode = 'max')
print('vertical filter applied')
Wh = edges(filter_size, 'horiz')
hparameters = {'pad': pad, 'stride': stride, 'pool_stride': pool_stride, 'f': pool_size, 'z_max': z_max}
Z, z_max_h, _ = conv_forward(images, Wh, hparameters)
print('edge filter applied')
hparameters_pool = {'stride': pool_stride, 'f': pool_size}
Ah, _ = pool_forward(Z, hparameters_pool, mode = 'max')
print('horizontal filter applied')
return [(Av[i] + Ah[i]) / 2 for i in range(len(Av))], list(map(np.max, zip(z_max_v, z_max_h)))
рдлрд╝рдВрдХреНрд╢рди рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдХреНрд╖реИрддрд┐рдЬ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреЛрдиреЛрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рдзреНрдп рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИредрдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп:
def orig_blur(images, filter_size = 1, stride = 3, pool_stride = 2, pool_size = 2, blur = 57):
z_max = []
img, z_max = borders(images,
filter_size = filter_size,
stride = stride,
pool_stride = pool_stride,
pool_size = pool_size
)
print('original image borders is calculated')
blurred_img = [cv2.GaussianBlur(x, (blur, blur), 0) for x in images]
print('images blurred')
blurred, z_max = borders(blurred_img,
filter_size = filter_size,
stride = stride,
pool_stride = pool_stride,
pool_size = pool_size,
z_max = z_max
)
print('blurred image borders is calculated')
return [np.mean(orig) / np.mean(blurred) for (orig, blurred) in zip(img, blurred)], img, blurred
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдореВрд▓ рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдЫрд╡рд┐ рдХреЛ рдзреБрдВрдзрд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдзреБрдВрдзрд▓реА рддрд╕реНрд╡реАрд░ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдореВрд▓ рдЫрд╡рд┐ рдФрд░ рдзреБрдВрдзрд▓реЗ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рдзреНрдп рд╕реАрдорд╛рдУрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВредрдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛рд░рдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ, рдореВрд▓ рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдФрд░ рдзреБрдВрдзрд▓реА рдХреА рд╕реАрдорд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреАредрдПрд▓реНрдЧреЛрд░рд┐рдердо рдСрдкрд░реЗрд╢рди рдЙрджрд╛рд╣рд░рдг
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ freepik.com рдлреЛрдЯреЛ рд╕реНрдЯреЙрдХ рд╕реЗ рддрд╕реНрд╡реАрд░реЗрдВ рд▓реАрдВред


рд╣рдо рдзреБрдВрдзрд▓рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдкрд╣рд▓реА рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ:
рджреВрд╕рд░рд╛:
рддреАрд╕рд░рд╛:
рдЪреМрдерд╛:
рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рдЪрд┐рддреНрд░реЛрдВ (3 рдФрд░ 4 рд╡реЗрдВ) рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛ рдлрд╝рдЬрд╝реА рд▓реЛрдЧреЛрдВ (1 рдФрд░ 2) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реИредрдЧрдгрдирд╛ рдХреЗ рдмрд╛рдж, рд╣рдо рдЧреБрдгрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:[5.92918651681958,2.672756123184502,10.695051017699232,11.901115749698139]рдЧреБрдгрд╛рдВрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ: рдмрдбрд╝рд╛ рдЧреБрдгрд╛рдВрдХ, рдлреЛрдЯреЛ рдХреЛ рддреЗрдЬ рдХрд░рддрд╛ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреВрд╕рд░реА рддрд╕реНрд╡реАрд░ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЬреЛ рдЧреБрдгрд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреА рд╣реИредрджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реБрд╡рд┐рдзрд╛рдПрдБ
- рддрд╕реНрд╡реАрд░ рдХреЛ рддреЗрдЬ рдХрд░реЗрдВ, рд╕реАрдорд╛ рдЬрд┐рддрдиреА рдордЬрдмреВрдд рд╣реЛрдЧреА, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛;
- рд╡рд┐рднрд┐рдиреНрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдкрдиреЗ рдЖрдк рдкрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдХрд╣реАрдВ, рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рддрд╕реНрд╡реАрд░реЛрдВ рдХрд╛ рдЧреБрдгрд╛рдВрдХ 7 рд╕реЗ рдКрдкрд░ рд╣реЛрдЧрд╛, рдХрд╣реАрдВ 10 рд╕реЗ рдКрдкрд░;
- рдЧреБрдгрд╛рдВрдХ рдлреЛрдЯреЛ рдХреА рдЪрдордХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдВрдзреЗрд░реЗ рддрд╕реНрд╡реАрд░реЛрдВ рдХреА рд╕реАрдорд╛рдПрдВ рдХрдордЬреЛрд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЧреБрдгрд╛рдВрдХ рдХрдо рд╣реЛрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, рдорд╛рдирдХ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд▓рд┐рдП;
рдПрдХ рдХрд╛рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрд░реЗ github рдЦрд╛рддреЗ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред