Controle facial para limões e morangos marcianos: como consegui um estágio no Rosselkhozbank depois de participar da competição DS

Acho que não há muitas pessoas que não tenham ouvido falar sobre hackathons e competições de ciência de dados. Ouvi falar deles há seis meses. Participando de tudo que vi (e até ganhando alguma coisa), não consegui passar pelo AgroCode 2020, organizado pelo Banco Agrícola Russo. Consegui chegar ao topo dos melhores participantes em várias direções, e em uma direção até ganhei um prêmio. Graças a essas conquistas, tornei-me um especialista em ciência de dados no Centro para o Desenvolvimento de Tecnologias Financeiras do Banco Agrícola Russo. E como eu fiz isso - leia abaixo.





A principal agro-codificação do país

Para começar, direi algumas palavras sobre o evento em si. O AgroCode 2020 reuniu muitas pessoas que não são indiferentes às novas tecnologias na agricultura. Consistia em várias atividades:





  1. Competição de análise de dados da Agro Data Science Cup com 2 tarefas:









    • .





  2. Agro Hack 6 :

























    • .





      , , . 10 .





  3. Agro Idea, .





, , . , , , . . DS- . -10, - 2 !





. 17 .





?

: , ID , , ( ) 365 .





Conjunto de dados para o problema de índice de vegetação

F1- sklearn ( average="weighted").





, . : , . .





? ?

, , NDVI —





NDVI = \ frac {NIR-VERMELHO} {NIR + VERMELHO}





, 4 : RGB . , RED — , NIR — .





Imagem de um campo com ndvi contado
ndvi

?

  • -, 45 , 279 . : - , () , .





  • -, , - ( - ). , .





  • -, . , , . .





. , , . - , , . , .





… , , . , . .





ID, . . - . . : 2 4 .





?

Distribuição de safras em dados de treinamento

, . - KFold StratifiedKFold , . . , . , . -. .





, , CatBoost. , , , :





params = {
  'iterations': 2000, 
  'depth': 6, 
  'early_stopping_rounds': 500, 
  'l2_leaf_reg': 5, 
  'bagging_temperature': 1, 
  'random_seed': 17, 
  'class_names': classes, 
  'auto_class_weights': 'Balanced', 
  'eval_metric': 'TotalF1', 
  'loss_function': 'MultiClassOneVsAll', 
  'task_type': 'GPU', 
  'devices': '0:1', 
  'verbose': 2000 
}
      
      



“Balanced” “MultiClassOneVsAll”. . . , , , random_seed . - . , , . , , .





Distribuição prevista da safra em dados de teste

18 . , , . , 18 2 . , - . — .





A classificação final da primeira tarefa

: . . , , , .





( ) . , .





Qual limão você vai escolher?
?

. — 1056 1056 .jpg. . , , . . : https://www.kaggle.com/maciejadamiak/lemons-quality-controldataset





ROC-AUC. :





def score(y_true, y_preds):
  table = y_true.merge(y_preds, left_on='image_id', right_on='image_id')
  m = keras.metrics.AUC(curve='ROC')
  m.update_state(table.iloc[:, 1:10], table.iloc[:, 10:])
  return m.result().numpy() 
      
      



.





csv-. .py , -. , . , .





20 . , . ? .





, , . , . , , , , .





. , .





aug = ImageDataGenerator(
  rotation_range=40,
  width_shift_range=0.1,
  height_shift_range=0.1,
  brightness_range=[0.5, 1],
  shear_range=0.2,
  channel_shift_range=0.2,
  zoom_range=0.2,
  horizontal_flip=True,
  vertical_flip=True,
  fill_mode="nearest"
) 
      
      



?

, . backbone VGG16, AveragePooling, (Dense) Dropout.





model = VGG16(weights=None, include_top=False, input_shape=[image_size, image_size, 3]) 
x = AveragePooling2D(pool_size=(2, 2))(model.output) 
x = Flatten()(x) 
x = Dense(256, activation='relu')(x) 
x = Dropout(0.5)(x) 
output = Dense(9, activation='sigmoid')(x)
      
      



, , .





KFold -. , , .





9 , .





Tabela de classificação final para a segunda tarefa

. “ ” . , . .





Foto da nossa apresentação

:





  1. , , .





  2. – .





  3. ( , , , ..).





5 , , , .





3 . .





Conjunto de dados com leituras de sensor
Conjunto de dados com valores de rendimento

: -.





, , , .





, :





  • , 19 30 , 23 25 . .





  • . , .





  • - . , .





  • 7.





, . . , . :





Regime de temperatura na estufa

: - , - , - ( ).





-? . , , . , , — . :





?

, , , . , , Agro Hack :) ( , ).





, ? - , ! , .





!





, , , , , , .








All Articles