Эффективная оценка бедствий с помощью модели ResNet-50 от IBM: пошаговое руководство

Эффективная оценка бедствий с помощью модели ResNet-50 от IBM: пошаговое руководство



Применение модели ResNet-50 для оценки бедствий

Введение

В этом руководстве мы рассматриваем инновационное применение открытой модели глубокого обучения ResNet-50 от IBM для быстрой классификации спутниковых изображений в целях управления бедствиями. Используя предобученные сверточные нейронные сети (CNN), этот подход позволяет пользователям оперативно анализировать спутниковые изображения и выявлять пострадавшие от бедствий районы, такие как наводнения, лесные пожары или разрушения от землетрясений.

Настройка окружения

Сначала мы устанавливаем необходимые библиотеки для обработки и визуализации изображений на основе PyTorch:

    !pip install torch torchvision matplotlib pillow
    

Импорт библиотек и загрузка модели

Импортируем необходимые библиотеки и загружаем предобученную модель ResNet-50 от IBM для выполнения задач классификации:

    import torch
    import torchvision.models as models
    import torchvision.transforms as transforms
    from PIL import Image
    import requests
    from io import BytesIO
    import matplotlib.pyplot as plt

    model = models.resnet50(pretrained=True)
    model.eval()
    

Предобработка изображений

Определяем стандартный процесс предобработки изображений, включая изменение размера, обрезку, преобразование в тензоры и нормализацию:

    preprocess = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(
            mean=[0.485, 0.456, 0.406],
            std=[0.229, 0.224, 0.225]
        )
    ])
    

Классификация спутниковых изображений

Теперь мы можем извлечь спутниковое изображение по заданному URL, обработать его, классифицировать с помощью модели ResNet-50 и визуализировать результаты:

    def classify_satellite_image(url):
        response = requests.get(url)
        img = Image.open(BytesIO(response.content)).convert('RGB')

        input_tensor = preprocess(img)
        input_batch = input_tensor.unsqueeze(0)

        with torch.no_grad():
            output = model(input_batch)

        labels_url = "https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt"
        labels = requests.get(labels_url).text.split("\n")

        probabilities = torch.nn.functional.softmax(output[0], dim=0)
        top5_prob, top5_catid = torch.topk(probabilities, 5)

        plt.imshow(img)
        plt.axis('off')
        plt.title("Top Prediction: {}".format(labels[top5_catid[0]]))
        plt.show()

        print("Top 5 Predictions:")
        for i in range(top5_prob.size(0)):
            print(labels[top5_catid[i]], top5_prob[i].item())
    

Пример использования

Скачиваем спутниковое изображение, связанное с лесным пожаром, классифицируем его и визуализируем результаты:

    image_url = "https://upload.wikimedia.org/wikipedia/commons/0/05/Burnout_ops_on_Mangum_Fire_McCall_Smokejumpers.jpg"
    classify_satellite_image(image_url)
    

Заключение

Мы успешно использовали открытую модель ResNet-50 от IBM в Google Colab для эффективной классификации спутниковых изображений, поддерживая критически важные задачи оценки и реагирования на бедствия. Этот подход демонстрирует практичность и доступность современных моделей машинного обучения и подчеркивает, как предобученные CNN могут быть креативно применены к реальным задачам.

Дополнительные ресурсы

Не забудьте подписаться на нас в Twitter, присоединиться к нашему Telegram-каналу и группе в LinkedIn. Также ознакомьтесь с практическим примером решения на базе ИИ: продажный бот, предназначенный для автоматизации взаимодействия с клиентами.

Контакты

Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru.


Новости в сфере искусственного интеллекта