Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Частина 2

Мангрові ліси є невід'ємною частиною здорової екосистеми, а діяльність людини є однією з основних причин їх поступового зникнення з берегових ліній по всьому світу. Використання моделі машинного навчання (ML) для визначення мангрових заростей на супутниковому знімку дає дослідникам ефективний спосіб відстежувати розміри лісів з часом. в Частина 1 з цієї серії ми показали, як автоматизовано збирати супутникові дані та аналізувати їх Студія Amazon SageMaker з інтерактивною візуалізацією. У цій публікації ми покажемо, як користуватися Автопілот Amazon SageMaker автоматизувати процес створення спеціального класифікатора мангрових дерев.

Навчайте модель за допомогою автопілота

Автопілот забезпечує збалансований спосіб побудови кількох моделей та вибору найкращої. Створюючи кілька комбінацій різних методів попередньої обробки даних і моделей машинного навчання з мінімальними зусиллями, Autopilot забезпечує повний контроль над цими етапами компонентів досліднику даних, якщо це потрібно.

Ви можете використовувати автопілот за допомогою одного з пакетів SDK AWS (докладні відомості доступні в Довідковий посібник API для автопілота) або через Studio. Ми використовуємо автопілот у нашому рішенні Studio, дотримуючись кроків, описаних у цьому розділі:

  1. На сторінці запуску Studio виберіть знак плюс Новий експеримент автопілота.
    Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  2. для Підключіть свої данівиберіть Знайдіть відро S3, і введіть назву сегмента, у якому ви зберігали набори даних для навчання та тестування.
  3. для Ім'я файлу набору даних, введіть назву створеного вами файлу даних тренування Підготуйте дані для навчання розділ в Частина 1.
  4. для Розташування вихідних даних (відро S3), введіть ту саму назву сегмента, яку ви використовували на кроці 2.
  5. для Ім'я каталогу набору даних, введіть ім’я папки під сегментом, у якому потрібно зберігати артефакти Autopilot.
  6. для Ваш вхід S3 є файлом маніфесту?виберіть від.
  7. для Метавиберіть етикетка.
  8. для Автоматичне розгортаннявиберіть від.
    Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  9. Відповідно до додаткові настройки, Для Тип проблеми машинного навчаннявиберіть Бінарна класифікація.
  10. для Об'єктивна метрикавиберіть AUC.
  11. для Виберіть спосіб проведення експериментувиберіть Ні, запустіть пілот, щоб створити блокнот із визначеннями кандидатів.
  12. Вибирати Створити експеримент.
    Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
    Додаткову інформацію про створення експерименту див Створіть експеримент Amazon SageMaker Autopilot.Виконання цього кроку може зайняти близько 15 хвилин.
  13. Після завершення виберіть Відкрити блокнот генерації кандидатів, що відкриває новий блокнот у режимі лише для читання.
    Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  14. Вибирати Імпорт блокнота щоб зробити блокнот доступним для редагування.
    Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  15. Для зображення виберіть наука даних.
  16. для Ядровиберіть Python 3.
  17. Вибирати Select.
    Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Цей автоматично згенерований блокнот має детальні пояснення та забезпечує повний контроль над фактичним завданням створення моделі. Індивідуальна версія ноутбук, де з 2013 року класифікатор навчається за допомогою супутникових діапазонів Landsat, доступний у сховищі кодів у розділі notebooks/mangrove-2013.ipynb.

Структура побудови моделі складається з двох частин: перетворення ознак як частина етапу обробки даних і оптимізація гіперпараметрів (HPO) як частина етапу вибору моделі. Усі необхідні артефакти для виконання цих завдань були створені під час експерименту Автопілот і збережені в Служба простого зберігання Amazon (Amazon S3). Перша клітинка ноутбука завантажує ці артефакти з Amazon S3 до локальної мережі Amazon SageMaker файлову систему для перевірки та будь-яких необхідних змін. Є дві папки: generated_module та sagemaker_automl, де зберігаються всі модулі та скрипти Python, необхідні для запуску ноутбука. Різні етапи трансформації функцій, такі як імпутація, масштабування та PCA, зберігаються як generated_modules/candidate_data_processors/dpp*.py.

Автопілот створює три різні моделі на основі алгоритмів XGBoost, лінійного навчання та багатошарового персептрона (MLP). Конвеєр-кандидат складається з одного з варіантів перетворення ознак, відомих як data_transformer, і алгоритм. Конвеєр - це словник Python і може бути визначений таким чином:

candidate1 = { "data_transformer": { "name": "dpp5", "training_resource_config": { "instance_type": "ml.m5.4xlarge", "instance_count": 1, "volume_size_in_gb": 50 }, "transform_resource_config": { "instance_type": "ml.m5.4xlarge", "instance_count": 1, }, "transforms_label": True, "transformed_data_format": "application/x-recordio-protobuf", "sparse_encoding": True }, "algorithm": { "name": "xgboost", "training_resource_config": { "instance_type": "ml.m5.4xlarge", "instance_count": 1, }, }
}

У цьому прикладі конвеєр перетворює навчальні дані відповідно до сценарію generated_modules/candidate_data_processors/dpp5.py і створює модель XGBoost. Саме тут автопілот надає повний контроль спеціалісту з даних, який може вибрати автоматично згенеровану трансформацію функції та кроки вибору моделі або створити власну комбінацію.

Тепер ви можете додати конвеєр до пулу, щоб автопілот запустив експеримент таким чином:

from sagemaker_automl import AutoMLInteractiveRunner, AutoMLLocalCandidate automl_interactive_runner = AutoMLInteractiveRunner(AUTOML_LOCAL_RUN_CONFIG)
automl_interactive_runner.select_candidate(candidate1)

Це важливий крок, коли ви можете вирішити залишити лише підмножину кандидатів, запропонованих Autopilot, на основі знань у предметі, щоб скоротити загальний час виконання. Наразі зберігайте всі пропозиції автопілота, які ви можете перерахувати таким чином:

automl_interactive_runner.display_candidates()

Ім'я кандидата Алгоритм Функція трансформатора
dpp0-xgboost xgboost dpp0.py
dpp1-xgboost xgboost dpp1.py
dpp2-лінійний навчальний лінійно-учень dpp2.py
dpp3-xgboost xgboost dpp3.py
dpp4-xgboost xgboost dpp4.py
dpp5-xgboost xgboost dpp5.py
dpp6-mlp mlp dpp6.py

Повний експеримент на автопілоті складається з двох частин. Спочатку вам потрібно запустити завдання перетворення даних:

automl_interactive_runner.fit_data_transformers(parallel_jobs=7)

Цей крок має завершитися приблизно за 30 хвилин для всіх кандидатів, якщо ви більше не будете вносити зміни в файл dpp*.py файли.

Наступним кроком є ​​створення найкращого набору моделей шляхом налаштування гіперпараметрів для відповідних алгоритмів. Гіперпараметри зазвичай діляться на дві частини: статичні та настроювані. Статичні гіперпараметри залишаються незмінними протягом експерименту для всіх кандидатів, які використовують той самий алгоритм. Ці гіперпараметри передаються в експеримент як словник. Якщо ви вирішите вибрати найкращу модель XGBoost, максимізуючи AUC з трьох раундів п’ятикратної схеми перехресної перевірки, словник буде виглядати як такий код:

{ 'objective': 'binary:logistic', 'eval_metric': 'auc', '_kfold': 5, '_num_cv_round': 3,
} 

Для настроюваних гіперпараметрів вам потрібно передати інший словник із діапазонами та типом масштабування:

{ 'num_round': IntegerParameter(64, 1024, scaling_type='Logarithmic'), 'max_depth': IntegerParameter(2, 8, scaling_type='Logarithmic'), 'eta': ContinuousParameter(1e-3, 1.0, scaling_type='Logarithmic'),
... }

Повний набір гіперпараметрів доступний у mangrove-2013.ipynb ноутбук.

Щоб створити експеримент, у якому всі сім кандидатів можуть бути перевірені паралельно, створіть мультиалгоритмний тюнер HPO:

multi_algo_tuning_parameters = automl_interactive_runner.prepare_multi_algo_parameters( objective_metrics=ALGORITHM_OBJECTIVE_METRICS, static_hyperparameters=STATIC_HYPERPARAMETERS, hyperparameters_search_ranges=ALGORITHM_TUNABLE_HYPERPARAMETER_RANGES)

Об’єктивні показники визначаються незалежно для кожного алгоритму:

ALGORITHM_OBJECTIVE_METRICS = { 'xgboost': 'validation:auc', 'linear-learner': 'validation:roc_auc_score', 'mlp': 'validation:roc_auc',
}

Випробовувати всі можливі значення гіперпараметрів для всіх експериментів марнотратно; ви можете застосувати байєсівську стратегію для створення тюнера HPO:

multi_algo_tuning_inputs = automl_interactive_runner.prepare_multi_algo_inputs()
ase_tuning_job_name = "{}-tuning".format(AUTOML_LOCAL_RUN_CONFIG.local_automl_job_name) tuner = HyperparameterTuner.create( base_tuning_job_name=base_tuning_job_name, strategy='Bayesian', objective_type='Maximize', max_parallel_jobs=10, max_jobs=50, **multi_algo_tuning_parameters,
)

У налаштуваннях за замовчуванням автопілот вибирає 250 завдань у тюнері, щоб вибрати найкращу модель. Для цього випадку достатньо встановити max_jobs=50 щоб заощадити час і ресурси, без значних покарань з точки зору вибору найкращого набору гіперпараметрів. Нарешті, подайте роботу HPO так:

tuner.fit(inputs=multi_algo_tuning_inputs, include_cls_metadata=None)

Процес займає близько 80 хвилин на ml.m5.4xlarge екземплярах. Ви можете стежити за прогресом на консолі SageMaker, вибравши Роботи з налаштування гіперпараметрів при Навчання у навігаційній панелі.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ви можете візуалізувати безліч корисної інформації, включаючи результати роботи кожного кандидата, вибравши назву роботи, яка виконується.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Нарешті, порівняйте продуктивність моделі найкращих кандидатів таким чином:

from sagemaker.analytics import HyperparameterTuningJobAnalytics SAGEMAKER_SESSION = AUTOML_LOCAL_RUN_CONFIG.sagemaker_session
SAGEMAKER_ROLE = AUTOML_LOCAL_RUN_CONFIG.role tuner_analytics = HyperparameterTuningJobAnalytics( tuner.latest_tuning_job.name, sagemaker_session=SAGEMAKER_SESSION) df_tuning_job_analytics = tuner_analytics.dataframe() df_tuning_job_analytics.sort_values( by=['FinalObjectiveValue'], inplace=True, ascending=False if tuner.objective_type == "Maximize" else True) # select the columns to display and rename
select_columns = ["TrainingJobDefinitionName", "FinalObjectiveValue", "TrainingElapsedTimeSeconds"]
rename_columns = { "TrainingJobDefinitionName": "candidate", "FinalObjectiveValue": "AUC", "TrainingElapsedTimeSeconds": "run_time" } # Show top 5 model performances
df_tuning_job_analytics.rename(columns=rename_columns)[rename_columns.values()].set_index("candidate").head(5)

кандидат AUC час виконання (с)
dpp6-mlp 0.96008 2711.0
dpp4-xgboost 0.95236 385.0
dpp3-xgboost 0.95095 202.0
dpp4-xgboost 0.95069 458.0
dpp3-xgboost 0.95015 361.0

Найефективніша модель, заснована на MLP, хоча й трохи краща, ніж моделі XGBoost з різними кроками обробки даних, також займає набагато більше часу на навчання. Ви можете знайти важливі деталі про навчання моделі MLP, включаючи комбінацію використовуваних гіперпараметрів, як показано нижче:

df_tuning_job_analytics.loc[df_tuning_job_analytics.TrainingJobName==best_training_job].T.dropna() 

TrainingJobName mangrove-2-notebook–211021-2016-012-500271c8
TrainingJobStatus Зроблено
FinalObjectiveValue 0.96008
Час початку навчання 2021-10-21 20:22:55+00:00
TrainingEndTime 2021-10-21 21:08:06+00:00
TrainingElapsedTimeSeconds 2711
TrainingJobDefinitionName dpp6-mlp
dropout_prob 0.415778
коефіцієнт_розміру_вбудовування 0.849226
шарів 256
швидкість_навчання 0.00013862
mini_batch_size 317
тип_мережі подавати
вага_розпад 1.29323е-12

Створіть конвеєр висновку

Щоб створити висновки на основі нових даних, вам потрібно побудувати конвеєр висновку на SageMaker для розміщення найкращої моделі, яку можна буде викликати пізніше для створення висновку. Модель конвеєра SageMaker потребує трьох контейнерів як своїх компонентів: перетворення даних, алгоритму та зворотного перетворення міток (якщо числові передбачення необхідно зіставити з нечисловими мітками). Для стислості в наступному фрагменті показано лише частину необхідного коду; повний код доступний у mangrove-2013.ipynb ноутбук:

from sagemaker.estimator import Estimator
from sagemaker import PipelineModel
from sagemaker_automl import select_inference_output …
# Final pipeline model model_containers = [best_data_transformer_model, best_algo_model]
if best_candidate.transforms_label: model_containers.append(best_candidate.get_data_transformer_model( transform_mode="inverse-label-transform", role=SAGEMAKER_ROLE, sagemaker_session=SAGEMAKER_SESSION)) # select the output type
model_containers = select_inference_output("BinaryClassification", model_containers, output_keys=['predicted_label'])

Після того, як контейнери моделі побудовані, ви можете побудувати та розгорнути конвеєр наступним чином:

from sagemaker import PipelineModel pipeline_model = PipelineModel( name=f"mangrove-automl-2013", role=SAGEMAKER_ROLE, models=model_containers, vpc_config=AUTOML_LOCAL_RUN_CONFIG.vpc_config) pipeline_model.deploy(initial_instance_count=1, instance_type='ml.m5.2xlarge', endpoint_name=pipeline_model.name, wait=True)

Розгортання кінцевої точки займає близько 10 хвилин.

Отримайте висновки про тестовий набір даних за допомогою кінцевої точки

Після розгортання кінцевої точки ви можете викликати її з корисним навантаженням функцій B1–B7, щоб класифікувати кожен піксель на зображенні як мангровий (1) або інший (0):

import boto3
sm_runtime = boto3.client('runtime.sagemaker') pred_labels = []
with open(local_download, 'r') as f: for i, row in enumerate(f): payload = row.rstrip('n') x = sm_runtime.invoke_endpoint(EndpointName=inf_endpt, ContentType="text/csv", Body=payload) pred_labels.append(int(x['Body'].read().decode().strip()))

Повна інформація про постобробку прогнозів моделі для оцінки та побудови графіка доступна в notebooks/model_performance.ipynb.

Отримайте висновки про тестовий набір даних за допомогою пакетного перетворення

Тепер, коли ви створили найефективнішу модель з автопілотом, ми можемо використовувати модель для висновку. Щоб отримати висновки про великі набори даних, ефективніше використовувати пакетне перетворення. Давайте згенеруємо прогнози для всього набору даних (навчальні та тестові) та додамо результати до об’єктів, щоб ми могли виконати подальший аналіз, щоб, наприклад, перевірити прогнозовані та фактичні показники та розподіл функцій між передбаченими класами.

Спочатку ми створюємо файл маніфесту в Amazon S3, який вказує на розташування даних навчання та тестування з попередніх кроків обробки даних:

import boto3
data_bucket = <Name of the S3 bucket that has the training data>
prefix = "LANDSAT_LC08_C01_T1_SR/Year2013"
manifest = "[{{"prefix": "s3://{}/{}/"}},n"train.csv",n"test.csv"n]".format(data_bucket, prefix)
s3_client = boto3.client('s3')
s3_client.put_object(Body=manifest, Bucket=data_bucket, Key=f"{prefix}/data.manifest")

Тепер ми можемо створити завдання пакетного перетворення. Оскільки наш вхідний поїзд і тестовий набір даних мають label як останній стовпець, нам потрібно скинути його під час висновку. Для цього проходимо InputFilter в DataProcessing аргумент. Код "$[:-2]" вказує на видалення останнього стовпця. Прогнозований результат потім поєднується з вихідними даними для подальшого аналізу.

У наступному коді ми створюємо аргументи для завдання пакетного перетворення, а потім переходимо до create_transform_job функція:

from time import gmtime, strftime batch_job_name = "Batch-Transform-" + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
output_location = "s3://{}/{}/batch_output/{}".format(data_bucket, prefix, batch_job_name)
input_location = "s3://{}/{}/data.manifest".format(data_bucket, prefix) request = { "TransformJobName": batch_job_name, "ModelName": pipeline_model.name, "TransformOutput": { "S3OutputPath": output_location, "Accept": "text/csv", "AssembleWith": "Line", }, "TransformInput": { "DataSource": {"S3DataSource": {"S3DataType": "ManifestFile", "S3Uri": input_location}}, "ContentType": "text/csv", "SplitType": "Line", "CompressionType": "None", }, "TransformResources": {"InstanceType": "ml.m4.xlarge", "InstanceCount": 1}, "DataProcessing": {"InputFilter": "$[:-2]", "JoinSource": "Input"}
} sagemaker = boto3.client("sagemaker")
sagemaker.create_transform_job(**request)
print("Created Transform job with name: ", batch_job_name)

Ви можете стежити за станом завдання на консолі SageMaker.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Візуалізуйте продуктивність моделі

Тепер ви можете візуалізувати продуктивність найкращої моделі на тестовому наборі даних, що складається з регіонів з Індії, М’янми, Куби та В’єтнаму, як матриця плутанини. Модель має високу цінність відкликання пікселів, що представляють мангрові зарості, але лише з точністю близько 75%. Точність пікселів, які не є мангровими або іншими пікселями, становить 99% з 85% відкликанням. Ви можете налаштувати обмеження ймовірності прогнозів моделі, щоб налаштувати відповідні значення залежно від конкретного випадку використання.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Варто відзначити, що результати є значним покращенням порівняно з вбудованою моделлю smileCart.

Візуалізуйте передбачення моделі

Нарешті, корисно спостерігати за продуктивністю моделі в окремих регіонах на карті. На наступному зображенні область мангрових заростей на кордоні Індії та Бангладеш зображена червоним кольором. Точки, відібрані з фрагмента зображення Landsat, що належить до тестового набору даних, накладаються на область, де кожна точка є пікселем, який модель визначає як мангрові ліси. Сині точки правильно класифікуються моделлю, тоді як чорні точки представляють помилки моделі.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

На наступному зображенні показано лише ті точки, які, за прогнозами моделі, не відображатимуть мангрові зарості, з тією ж колірною схемою, що й у попередньому прикладі. Сірий контур – це частина ділянки Landsat, яка не містить мангрових заростей. Як видно із зображення, модель не робить жодної помилки, класифікуючи точки на воді, але стикається з проблемою, коли відрізнити пікселі, що представляють мангрові зарості, від тих, що представляють звичайне листя.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

На наступному зображенні показано продуктивність моделі в мангровому регіоні М’янми.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

На наступному зображенні модель краще справляється з визначенням пікселів мангрових заростей.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Прибирати

Кінцева точка висновку SageMaker продовжує нести витрати, якщо залишити її працювати. Видаліть кінцеву точку таким чином, коли ви закінчите:

sagemaker.delete_endpoint(EndpointName=pipeline_model.name)

Висновок

Ця серія дописів надала наскрізну структуру для науковців з даних для вирішення проблем ГІС. Частина 1 показав процес ETL та зручний спосіб візуальної взаємодії з даними. Частина 2 показала, як використовувати автопілот для автоматизації створення спеціального класифікатора мангрових дерев.

Ви можете використовувати цю структуру, щоб досліджувати нові набори супутникових даних, що містять багатший набір смуг, корисних для класифікації мангрових заростей, і досліджувати інженерію ознак, включаючи знання предметної області.


Про авторів

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Андрій Іванович є майбутнім студентом магістра комп’ютерних наук в Університеті Торонто та нещодавно закінчив програму інженерних наук в Університеті Торонто за спеціальністю «Машинний інтелект» з робототехнікою/мехатронікою. Його цікавлять комп’ютерний зір, глибоке навчання та робототехніка. Він виконав роботу, представлену в цій публікації, під час свого літнього стажування в Amazon.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Девід Донг є дослідником даних у Amazon Web Services.

Визначте мангрові ліси за допомогою функцій супутникового зображення за допомогою Amazon SageMaker Studio та Amazon SageMaker Autopilot – Part 2 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Аркаджоті Місра є дослідником даних у Amazon LastMile Transportation. Він захоплений застосуванням техніки комп’ютерного зору для вирішення проблем, які допомагають Землі. Він любить працювати з неприбутковими організаціями і є одним із засновників ekipi.org.

Часова мітка:

Більше від AWS Машинне навчання