Разработка программного модуля
для автоматической привязки фотографий керна по глубине
Прозорова Г.В., Антипова А.Н.

Тюменский индустриальный университет
Статья посвящена разработке программного модуля для привязки фотографий полноразмерного керна по глубине. Описаны проблемы неавтоматизированной ручной привязки, рассмотрены варианты автоматизации с использованием различного открытого программного обеспечения, представлены технические аспекты разработки. Программный модуль реализован в виде кроссплатформенного настольного приложения на языке программирования Python, он позволяет автоматически вырезать изображения отдельных цилиндров из фотографии ящика керна и формировать из них вертикальную колонку с указанием глубин отбора.

Введение

Привязка фотографий керна по глубине является необходимой технологической операцией, предшествующей исследованию их содержания специалистом-геологом или петрофизиком. В производственных условиях в большинстве компаний привязка выполняется вручную с использованием графических редакторов (Adobe Photoshop, CorelDraw и т.п.) и является весьма трудоемким рутинным процессом. В статье представлен программный модуль, разработанный с использованием нейронной сети YOLOv8, который автоматически из загруженной фотографии ящика с полноразмерным керном вырезает изображения отдельных цилиндров и формирует из них вертикальную колонку с указанием глубины отбора. Приложение опробовано в производственных условиях, его внедрение значительно сокращает время и усилия, затрачиваемые специалистами на эту рутинную работу.

Постановка задачи

Для выполнения исследований специалист-геолог получает фотографии
ящиков с образцами полноразмерного керна (рис. 1).
Рис. 1. Фотография ящика с керном
Образцы цилиндрической формы имеют длину один метр, в ящике может находиться от одного до пяти образцов, уложенных справа налево по глубине отбора. При неавтоматизированной привязке специалист в графическом редакторе вырезает изображения отдельных образцов из фотографии ящика, вручную определяет глубину их отбора и составляет из образцов вертикальную колонку в соответствии с расположением в ящике.
В названии фотографии ящика указан интервал глубин отбора керна в метрах (например, 3 292,00–
3 296,00). Первое значение глубины соответствует положению верхней грани крайнего правого образца. Для остальных образцов глубина отбора рассчитывается в зависимости от расположения в ящике. На созданной колонке керна шкала глубин размещается рядом с колонкой.
Целью работы являлось создание программного модуля, который будет автоматически воспроизводить последовательность описанных выше операций по глубинной привязке фотографий образцов полноразмерного керна.

Имеющиеся решения

Анализ описаний программных комплексов для исследования керновых и скважинных данных, представленных на сайтах ведущих разработчиков программного обеспечения для нефтегазовой отрасли, позволил предположить, что в них реализованы функции привязки фотографий образцов полноразмерного керна. Например, в модуле «Геология» программного комплекса Techlog (Schlumberger) [1]. Однако детального описания подобной функциональности найти не удалось. При этом для небольших компаний и отдельных производственных и исследовательских лабораторий, выполняющих анализ фотографий керна, крупные программные комплексы нецелесообразны, предпочтительны более дешевые узкофункциональные решения.
Примером такого узкофункционального решения может служить программа для автоматического описания керна DeepCore (ООО «ДИДЖИТАЛ ПЕТРОЛЕУМ»), в которой реализована привязка фотографий полноразмерного керна по глубине [2]. Но программа разработана в формате веб-сервиса, что не отвечает требованиям по информационной безопасности большинства компаний нефтегазовой отрасли. Для соответствия требованиям по информационной безопасности представленный в статье модуль разработан в виде настольного приложения.

Описание разработки

При разработке модуля решались две задачи: первая — подбор и реализация алгоритма извлечения изображений образцов из фотографии ящика керна и вторая — формирование вертикальной колонки керна с нанесенной шкалой глубин. Решение первой задачи было получено после проведения нескольких компьютерных экспериментов.

Подбор алгоритма извлечения изображений образцов

Полуавтоматическое выделение
Полуавтоматическое выделение состояло в том, что на фотографии ящика керна в графическом редакторе (Photoshop и др.) вручную указывались координаты углов отдельных образцов и помещались в программную часть. Затем на их основе с помощью библиотеки PIL строились ограничивающие прямоугольники (bounding boxes), которые обводили каждый образец
керна (рис. 2).
Рис. 2. Полуавтоматическое выделение образцов на фотографии ящика: а — запись координат углов образцов; б — результат выделения
Преимуществами полуавтоматического выделения являются относительная простота реализации и высокая точность на этапе подготовки, так как результат визуально соответствует действительности. Недостатками являются высокая трудоемкость и фактическое отсутствие автоматизации, поскольку необходимо вручную указывать координаты углов на каждой фотографии ящика. Было опробовано создание прямоугольных шаблонов для ящиков с разным числом столбцов керна. Предполагалось, что фотографии ящиков керна сделаны с одного расстояния, имеют одинаковый масштаб и разрешение. Была разработана функция, которая автоматически применяла координаты шаблонных прямоугольников к фотографиям ящиков с соответствующим числом образцов. Но при тестировании шаблонные прямоугольники не совпадали с фактическими границами между образцами. Причина оказалась в том, что фотографии ящиков имеют небольшие различия в масштабе и разрешении из-за незначительной разницы в условиях фотосъемки. Было решено отказаться от способа полуавтоматического выделения образцов в ящике.
Применение алгоритмов OpenCV
Способ заключался в использовании методов компьютерного зрения библиотеки OpenCV для автоматического нахождения границ образцов [3]. Была реализована последовательность операций:
• преобразование фотографии ящика в градации серого;
• выделение вертикальных границ с помощью фильтров Собеля (Sobel);
• пороговая и адаптивная бинаризация;
• морфологические операции (расширение, эрозия, закрытие);
• вертикальная проекция;
• поиск контуров.
Путем подбора параметров алгоритмов: ядер фильтров, порогов бинаризации, размеров морфологических элементов — удалось успешно выделить образцы керна на отдельных фотографиях ящиков. Но большинство результатов тестирования было неудовлетворительным. Причины низкой эффективности алгоритмов OpenCV в цветовой и текстурной неоднородности образцов. Керн имеет различия в цвете, трещины и разломы, которые алгоритмы принимают за границы образцов, на образцах возможны теневые области и отражения света, контуры образцов на фотографии не всегда четко выражены из-за схожести цветов керна и ящика и близкого расположения образцов. При такой неоднородности изображений проблематично задать единые настройки алгоритмов, обеспечивающие надежное автоматическое выделение образцов на фотографиях всех ящиков. Было решено отказаться от использования библиотеки OpenCV.
Применение нейронной сети
Для выделения изображений образцов на фотографиях ящиков керна использована нейронная сеть YOLOv8, специализированная в области компьютерного зрения [4]. YOLO реализует принцип однократной обработки изображения, при котором модель одновременно предсказывает координаты ограничивающих прямоугольников (bounding boxes) и классы объектов, таким образом обеспечивая высокую скорость классификации.
Для разметки фотографий ящиков использована программа LabelImg — инструмент для аннотирования графических изображений, созданный на Python и имеющий простой графический интерфейс [5]. На фотографиях ящиков керна меткой core были размечены образцы (рис. 3). Было размечено 120 фотографий, распределенных на обучающую (80 %), валидационную (10 %) и тестировочную (10 %) выборки.
Была протестирована версия YOLOv8n со следующими параметрами:
• 50 эпох обучения (epochs);
• размер изображения (imgsz) равный 640×640;
• размер батча (batch) равный 8, означающий количество изображений, которые будут обработаны во время одного шага обучения, значение регулируется под имеющуюся память видеоадаптера компьютера.
Рис. 3. Разметка фотографий в LabelImg
После прохождения моделью 50 эпох обучения были получены лучшие веса, содержащиеся в файле best.pt с детальной статистикой обучения:
• количество слоев модели = 72 (включая сверточные слои, активации);
• количество обучаемых параметров (весов и смещений) = 3 005 843;
• сложность модели = 8,1 GFLOPs (количество операций на каждом входе);
• предобработка (preprocess) = 0,0 мс — время подготовки изображения, в данном случае применяется только изменение изображения, поэтому результат почти мгновенный;
• вывод (inference) = 0,5 мс — время, затраченное на прохождение одного изображения через нейросеть;
• потери (loss) = 0, при обучении потерь замечено не было;
• постобработка каждого изображения (postprocess per image) = ~ 0,6 мс — время, затраченное на обработку выходов модели для одной фотографии.
При тестировании на различных фотографиях ящиков образцы определяются очень точно (рис. 4). В нормализованной матрице ошибок, полученной после тестирования модели, определена 100 % точность в TP-секторе.
Рис. 4. Результаты тестирования нейросетевой модели
Таким образом, нейронная сеть YOLOv8 была выбрана в качестве инструмента для извлечения изображений образцов из фотографии полноразмерного керна.

Формирование вертикальной колонки керна

с нанесенной шкалой глубин

Процесс формирования вертикальной колонки керна в разработанном модуле включает этапы:
• выделение нейронной сетью YOLOv8 изображений отдельных образцов на фотографии ящика керна. Каждый образец описывается ограничивающим прямоугольником, для которого определены координаты углов;
• определение порядка размещения изображений образцов в соответствии с расположением в ящике (крайний правый образец является верхним по глубине, крайний левый — нижним по глубине);
• объединение в одну вертикальную колонку извлеченных изображений образцов в порядке убывания глубины;
• извлечение значения глубины из названия фотографии ящика керна;
• создание отдельного изображения шкалы глубин, соответствующего интервалу глубин колонки керна, шаг шкалы имеет фиксированное значение 0,1 метра;
• объединение колонки образцов керна и шкалы в одно итоговое изображение (рис. 5).
Рис. 5. Итоговое изображение колонки керна с шкалой глубин
Полученное изображение колонки керна сохраняется в заданную папку под стандартизованным именем, содержащим исходный диапазон глубин и постфикс. С помощью библиотеки PyQt5 разработан несложный пользовательский интерфейс модуля [6].

Результаты производственных испытаний модуля

Модуль в законченном виде представляет собой настольное пользовательское приложение, готовое к использованию [7]. Для работы модуля требуется установка языка Python версии 3.10 или выше, библиотек PyQT5, PIL, ultralytics. В производственных условиях установка и освоение модуля не вызвали трудностей у специалистов-петрофизиков.
По мнению специалистов, модуль выполняет вырезание изображений столбцов керна из фотографии ящика и формирование колонки с удовлетворительной точностью. Время обработки фотографии одного ящика керна составило около 5 секунд, что значительно меньше, чем неавтоматизированная привязка с использованием графических редакторов. В качестве ограничения модуля специалисты отметили обработку фотографий только с правильным вертикальным размещением столбцов керна. Поскольку в производственных условиях таких фотографий большинство, то модуль может быть рекомендован к практическому использованию в имеющемся виде. Но целесообразна доработка для фотографий с другим размещением керна, которая расширит возможности применения модуля.
Прозорова Г.В., Антипова А.Н.

Тюменский индустриальный университет, Тюмень, Россия

prozorovagv@tyuiu.ru
В процессе проектирования программного модуля выполнены анализ публикаций и компьютерные эксперименты по подбору алгоритма работы модуля и базового программного обеспечения для разработки, подбора типа и параметров нейронной сети. Разработка выполнена на языке программирования Python с использованием нейронной сети YOLOv8.
исследования керна, фотографии керна, нейронные сети, машинное обучение
Прозорова Г.В., Антипова А.Н. Разработка программного модуля для автоматической привязки фотографий керна по глубине // Экспозиция Нефть Газ. 2025. № 7. C. 96–99.
DOI: 10.24412/2076-6785-2025-7-96-99
11.11.2025
УДК 550.08., 004.89, 004.932
DOI: 10.24412/2076-6785-2025-7-96-99
Рекомендуемые статьи
© Экспозиция Нефть Газ. Научно-технический журнал. Входит в перечень ВАК
+7 (855) 222-12-84