рдбреНрд░реЛрди рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдЫрдд рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП MASK-RCNN


рдПрдХ рд╕рдлрд╝реЗрдж рдФрд░ рд╕рдлрд╝реЗрдж рд╢рд╣рд░ рдореЗрдВ рдПрдХ рд╕рдлрд╝реЗрдж рдФрд░ рд╕рдлрд╝реЗрдж рдЧрд▓реА рдореЗрдВ рд╕рдлрд╝реЗрдж рдФрд░ рд╕рдлрд╝реЗрдж рдШрд░ рдереЗ ... рдФрд░ рдЗрд╕ рдлреЛрдЯреЛ рдореЗрдВ рдЖрдк рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдШрд░реЛрдВ рдХреА рдЫрдд рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреИрдбрд╕реНрдЯреНрд░рд╛рд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЪрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдХрд╛рд░ рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдХрд░ рдХреЛрдИ рднреА рд╕реБрди рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рд╣рд╡рд╛рдИ рддрд╕реНрд╡реАрд░реЛрдВ рд╕реЗ рд░рд╛рдЬрдзрд╛рдиреА рдЗрдорд╛рд░рддреЛрдВ рдХреА рдЫрдд рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рдЧрдгрдирд╛ рдФрд░ рдХреИрдбрд╕реНрдЯреНрд░рд╛рд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдиреБрдЕрд▓ рдЦреЛрдЬ рдФрд░ рдЧрдгрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рдирдП рдШрд░реЛрдВ рдХреЛ рдзреНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЧрдгрдирд╛ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рддреБрд░рдВрдд рдЙрдарддреА рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрдиред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо NORBIT рдореЗрдВ рдХреИрд╕реЗ рд╣реИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

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

рдирддреАрдЬрддрди, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рд╕рдорд╕реНрдпрд╛


рдЖрдЗрдП рд╣рдо рдЬрд┐рди рддрдХрдиреАрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:

  • рд╕рд░реНрджрд┐рдпреЛрдВ рдФрд░ рдЧрд░реНрдорд┐рдпреЛрдВ рдХреА рд╣рд╡рд╛рдИ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИ (рдХреЗрд╡рд▓ рдЧрд░реНрдорд┐рдпреЛрдВ рдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдПрдХ рдореЙрдбрд▓ рд╕рд░реНрджрд┐рдпреЛрдВ рдореЗрдВ рдЫрддреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдорд░реНрде рд╣реИ);
  • , ;
  • , ( ), ( ) , ;
  • , , ( ). ;
  • (, ) .

рдФрд░ рдбреНрд░реЛрди рдХрднреА-рдХрднреА рдпреЗ рддрд╕реНрд╡реАрд░реЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ:


рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рд╣реЛ рд╕рдХрддреА рдереАрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдорд╛рд░реА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХреА:

  • рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реАрдорд┐рдд рд╕рдордп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реАрдзреЗ рдЙрдбрд╝рд╛рди рдХреЗ рд╕рдордп) рдХреЗ рд▓рд┐рдП рдЖрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдерд╛, рдЬрд┐рд╕рдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рд╣рд▓ рдХрд░ рджрд┐рдпрд╛;
  • рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдкрд░, рд╣рдордиреЗ рддреБрд░рдВрдд рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рдЙрдЪреНрдЪ-рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реА рдЫрд╡рд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХреАрдВ (рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ 250 рдорд┐рдореА рдХреА рдКрдВрдЪрд╛рдИ рдкрд░ 21 рдорд┐рдореА рдХреА рдлреЛрдХрд▓ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд▓реЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ 5 рд╕реЗрдореА / рдкреАрдПрдХреНрд╕ рд╣реИ), рд╢реЗрдЦреНрдЯреА рдХрдВрдкрдиреА, рдирдХреНрд╢реЗ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдкрд╛рд╕ рднрд╡рд┐рд╖реНрдп рдХреА рдпреВрдПрд╡реА рдЙрдбрд╝рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЕрдВрддрддрдГ рдмрд╣реБрдд рд╣реА рдЕрдиреЛрдЦреА рдЯрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдереЗ;

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдорд╛рдзрд╛рди, рдмрд╛рдЙрдВрдбреНрд░реА рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░реЛрдХ 


рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдХрд┐рди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред

  • рдПрдирд╛рдХреЛрдВрдбрд╛ рдкрд╛рдпрдерди рдФрд░ рдЖрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╣реИред
  • Tensorflow Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
  • Keras рдЪреМрдЦрдЯреЗ Deeplearning4j, TensorFlow рдФрд░ Theano рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдб-рдСрди рд╣реИред
  • OpenCV рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди, рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
  • рдлреНрд▓рд╛рд╕реНрдХ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдУрдПрд╕ рдиреЗ рдЙрдмрдВрдЯреВ 18.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред Ubuntu рдореЗрдВ GPU (NVIDIA) рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдп рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

> sudo apt install nvidia-cuda-toolkit

рдЯрд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░рдирд╛


рдкрд╣рд▓рд╛ рдХрд╛рдо рдЬреЛ рд╣рдордиреЗ рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣ рдлреНрд▓рд╛рдИрдмрд╛рдИ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЯрд╛рдЗрд▓реЛрдВ (2048x2048 px) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдерд╛ред рдЖрдк рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрд▓ рдХреА рднреМрдЧреЛрд▓рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рдпреЛрд╕реЗрд╡рд░ - рдпрд╣ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд┐рдпреЛрдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рдпреЛрд╕реЗрд╡рд░ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА - рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдВрдХрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рджрд░реНрд╢рдиред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреВрдЬреАрдЖрдИрдПрд╕ рдореЗрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рддрд░рд┐рдд рдХрдорд╛рдВрдб рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдм рд╕рдВрд╕рд╛рдзрди рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрдорд╛рдиреЗ рдФрд░ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ pyproj рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

from pyproj import Proj, transform

class Converter:
    P3857 = Proj(init='epsg:3857')
    P4326 = Proj(init='epsg:4326')
...
    def from_3857_to_GPS(self, point):
        x, y = point
        return transform(self.P3857, self.P4326, x, y)
    def from_GPS_to_3857(self, point):
        x, y = point
        return transform(self.P4326, self.P3857, x, y)
...

рдирддреАрдЬрддрди, рд╕рднреА рдкреЙрд▓реАрдЧреЛрди рд╕реЗ рдПрдХ рдмрдбрд╝реА рдкрд░рдд рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рдХреЗ рдКрдкрд░ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдерд╛ред 


GeoServer рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  1. Java 8.
  2. GeoServer.
  3. , , /usr/share/geoserver
  4.  

    echo ┬лexport GEOSERVER_HOME=/usr/share/geoserver┬╗ >> ~/.profile
  5. :

    sudo groupadd geoserver
  6. , , :

    sudo usermod -a -G geoserver <user_name>
  7. - :

    sudo chown -R :geoserver /usr/share/geoserver/
  8. :

    sudo chmod -R g+rwx /usr/share/geoserver/
  9. GeoServer 

    cd geoserver/bin && sh startup.sh

рдЬрд┐рдпреЛрд╕реЗрд╡рд░ рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рдЖрд╡реЗрджрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдХрдЬреАрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддреНрдкрд╛рдж рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЕрдЧрд▓рд╛, рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрд▓ рдХреЛ рд╕рднреА рджреГрд╢реНрдпрдорд╛рди рдЫрддреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдСрдмреНрдЬреЗрдХреНрдЯ / рдореЙрдбрд▓ рд╕реЗ рд╢реЛрдз / рдЯреЗрдиреНрд╕рд░рдлреНрд▓реЛ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ ред рдЗрд╕ рддрд░рд╣, рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рдЪрдпрди (рд╕реАрдорд╛ рдмреЙрдХреНрд╕) рдХреЗ рд╕рд╛рде рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред 

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдорд╛рд░реНрдХрдЕрдк 


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╕рдВрдпреЛрдЧ рд╕реЗ, рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдбрд┐рдмреНрдмреЗ рдореЗрдВ 50 рд╣рдЬрд╛рд░ рдЫрддреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд╕реЗрдЯ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рджрд┐рдиреЛрдВ рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдереЗ, рдЬрдм рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╕рднреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдЕрднреА рднреА рд╣рд░ рдЬрдЧрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдереЗред

рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореЙрдбрд▓ рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдХрд╛ рд╕рдЯреАрдХ рдЖрдХрд╛рд░ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛, рдЙрдирдХреА рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдкреНрд░рддрд┐ рдЕрд╕рд╣рдорддрд┐ рдХреА рдбрд┐рдЧреНрд░реА рдФрд░ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рдирдореЗрдВ рдореЙрдбрд▓ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдереЗ рдЬрдм 200 рдЯреБрдХрдбрд╝реЗ рдкрд░реНрдпрд╛рдкреНрдд рдереЗ, рдФрд░ рдХрднреА-рдХрднреА 50 рд╣рдЬрд╛рд░ рдЪрд┐рд╣реНрдирд┐рдд рдирдореВрдиреЗ рднреА рдЧрд╛рдпрдм рдереЗред рдЪрд┐рд╣реНрдирд┐рдд-рдЕрдк рдЫрд╡рд┐рдпреЛрдВ рдХреА рдХрдореА рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдЖрдорддреМрд░ рдкрд░ рд╡реГрджреНрдзрд┐ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдореЛрдбрд╝, рджрд░реНрдкрдг рдкреНрд░рддрд┐рдмрд┐рдВрдм, рд░рдВрдЧ рдЧреНрд░реЗрдбрд┐рдВрдЧ, рдЖрджрд┐ред

рдЕрдм рдХрдИ рд╕реЗрд╡рд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ - рджреЛрдиреЛрдВ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ / рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде, рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕рдорд╛рдзрд╛рди рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд╣рд░реА рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдХрд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Yandex.Tolokред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдордиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡реАрдЬреАрдЬреА рдЗрдореЗрдЬ рдПрдиреЛрдЯреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдХреЛрдХреЛ-рдПрдиреЛрдЯреЗрдЯрд░ рдпрд╛ рд▓реЗрдмрд▓-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рдСрдбрд┐рдпреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рд╡рд┐рднрд┐рдиреНрди рдПрдиреЛрдЯреЗрдЯрд░реНрд╕ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╡реАрдЬреАрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред

рдЖрдпрддрд╛рдХрд╛рд░ рдЖрд╡рдВрдЯрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЧрд┐рд░реЗ рдЫрдд рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕рд╣реА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╢рд░реНрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

  • / . :


  • , , :


рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрд▓рдЧ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдВрдХрди рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрд▓ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рд╣реА рдХреЛрдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред рд▓реЛрдЧ рдЦреБрдж рдПрдВрдЯреНрд░реЛрдкреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рднреА рдорд╛рдирд╡ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдШрдиреЗ рднрд╡рдиреЛрдВ рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдЖрдк рдКрдкрд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрд╛рдбрд╝, рдкреИрджрд▓ рдорд╛рд░реНрдЧ, рд░реЛрдкрдг, рдЧреНрд░реАрдирд╣рд╛рдЙрд╕, рдЖрд░реНрдмрд░ рдЫрдд рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдпрд╛ рд▓рдВрдмрд╡рдд рд╣реЛрдВрдЧреЗред рдпрд╣ рдХреЗрд╡рд▓ рд╕рднреА рд╕реНрдкрд╖реНрдЯ рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдХреЗ рдЭреБрдХрд╛рд╡ рдХреЗ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдг рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, OpenCV рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░реАрди HoughLinesP рдЯреВрд▓ рд╣реИред 

...

lines = cv2.HoughLinesP(edges, 1, np.pi/180, 50, minLineLength=minLineLength, maxLineGap=5)
if lines is not None:
    length = image.shape[0]
    angles = []
    for x1, y1, x2, y2 in lines[0]:
        angle = math.degrees(math.atan2(y2 тАФ y1, x2 - x1))
        angles.append(angle)
    parts_angles.append(angles)
    median_angle = np.median(angles)
...

#     

for x in range(0, image.shape[0]-1, image.shape[0] // count_crops):
    for y in range(0, image.shape[1]-1, image.shape[1] // count_crops):
        get_line(image[x:x+image.shape[0]//count_crops, y:y+image.shape[1]//count_crops, :])
...

#      

np.median([a if a>0 else 90+a for a in np.array(parts_angles).flatten()])

рдХреЛрдг рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рддрд┐рд░реВрдк рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ рдШреБрдорд╛рддреЗ рд╣реИрдВ:


h, w = image.shape[:2]
image_center = (w/2, h/2)

if size is None:
    radians = math.radians(angle)
    sin = math.sin(radians)
    cos = math.cos(radians)
    size = (int((h * abs(sin)) + (w * abs(cos))), int((h * abs(cos)) + (w * abs(sin))))
    rotation_matrix = cv2.getRotationMatrix2D(image_center, angle, 1)
    rotation_matrix[0, 2] += ((size[0] / 2) тАФ image_center[0])
    rotation_matrix[1, 2] += ((size[1] / 2) тАФ image_center[1])
else:
    rotation_matrix = cv2.getRotationMatrix2D(image_center, angle, 1)

cv2.warpAffine(image, rotation_matrix, size)

рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



рдЯрд╛рдЗрд▓реЛрдВ рдХреЛ рдореЛрдбрд╝рдиреЗ рдФрд░ рдЖрдпрддреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓рдЧрднрдЧ рд╕рднреА рдЫрддреЗрдВ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХрдИ рдХрдорд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рд╣рд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • рдмрд╣реБрдд рд╕реЗ рдУрд╡рд░рдлреНрд▓рд╛рдЗрдЯреНрд╕ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреИрд░-рдЖрдпрддрд╛рдХрд╛рд░ рдЫрдд рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореИрдиреБрдЕрд▓ рдХрд╛рдо рд╣реИ,
  • рдХрднреА-рдХрднреА рдПрдХ рд╣реА рдЯрд╛рдЗрд▓ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЭреБрдХрд╛рд╡ рдХреЗ рд╕рд╛рде рдШрд░ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
  • рдХрднреА-рдХрднреА рдЯрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрдИ рдЭреВрдареА рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рдЕрдВрддрддрдГ рдЧрд▓рдд рдореЛрдбрд╝ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ:



рдорд╛рд╕реНрдХ-рдЖрд░рд╕реАрдПрдирдПрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди


рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдорд╛рд╕реНрдХ рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЫрддреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд╕реНрдХ рдХреЗ рдЖрдХреГрддрд┐ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╡реЗрдХреНрдЯрд░ рдмрд╣реБрднреБрдЬ рдмрдирд╛рдирд╛ред  

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

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

рдорд╛рд╕реНрдХ рдЖрд░-рд╕реАрдПрдирдПрди рд╡рд╕реНрддреБ рдХреА рд╕рдЯреАрдХ рд░реВрдкрд░реЗрдЦрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓-рдмрд╛рдп-рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рд╕реНрдХ рдУрд╡рд░рд▓реЗ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рд╕реАрдорд╛ рдмреЙрдХреНрд╕ рдФрд░ рдореБрдЦреМрдЯреЗ рдХреЛ рдореЙрдбрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдиреНрдпреВрдирддрдо рднрд╡рди рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):


рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ 4 рдЪрд░рдг рд╣реИрдВ:

  • рд╕рднреА рджреГрдврд╝ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ, рдЫрд╡рд┐ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЖрд╡рдВрдЯрди, рдЬреИрд╕реЗ рдХрд┐ рд░реЗрдЦрд╛рдПрдВ, рдЭреБрдХрддрд╛, рд╡рд┐рдкрд░реАрдд рд╕реАрдорд╛рдПрдВ рдФрд░ рдЕрдиреНрдп;
  • рдХреНрд╖реЗрддреНрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдиреЗрдЯрд╡рд░реНрдХ (RPN) рдЫрд╡рд┐ рдХреЗ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдВрдХрд░ (рдПрдВрдХрд░) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдПрдВрдХрд░ рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд░реНрдЧ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЫрдд) рдХреЗ рд▓рдХреНрд╖рдг рд╣реИрдВ;
  • рд░реБрдЪрд┐ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рд╡рд░реНрдЧреАрдХрд░рдг рдФрд░ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ, рдлреЛрдЯреЛрдЧреНрд░рд╛рдл рдореЗрдВ рдмрдбрд╝реЗ рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИ;
  • рд╕реЗрдЧрдореЗрдВрдЯреЗрд╢рди рдорд╛рд╕реНрдХред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╕реАрдорд╛ рдмреЙрдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рдореБрдЦреМрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдирд┐рдХрд▓рд╛, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реВрдЪрдирд╛ рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред

рдХреЗрд╡рд▓ рдЖрд░рдЬреАрдмреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдиреНрдпрддрд╛ рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдереА (рдореЙрдбрд▓ рдкреВрд░реА рдЗрдорд╛рд░рддреЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛, рдЫрдд рдХреНрд╖реЗрддреНрд░ рдХреА рдЧрдгрдирд╛ рдореЗрдВ 15% рдХреА рдФрд╕рдд рддреНрд░реБрдЯрд┐ рдереА), рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреЛрдЯреЛрдореЗрдЯреНрд░реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдКрдВрдЪрд╛рдИ рдХреЗ рдирдХреНрд╢реЗ ред 


рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рдореЙрдбрд▓реЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдХреНрд╕рд░ рд╕рдВрдШ (IoU) рдореАрдЯреНрд░рд┐рдХ рдкрд░ рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


рдЬрд┐рдУрдореЗрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ IoU рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдбред

from shapely.geometry import Polygon

true_polygon = Polygon([(2, 2), (2, 6), (5, 6), (5, 2)])
predicted_polygon = Polygon([(3, 3), (3, 7), (6, 7), (6, 3)])
print(true_polygon.intersection(predicted_polygon).area / true_polygon.union(predicted_polygon).area)

>>> 0.3333333333333333

рдореЙрдбрд▓ рдХреА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдЯреЗрдиреНрд╕рд░рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореАрдЯреНрд░рд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреЛ рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


Tensorboard рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореАрдЯреНрд░рд┐рдХ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:

  • val_mrcnn_bbox_loss - рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рдПрдХ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рд▓рдЧрд╛рддрд╛ рд╣реИ);
  • val_mrcnn_mask_loss - рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ (рдпрд╛рдиреА рдорд╛рд╕реНрдХ рд▓рдЧрд╛рддрд╛ рд╣реИ)ред

рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рд╕рддреНрдпрд╛рдкрди


рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдПрдХ рдбрд╛рдЯрд╛рд╕реЗрдЯ рдХреЛ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдирдХ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдкреНрд░рд╢рд┐рдХреНрд╖рдг, рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкрд░реАрдХреНрд╖рдгред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрдХ рд╕рддреНрдпрд╛рдкрди рдирдореВрдиреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрд░ рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 

рд╣рдордиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдорд░ рд╢реЙрдЯреНрд╕ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕реЗрдЯ рдкрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд╕рд░реНрджрд┐рдпреЛрдВ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдореЙрдбрд▓ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ред рд╡рд┐рднрд┐рдиреНрди рдореМрд╕рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рдЕрд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдореЙрдбрд▓ рдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдкрд░рддреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдХреЗ, рдФрд░ рд╡рдЬрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рддреЛрдВ рдХреЗ рд╡рдЬрди рдХреЛ рдмрдВрдж рдХрд░рдХреЗ, рд╣рдордиреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЧрд░реНрдорд┐рдпреЛрдВ рдФрд░ рд╕рд░реНрджрд┐рдпреЛрдВ рдХреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд░рдгрдиреАрддрд┐ рдкрд╛рдИред

рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛


рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдореЙрдбрд▓ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдкрд╣рдЪрд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЫрдд рдХреЗ рдмрд╣реБрднреБрдЬ рдХреЗ рд╕рд╛рде рдЬрд╕рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕реАрдзреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред 

рдЙрдмрдВрдЯреВ рд╕рд┐рд╕реНрдЯрдордб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реЗрд╡рд╛ рдХрд╛ рдХреЛрдб рдЦреБрдж рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдЗрдпрд╛рдБ / etc / systemd / system рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдо рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБрдЧреЗред рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

cd /etc/systemd/system

sudo touch my_srv.service




sudo vim my_srv.service

Systemd рдЗрдХрд╛рдИ рдореЗрдВ рддреАрди рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ:

  • [рдпреВрдирд┐рдЯ] - рд╢реБрд░реБрдЖрдд рдХреЗ рдЖрджреЗрд╢ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрд╡рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ);
  • [рд╕реЗрд╡рд╛] - рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ;
  • [рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ] - рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд╕реЗрд╡рд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

[Unit]
Description=my_test_unit

[Service]
WorkingDirectory=/home/user/test_project
User=root
ExecStart=/home/user/test_project/venv/bin/python3 /home/user/test_project/script.py

[Install]
WantedBy=multi-user.target

рдЕрдм рд╕рд┐рд╕реНрдЯрдордб рд╡рд┐рдиреНрдпрд╛рд╕ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдЪрд▓рд╛рдПрдВ:

sudo systemctl daemon-reload
sudo systemctl start my_srv.service

рдпрд╣ рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, systemd рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдореБрдЦреНрдп рдкрд░рд┐рдгрд╛рдо рднреВрдХрд░ рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереАред

рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрд░ рдореЙрдбрд▓ рдХреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ: рдкрд╛рдП рдЧрдП рдЫрддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ - 91%, рдЫрдд рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдмрд╣реБрднреБрдЬ рдХреА рд╕рдЯреАрдХрддрд╛ - 94%ред

рдЧрд░реНрдорд┐рдпреЛрдВ рдФрд░ рд╕рд░реНрджрд┐рдпреЛрдВ рдХреА рдЙрдбрд╝рд╛рдиреЛрдВ рдореЗрдВ рдореЙрдбрд▓ рдХреА рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдмрд░реНрдлрдмрд╛рд░реА рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдШрдЯ рд╕рдХрддреА рд╣реИред

рдЕрдм рд╕рд┐рдбрдиреА рдУрдкреЗрд░рд╛ рд╣рд╛рдЙрд╕ рднреА рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреА рдирдЬрд░реЛрдВ рд╕реЗ рджреВрд░ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред 


рд╣рдо рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЕрдкрдиреЗ рдбреЗрдореЛрд╕реНрдЯреИрдВрдб рдкрд░ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рддрд╕реНрд╡реАрд░реЛрдВ рдкрд░ рд╕реЗрд╡рд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ ai@norbit.ru рдкрд░ рдЖрд╡реЗрджрди рднреЗрдЬреЗрдВред

All Articles