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




















