レモンと火星のイチゴのフェイスコントロール:DSコンペティションに参加した後、Rosselkhozbankでインターンシップを取得した方法

ハッカソンやデータサイエンス大会のことを聞いたことがない人はあまりいないと思います。半年前に聞いたことがあります。私が見たすべてのものに参加して(そして何かを勝ち取ってさえ)、私はロシア農業銀行によって組織されたAgroCode2020を通過することができませんでした。私は何とかいくつかの方向で最高の参加者のトップに入ることができました、そして一方向で私は賞をもらった。これらの成果のおかげで、私はロシア農業銀行の金融技術開発センターのデータサイエンススペシャリストになりました。そして、私がそれをどのようにしたか-以下を読んでください。





国の主な農業コーディング

まず、イベント自体について少しお話します。AgroCode 2020は、農業の新技術に無関心ではない多くの人々を集めました。それはいくつかの活動で構成されていました:





  1. 2つのタスクを伴うAgroData Science Cupデータ分析コンペティション:









    • .





  2. Agro Hack 6 :

























    • .





      , , . 10 .





  3. Agro Idea, .





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





. 17 .





?

: , ID , , ( ) 365 .





植生指数問題のデータセット

F1- sklearn ( average="weighted").





, . : , . .





? ?

, , NDVI —





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





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





ndviがカウントされたフィールドの画像
ndvi

?

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





  • -, , - ( - ). , .





  • -, . , , . .





. , , . - , , . , .





… , , . , . .





ID, . . - . . : 2 4 .





?

トレーニングデータにおける作物の分布

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





テストデータで予測される作物の分布

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





最初のタスクの最後のリーダーボード

: . . , , , .





( ) . , .





どのレモンを選びますか?
?

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





2番目のタスクの最終リーダーボード

. “ ” . , . .





私たちのプレゼンテーションからの写真

:





  1. , , .





  2. – .





  3. ( , , , ..).





5 , , , .





3 . .





センサー読み取り値を含むデータセット
歩留まり値のあるデータセット

: -.





, , , .





, :





  • , 19 30 , 23 25 . .





  • . , .





  • - . , .





  • 7.





, . . , . :





温室内の温度レジーム

: - , - , - ( ).





-? . , , . , , — . :





?

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





, ? - , ! , .





!





, , , , , , .








All Articles