Поиск месторождений с AI: модели, снижающие риски бурения на 35%

Стоимость разведочной скважины — от $500K до $5M. Из 1000 потенциальных объектов до добычи доходят 1–3. Каждая пустая скважина — миллионы долларов убытка. Мы строим AI-модели, которые снижают число «пустых» скважин, направляя геологоразведку туда, где вероятность нахождения руды максимальна. Наш опы

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Стоимость разведочной скважины — от $500K до $5M. Из 1000 потенциальных объектов до добычи доходят 1–3. Каждая пустая скважина — миллионы долларов убытка. Мы строим AI-модели, которые снижают число «пустых» скважин, направляя геологоразведку туда, где вероятность нахождения руды максимальна. Наш опыт — 7 лет в ML-решениях для горной отрасли, более 15 проектов по поиску месторождений. Система анализирует аэромагнитные, гравиметрические, спутниковые (Sentinel-2, ASTER) данные, геохимию почв и сейсмические профили — до 20+ разнородных слоёв. В результате точность прогноза в 3–5 раз выше традиционных методов, а количество пустых скважин снижается в среднем на 35%. Средняя экономия на проекте — около $1.5M за счёт сокращения бурения и оптимизации затрат.

Анализ геопространственных данных

Предикторы минерализации:

Месторождение — результат пересечения нескольких геологических факторов. ML находит комбинации признаков, предсказывающие рудные тела:

Показать пример кода модели
import numpy as np import pandas as pd import rasterio from sklearn.ensemble import RandomForestClassifier from sklearn.preprocessing import StandardScaler class MineralProspectivityModel: """ Минерально-перспективная модель для поиска оруденения. Входные данные: геофизика, геохимия, дистанционное зондирование, структурная геология. """ def prepare_features(self, geodatasets: dict) -> pd.DataFrame: """ geodatasets: словарь {layer_name: raster_path} Слои: magnetic_anomaly, gravity, dem, radiometry_k, radiometry_th, geochemistry_cu, geochemistry_au, fault_distance, lithology_encoded """ feature_arrays = {} for layer_name, raster_path in geodatasets.items(): with rasterio.open(raster_path) as src: data = src.read(1).astype(float) data[data == src.nodata] = np.nan feature_arrays[layer_name] = data.flatten() features_df = pd.DataFrame(feature_arrays) # Производные признаки: градиенты магнитного поля if 'magnetic_anomaly' in features_df.columns: features_df['mag_gradient'] = np.gradient( features_df['magnetic_anomaly'].values ) # Расстояние до известных разломов (проводящие пути флюидов) # fault_distance уже нормализовано в метрах return features_df.dropna() def train_prospectivity(self, features_df, known_deposits_mask): """ known_deposits_mask: бинарный массив — известные месторождения (позитивы) Обучение на балансированной выборке: positive = известные, negative = геологически бесперспективные """ from imblearn.over_sampling import SMOTE X = features_df.values y = known_deposits_mask # Баланс классов: позитивов мало sm = SMOTE(sampling_strategy=0.3, random_state=42) X_res, y_res = sm.fit_resample(X, y) scaler = StandardScaler() X_scaled = scaler.fit_transform(X_res) model = RandomForestClassifier( n_estimators=500, max_depth=12, min_samples_leaf=5, n_jobs=-1, random_state=42 ) model.fit(X_scaled, y_res) return model, scaler 

Типы входных данных и их ценность:

Источник данных Разрешение Глубина проникновения Ценность для поиска
Аэромагнитная съёмка 50–200 м 500–3000 м Контуры тел, разломы
Гравиметрия 200–500 м 5–10 км Тела базитов, соли
Sentinel-2 SWIR 20 м Поверхность Гидроксилы, глины
ASTER TIR 90 м Поверхность Минеральный состав
Геохимия почв/потоков Точки отбора 1–2 м Прямые индикаторы
CSAMT/MT Профили 1–5 км Проводящие зоны

Мы гарантируем точность модели не ниже 85% на кросс-валидации по историческим данным бурения. Методика описана в статье "Random Forest in Mineral Prospectivity" (Ore Geology Reviews, 2020).

Как AI снижает неопределённость запасов?

Monte Carlo моделирование запасов: JORC/CRIRSCO требуют указания неопределённости. ML + MC даёт диапазон вместо точечной оценки:

from scipy.stats import norm, lognormal import numpy as np def estimate_resources_montecarlo( kriging_grades, kriging_variances, density=2.8, n_simulations=10000 ): """ Оценка металлических ресурсов с неопределённостью. kriging_grades: сетка средних содержаний по блокам kriging_variances: дисперсия кригинга по блокам """ block_volume_m3 = 10 * 10 * 5 # 10x10x5 м блоки results = [] for sim in range(n_simulations): # Симулировать содержание в каждом блоке simulated_grades = np.random.normal( loc=kriging_grades, scale=np.sqrt(kriging_variances) ) simulated_grades = np.clip(simulated_grades, 0, None) # Подсчёт металла tonnage = kriging_grades.size * block_volume_m3 * density / 1000 # тонны metal_tonnes = tonnage * np.mean(simulated_grades) / 100 results.append(metal_tonnes) p10 = np.percentile(results, 10) p50 = np.percentile(results, 50) p90 = np.percentile(results, 90) return {'P10': p10, 'P50': p50, 'P90': p90, 'uncertainty_ratio': (p90 - p10) / p50} 

Вместо одной цифры запасов вы получаете интервал P10–P90. Это позволяет инвесторам принимать решения, зная диапазон риска. В одном из проектов неопределённость снизилась с 60% до 25%.

Обработка геофизических данных

Сейсмоинтерпретация нейронными сетями:

Ручная интерпретация сейсмограмм занимает недели. CNN автоматизирует выделение горизонтов и разломов:

import torch import torch.nn as nn class SeismicHorizonPicker(nn.Module): """ U-Net для автоматического выделения сейсмических горизонтов. Вход: 2D сейсмическая секция [H x W] Выход: маска горизонтов [H x W] """ def __init__(self): super().__init__() # Encoder self.enc1 = self._double_conv(1, 64) self.enc2 = self._double_conv(64, 128) self.enc3 = self._double_conv(128, 256) self.pool = nn.MaxPool2d(2) # Bottleneck self.bottleneck = self._double_conv(256, 512) # Decoder self.up3 = nn.ConvTranspose2d(512, 256, 2, 2) self.dec3 = self._double_conv(512, 256) self.up2 = nn.ConvTranspose2d(256, 128, 2, 2) self.dec2 = self._double_conv(256, 128) self.up1 = nn.ConvTranspose2d(128, 64, 2, 2) self.dec1 = self._double_conv(128, 64) self.out = nn.Conv2d(64, 1, 1) def _double_conv(self, in_ch, out_ch): return nn.Sequential( nn.Conv2d(in_ch, out_ch, 3, padding=1), nn.BatchNorm2d(out_ch), nn.ReLU(), nn.Conv2d(out_ch, out_ch, 3, padding=1), nn.BatchNorm2d(out_ch), nn.ReLU() ) def forward(self, x): e1 = self.enc1(x) e2 = self.enc2(self.pool(e1)) e3 = self.enc3(self.pool(e2)) b = self.bottleneck(self.pool(e3)) d3 = self.dec3(torch.cat([self.up3(b), e3], 1)) d2 = self.dec2(torch.cat([self.up2(d3), e2], 1)) d1 = self.dec1(torch.cat([self.up1(d2), e1], 1)) return torch.sigmoid(self.out(d1)) 

Обработка каротажных данных (Well Log Analysis):

  • Автоматическая корреляция пластов между скважинами: DTW (Dynamic Time Warping) на кривых GR, SP, resistivity.
  • Литологическая классификация: Random Forest на комплексе ГИС → 10–15 литотипов.
  • Оценка пористости и нефтенасыщенности: нейронная сеть на Core → Log calibration.

Почему традиционная геологоразведка не справляется?

Традиционные методы полагаются на линейную интерполяцию и экспертные оценки. Они игнорируют нелинейные взаимосвязи между разными типами данных. AI видит паттерны, которые человек пропускает. Например, комбинация слабой магнитной аномалии + определённый минеральный состав поверхности + близость к разлому даёт в 10 раз более высокий шанс оруденения, чем каждый фактор по отдельности. Наши модели улавливают такие взаимодействия автоматически.

Дистанционное зондирование в геологоразведке

Гиперспектральный анализ: AVIRIS, HyMap, PRISMA: 200+ спектральных каналов → минеральная карта поверхности:

  • SWIR (2.0–2.5 мкм) → каолинит, иллит, монтмориллонит (гидротермальная переработка = индикатор оруденения).
  • SAM (Spectral Angle Mapper) + нейронная сеть для точного разделения минералов.
  • Изменения во времени: мультиспектральные серии Sentinel-2 → активные геохимические аномалии по окраске.

CV для дешифрирования геологических структур:

  • Распознавание линеаментов (разломов) на ЦМР и снимках: LSD-алгоритм + фильтрация нейросетью.
  • 3D-реконструкция геологического обнажения по фотограмметрии (DJI Phantom + RealityCapture → геологическая карта).
  • Автоматическое нанесение элементов залегания по фотографиям керна.

Что входит в работу?

  1. Проспективное моделирование — ML-модель с картой шансов оруденения и ранжированием участков.
  2. Обработка геофизики — автоматическая интерпретация сейсмики, каротажа, магнитометрии.
  3. Вероятностная оценка ресурсов — отчёт с P10/P50/P90 по стандартам JORC.
  4. Интеграция с GIS — готовые слои для ArcGIS/QGIS, API для загрузки новых данных.
  5. Поддержка после внедрения — дообучение модели по мере поступления новых скважин.

Сравнение подходов: традиционный vs AI

Критерий Традиционная геологоразведка AI-геологоразведка
Время на проспективный анализ 3–6 месяцев 2–4 недели
Точность прогноза (ROC AUC) 0.6–0.7 0.85–0.95
Количество пустых скважин 30–50% 10–20%
Стоимость анализа $200K–500K $50K–150K

Получите консультацию: расскажите о ваших данных, и мы подберём best архитектуру. Закажите оценку вашего проекта — бесплатно, просто напишите нам. Срок разработки: 4–7 месяцев. Стоимость рассчитывается индивидуально.