
Введение
В этом руководстве мы рассматриваем инновационное применение открытой модели глубокого обучения 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.