Control facial para limones y fresas marcianas: cómo obtuve una pasantía en Rosselkhozbank después de participar en el concurso DS

Creo que no quedan muchas personas que no hayan oído hablar de los hackatones y los concursos de ciencia de datos. Escuché de ellos hace seis meses. Participando en todo lo que vi (e incluso ganando algo), no pude pasar por AgroCode 2020, organizado por el Banco Agrícola Ruso. Me las arreglé para llegar a la cima de los mejores participantes en varias direcciones, y en una dirección incluso me llevé un premio. Gracias a estos logros, me convertí en especialista en ciencia de datos en el Centro para el Desarrollo de Tecnologías Financieras del Banco Agrícola Ruso. Y cómo lo hice, lea a continuación.





La principal agrocodificación del país.

Para empezar, diré algunas palabras sobre el evento en sí. AgroCode 2020 reunió a muchas personas que no son indiferentes a las nuevas tecnologías en la agricultura. Consistió en varias actividades:





  1. Competencia de análisis de datos de Agro Data Science Cup con 2 tareas:









    • .





  2. Agro Hack 6 :

























    • .





      , , . 10 .





  3. Agro Idea, .





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





. 17 .





?

: , ID , , ( ) 365 .





Conjunto de datos para el problema del índice de vegetación

F1- sklearn ( average="weighted").





, . : , . .





? ?

, , NDVI —





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





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





Imagen de un campo con ndvi contado
ndvi

?

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





  • -, , - ( - ). , .





  • -, . , , . .





. , , . - , , . , .





… , , . , . .





ID, . . - . . : 2 4 .





?

Distribución de cultivos en datos de formación

, . - 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 . - . , , . , , .





Distribución de cultivos prevista en los datos de prueba

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





La tabla de clasificación final de la primera prueba.

: . . , , , .





( ) . , .





¿Qué limón elegirás?
?

. — 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 , .





Tabla de clasificación final para la segunda tarea

. “ ” . , . .





Imagen de nuestra presentación

:





  1. , , .





  2. – .





  3. ( , , , ..).





5 , , , .





3 . .





Conjunto de datos con lecturas de sensores
Conjunto de datos con valores de rendimiento

: -.





, , , .





, :





  • , 19 30 , 23 25 . .





  • . , .





  • - . , .





  • 7.





, . . , . :





Régimen de temperatura en el invernadero.

: - , - , - ( ).





-? . , , . , , — . :





?

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





, ? - , ! , .





!





, , , , , , .








All Articles