рд╕реМрдВрджрд░реНрдп рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлреЛрди рдХреИрд╕реЗ рд╕рд┐рдЦрд╛рдПрдВ

рдЫрд╡рд┐

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

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

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

рднрд╛рдЧ 0. рдкрд╛рдЗрдкрд▓рд╛рдЗрди


рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдЧрд▓реЗ рдЪрд░рдг рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдореИрдВрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛рдпрд╛:

рдЫрд╡рд┐

рдиреАрд▓рд╛ - рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ред рдкреАрд▓рд╛ - рдЖрд╡реЗрджрди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдгред

рднрд╛рдЧ 1. рдЕрдЬрдЧрд░


рдЪреВрдБрдХрд┐ рд╕реМрдВрджрд░реНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрдХ рдирд╛рдЬрд╝реБрдХ рд╡рд┐рд╖рдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдлрд╝реЛрдЯреЛ рд╣реЛрддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдСрдирд▓рд╛рдЗрди рдбреЗрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдЬреИрд╕реЗ рдЯрд┐рдВрдбрд░ рдореЗрдВ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╕рдореВрд╣ рд╣реИ)ред рдореБрдЭреЗ рдЪреАрди рдХреЗ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ 5500 рддрд╕реНрд╡реАрд░реЗрдВ рдереАрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди 7 рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЪреАрдиреА рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХрд┐рдпрд╛ред 5,500 рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рд╕реЗ, 2,000 рдПрд╢рд┐рдпрд╛рдИ рдкреБрд░реБрд╖ (рдПрдПрдо), 2000 рдПрд╢рд┐рдпрд╛рдИ рдорд╣рд┐рд▓рд╛ (рдПрдПрдл), рдФрд░ 750 рдпреВрд░реЛрдкрд┐рдпреЛрдЗрдб рдкреБрд░реБрд╖ (рд╕реАрдПрдо) рдФрд░ рдорд╣рд┐рд▓рд╛ (рд╕реАрдПрдл) рд╣реИрдВред

рдЫрд╡рд┐

рдЖрдЗрдП рдкрд╛рдпрдерди рдкрд╛рдВрдбрд╛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рд╡рд┐рднрд┐рдиреНрди рд▓рд┐рдВрдЧ рдФрд░ рджреМрдбрд╝ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд┐рддрд░рдг:

import pandas as pd import matplotlib.pyplot as plt ratingDS=pd.read_excel('../input/faces-scut/scut-fbp5500_v2/SCUT-FBP5500_v2/All_Ratings.xlsx') Answer=ratingDS.groupby('Filename').mean()['Rating'] ratingDS['race']=ratingDS['Filename'].apply(lambda x:x[:2]) fig, ax = plt.subplots(2, 2, sharex='col') for i, race in enumerate(['CF','CM','AF','AM']): sbp=ax[i%2,i//2] ratingDS[ratingDS['race']==race].groupby('Filename')['Rating'].mean().hist(alpha=0.5, bins=20,label=race,grid=False,rwidth=0.9,ax=sbp) sbp.set_title(race) 

рдЫрд╡рд┐

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

рдЖрдЗрдП рдЕрдиреБрдорд╛рдиреЛрдВ рдореЗрдВ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рджреЗрдЦреЗрдВ:

 ratingDS.groupby('Filename')['Rating'].std().mean() 

рдпрд╣ 0.64 рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЖрдХрд▓рди рдореЗрдВ рдЕрдВрддрд░ 5 рдореЗрдВ рд╕реЗ 1 рдЕрдВрдХ рд╕реЗ рдХрдо рд╣реИ, рдЬреЛ рд╕реМрдВрджрд░реНрдп рдХреЗ рдЖрдХрд▓рди рдореЗрдВ рдПрдХрдорддрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдпрдереЛрдЪрд┐рдд рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ "рд╕реБрдВрджрд░рддрд╛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреА рдирдЬрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИред" рдФрд╕рдд рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рдореМрд▓рд┐рдХ рдЕрд╕рдВрднрд╡рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреБрдорд╛рди рдХреЗ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреЗ рдЫреЛрдЯреЗ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреБрдЫ рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛рдУрдВ рдХреА рд░рд╛рдп "рд╕рд╛рдзрд╛рд░рдг" рдПрдХ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЖрдЗрдП рдЕрдиреБрдорд╛рди рдФрд░ рдорд╛рдзреНрдпрд┐рдХрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рд╡рд┐рддрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ:

 R2=ratingDS.join(ratingDS.groupby('Filename')['Rating'].median(), on='Filename', how='inner',rsuffix =' median') R2['ratingdiff']=(R2['Rating median']-R2['Rating']).astype(int) print(set(R2['ratingdiff'])) R2['ratingdiff'].hist(label='difference of raings',bins=[-3.5,-2.5,-1.5,-0.5,0.5,1.5,2.5,3.5,4.5],grid=False,rwidth=0.5) 

рдЫрд╡рд┐

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреИрдЯрд░реНрди рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕реНрдХреЛрд░ рдФрд╕рдд рд╕реЗ 1 рдЕрдВрдХ рдЕрдзрд┐рдХ рд╣реИ

 len(R2[R2['ratingdiff'].abs()>1])/len(R2) 

.029433333333333332
3% рд╕реЗ рдХрдо рд╣реИред рдпрд╣реА рд╣реИ, рд╕реМрдВрджрд░реНрдп рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдбрд╝рддрд╛рд▓реА рдПрдХрдордд рдлрд┐рд░ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИред
рдЖрд╡рд╢реНрдпрдХ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ

 Answer=ratingDS.groupby('Filename').mean()['Rating'] 

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

1. рдЫрд╡рд┐ рдФрд░ рдЙрд╕рдХреЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкрд░ рдПрдХ рдЪреЗрд╣рд░рд╛ рдкрд╣рдЪрд╛рди рд╣реИред

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

3. рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрдЪрд░ рд╡реЗрдХреНрдЯрд░ рдХреА рддреБрд▓рдирд╛ред

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

 model=LResNet100E_IR() 

Mtcnn рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

 detector = MtcnnDetector(model_folder=mtcnn_path, ctx=ctx, num_worker=1, accurate_landmark = True, threshold=det_threshold) 

рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ, рдХреНрд░реЙрдк рдХрд░реЗрдВ рдФрд░ рдЪрд┐рддреНрд░ рдмрдирд╛рдПрдВ:

 imgpath='../input/faces-scut/scut-fbp5500_v2/SCUT-FBP5500_v2/Images/' #    facevecs=[] for name in tqdm.tqdm(Answer.index): #   img1 = cv2.imread(imgpath+name) # ,     pre1 = np.moveaxis(get_input(detector,img1),0,-1) #  vec = model.predict(np.stack([pre1])) #   facevecs.append(vec) 

рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рддреЛрдбрд╝рдХрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ (рдЙрдирдореЗрдВ рд╕реЗ 90%, рд╣рдо рдЙрди рдкрд░ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ) рдФрд░ рд╕рддреНрдпрд╛рдкрди (рд╣рдо рдЙрди рдкрд░ рдореЙрдбрд▓ рдХреЗ рдХрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ) рд╡реИрдХреНрдЯрд░ред рд╣рдо рдбреЗрдЯрд╛ рдХреЛ 0-1 рдХреА рд╕реАрдорд╛ рддрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рддреЗ рд╣реИрдВред

 X=np.stack(facevecs)[:,0,:] Y=(Answer[:])/5 Indicies=np.arange(len(Answer)) X,Y,Indicies=sklearn.utils.shuffle(X,Y,Indicies) Xtrain=X[:int(len(facevecs)*0.9)] Ytrain=Y[:int(len(facevecs)*0.9)] Indtrain=Indicies[:int(len(facevecs)*0.9)] Xval=X[int(len(facevecs)*0.9):] Yval=Y[int(len(facevecs)*0.9):] Indval=Indicies[int(len(facevecs)*0.9):] 

рдЕрдм рдЪрд▓реЛ рдореЙрдбрд▓ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╕реБрдВрджрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрдиред

 def Createheadmodel(): inp=keras.layers.Input((512,)) x=keras.layers.Dense(32,activation='elu')(inp) x=keras.layers.Dropout(0.1)(x) out=keras.layers.Dense(1,activation='hard_sigmoid',use_bias=False,kernel_initializer=keras.initializers.Ones())(x) model=keras.models.Model(input=inp,output=out) model.layers[-1].trainable=False model.compile(optimizer=keras.optimizers.Adam(lr=0.0001), loss='mse') return model modelhead=Createheadmodel() 

рдпрд╣ рдореЙрдбрд▓ 32-рдиреНрдпреВрд░реЙрдиреНрд╕ рдФрд░ 512 рдЗрдирдкреБрдЯ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓-рдкрд░рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ - рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд╕реЗ рдПрдХ, рдЬреЛ, рдлрд┐рд░ рднреА, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реИ:

 hist=modelhead.fit(Xtrain,Ytrain, epochs=4000, batch_size=5000, validation_data=(Xval,Yval) ) 

4950/4950 [===============================] - 0s 3us / рдЪрд░рдг - рд╣рд╛рдирд┐: 0.0069 - val_loss: 0.0071
рдЖрдЗрдП рд╕реАрдЦрдиреЗ рдХреЗ рдШрдЯрддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

 plt.plot(hist.history['loss'][100:], label='loss') plt.plot(hist.history['val_loss'][100:],label='validation_loss') plt.legend(bbox_to_anchor=(0.95, 0.95), loc='upper right', borderaxespad=0.) 

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рд╛рдирд┐ (рдорддрд▓рдм рд╡рд░реНрдЧ рд╡рд┐рдЪрд▓рди) рд╕рддреНрдпрд╛рдкрди рдбреЗрдЯрд╛ рдкрд░ 0.0071 рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди = 0.084 рдпрд╛ 0.42 рдЕрдВрдХ рдкрд╛рдВрдЪ-рдмрд┐рдВрджреБ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реИ, рдЬреЛ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЕрдиреБрдорд╛рдиреЛрдВ рдореЗрдВ рдкреНрд░рд╕рд╛рд░ (0.6 рдЕрдВрдХ) рд╕реЗ рдХрдо рд╣реИред рд╣рдорд╛рд░рд╛ рдореЙрдбрд▓ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

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

 Answer2=Answer.to_frame()[:5500] Answer2['ans']=0 Answer2['race']=Answer2.index Answer2['race']=Answer2['race'].apply(lambda x: x[:2]) Answer2['ans']=modelhead.predict(np.stack(facevecs)[:,0,:])*5 xy=np.array(Answer2.iloc[Indval][['ans','Rating']]) plt.scatter(xy[:,1],xy[:,0]) 

рдЫрд╡рд┐

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

 import matplotlib.image as mpimg f, axarr = plt.subplots(4,5,figsize=(10, 10)) for i, race in enumerate(['AF','CF', "AM", 'CM']): for rating in range(1,6): #axarr[i,rating-1].axis('off') axarr[i,rating-1].tick_params(# changes apply to the x-axis which='both', # both major and minor ticks are affected bottom=False, # ticks along the bottom edge are off top=False, # ticks along the top edge are off right=False, left=False, labelbottom=False, labelleft=False ) picname=(Answer2[Answer2['race']==race]['ans']-rating).abs().argmin() axarr[i,rating-1].set_xlabel(Answer2.loc[picname]['ans']) axarr[i,rating-1].imshow(mpimg.imread(imgpath+picname)) 

рдЫрд╡рд┐

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реБрдВрджрд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

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

 import tensorflow as tf finmodel=Model(input=model.input, output=modelhead(model.output)) finmodel.save('finmodel.h5') converter = tf.lite.TFLiteConverter.from_keras_model_file('finmodel.h5') converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE] tflite_quant_model = converter.convert() open ("modelquant.tflite" , "wb").write(tflite_quant_model) from IPython.display import FileLink FileLink(r'modelquant.tflite') 

рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдЖрдХрд╛рд░ рдореЗрдВ 112 * 112 * 3 рдХреЗ рдЪреЗрд╣рд░реЗ рдХреА рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдпрд╣ 0 рд╕реЗ 1 рддрдХ рдПрдХ рд╣реА рдирдВрдмрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЪреЗрд╣рд░реЗ рдХреА рд╕реБрдВрджрд░рддрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд░реЗрдЯрд┐рдВрдЧ 0 рд╕реЗ 5 рддрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 1 рд╕реЗ 5 рддрдХ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ)ред

рднрд╛рдЧ 2. рдЬрд╛рд╡рд╛


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

рдЫрд╡рд┐

рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

1. рдлрд╝рд╛рдЗрд▓ рдореЙрдбрд▓ рд╕реЗ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпред рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрд╕реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╛рдЗрд▓

 import org.tensorflow.lite.Interpreter; Interpreter interpreter; try { interpreter=new Interpreter(loadModelFile(MainActivity.this)); Log.e("TIME", "Interpreter_started "); } catch (IOException e) { e.printStackTrace(); Log.e("TIME", "Interpreter NOT started "); } private MappedByteBuffer loadModelFile(Activity activity) throws IOException { AssetFileDescriptor fileDescriptor = activity.getAssets().openFd("model.tflite"); FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor()); FileChannel fileChannel = inputStream.getChannel(); long startOffset = fileDescriptor.getStartOffset(); long declaredLength = fileDescriptor.getDeclaredLength(); return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); } 

2. рдлреЗрд╕рдЯреИрдХреНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрд╣рд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛, рдЬреЛ рдХрд┐ рдЧреВрдЧрд▓ рд╕реЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

 import com.google.android.gms.vision.face.Face; import com.google.android.gms.vision.face.FaceDetector; private void detectFace(){ //Create a Paint object for drawing with Paint myRectPaint = new Paint(); myRectPaint.setStrokeWidth(5); myRectPaint.setColor(Color.GREEN); myRectPaint.setStyle(Paint.Style.STROKE); Paint fontPaint = new Paint(); fontPaint.setStrokeWidth(3); fontPaint.setTextSize(70); fontPaint.setColor(Color.BLUE); fontPaint.setStyle(Paint.Style.FILL_AND_STROKE); //Create a Canvas object for drawing on tempBitmap = Bitmap.createBitmap(myBitmap.getWidth(), myBitmap.getHeight(), Bitmap.Config.RGB_565); Canvas tempCanvas = new Canvas(tempBitmap); tempCanvas.drawBitmap(myBitmap, 0, 0, null); //Detect the Faces FaceDetector faceDetector = new FaceDetector.Builder(getApplicationContext()).build(); Frame frame = new Frame.Builder().setBitmap(myBitmap).build(); SparseArray<Face> faces = faceDetector.detect(frame); Face face; float[][] labelProbArray = new float[1][1]; imgData.order(ByteOrder.nativeOrder()); //Draw Rectangles on the Faces if (faces.size()>0){ for (int i = 0; i < faces.size(); i++) { face = faces.valueAt(i); isFaceFound=true; float x1 = Math.max(face.getPosition().x,0); float y1 = Math.max(face.getPosition().y,0); float x2 = Math.min(x1 + face.getWidth(),frame.getBitmap().getWidth()); float y2 = Math.min(y1 + face.getHeight(),frame.getBitmap().getHeight()); Bitmap tempbitmap2 = Bitmap.createBitmap(tempBitmap, (int)x1, (int)y1, (int) (x2-x1), (int) (y2-y1)); tempbitmap2 = Bitmap.createScaledBitmap(tempbitmap2, 112, 112, true); convertBitmapToByteBuffer(tempbitmap2); interpreter.run(imgData, labelProbArray); String textToShow = String.format("%.1f", (Answer[0][0]*5-1)/4 * 10); textToShow = textToShow + "/10"; int width= tempCanvas.getWidth(); //int height=tempCanvas.getHeight(); int fontsize=Math.max(width/20,imgView.getWidth()/20); fontPaint.setTextSize(fontsize); tempCanvas.drawText(textToShow, x1, y1-10, fontPaint); tempCanvas.drawRoundRect(new RectF(x1, y1, x2, y2), 2, 2, myRectPaint) } imgView.setImageDrawable(new BitmapDrawable(getResources(),tempBitmap)); } } 

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдлреЛрди рдкрд░ рдЧреНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк GooglePlay рдмрд╛рдЬрд╛рд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi485858/


All Articles