Package containing a set of tools to process and analyze geological microscopic images.
Project description
petroscope
Petroscope is a python package to analyze and work with microscopic geological images.
Installation
Download wheels distro from the GitHub releases page then install it:
python -m pip install petroscope-0.0.5-py3-none-any.whl
Or you can install the package from PyPI:
pip install petroscope
The minimal required Python version is 3.10.
Segmentation module
This module is dedicated to image segmentation. It contains a number of helpful utils for segmentation related tasks, abstract class GeoSegmModel, classes to perform segmentation evaluation and metrics calculation.
This module is designed primarily to be used with LumenStone dataset, collected and annotated by our team. Annotation labels for this dataset are provided in LumenStoneClasses class.
Segmentation metrics
IoU per class, mean IoU, total accuracy metrics are used for segmentation evaluation. For the correct calculation of these metrics, it is necessary to use information about the areas of all objects in the dataset, not just in individual images. These calculations are implemented in metrics.py.
Patch-sampling balancer
One of the main challenges in developing segmentation methods for geological images of polished sections is the severe class imbalance in datasets for minerals, which naturally occurs due to the varying frequencies of mineral occurrence in nature. Some minerals may appear as small clusters of only a few dozen pixels, while others may occupy a large portion of the images.
Training neural network segmentation models directly on such data leads to extremely poor results. It has also been empirically shown that using various loss functions focused on class imbalance and class weighting does not yield the desired results in this case.
To address class imbalance, a simple yet quite effective patch-based sampling method was proposed, leaning on constructing probability maps of mineral occurrence in the dataset. The implementation is presented in SelfBalancingDataset class.
References
The implemented patch-based balancer is inspired by our previous works:
- Alexey Kochkarev, Alexander Khvostikov, Dmitry Korshunov, Andrey Krylov, and Mikhail Boguslavskiy. Data balancing method for training segmentation neural networks. CEUR Workshop Proceedings, 2744:1–10, 2020. DOI;
- Zh Sun, A. Khvostikov, A. S. Krylov, A. Sethi, I. Mikhailov, and P. Malkov. Joint super-resolution and tissue patch classification for whole slide histological images. Programming and Computer Software, 50(3):257–263, 2024 DOI;
Example of usage
- segm_balancer.py - an example of sampling patches from the dataset with simple augmentations, visualizing the probability maps of classes and the obtained accumulators.
ResUnet segmentation model
ResUnet is the base mineral segmentation model which is built upon the UNet architecture with residual conv blocks. It was trained on LumenStone S1v1 dataset for 7 segmenting classes.
To use this model you have to install pytorch.
Achieved metrics for LumenStone S1v1
| class | IoU | IoU, void borders |
|---|---|---|
| BG | 0.8326 | 0.8505 |
| Brt | 0.8868 | 0.8955 |
| Ccp | 0.9191 | 0.9363 |
| Gl | 0.7464 | 0.7630 |
| Py/Mrc | 0.9628 | 0.9732 |
| Sph | 0.7534 | 0.7653 |
| Tnt/Ttr | 0.7601 | 0.7706 |
| mean | 0.8373 | 0.8506 |
References
The architecture of the model is described in:
- A. V. Khvostikov, D. M. Korshunov, A. S. Krylov, and M. A. Boguslavskiy. Automatic identification of minerals in images of polished sections. The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, 44:113–118, 2021. DOI;
Examples of usage
-
segm_resunet_inference.py - an example of using ResUnet model for inference (making prediction for one image);
-
segm_resunet_test.py - a more detailed example demonstrating the testing of ResUnet model on LumenStone S1v1 dataset with calculating of all metrics;
Panorama module
This module is used for stitching geological images of polished sections into panoramas. The description will be added later.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file petroscope-0.0.5.tar.gz.
File metadata
- Download URL: petroscope-0.0.5.tar.gz
- Upload date:
- Size: 36.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b72273433f25638931217f27c0acab8c73b9fca670db40c8f68af980e4626df5
|
|
| MD5 |
729a9a1b5311f803f1d0a9fdd75d9e01
|
|
| BLAKE2b-256 |
66ca65fa32a31a3556cebf98fec2d945119869c6efd470605775d2d950a25d3b
|
File details
Details for the file petroscope-0.0.5-py3-none-any.whl.
File metadata
- Download URL: petroscope-0.0.5-py3-none-any.whl
- Upload date:
- Size: 39.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39e9747f4ebda4e05c9afceaf45ba5f1a099d889d26a6a7d526047ab3796831d
|
|
| MD5 |
858cf1eda4c7b9d2ab9baf3865ac24fd
|
|
| BLAKE2b-256 |
a598c8db8e22cf61f6cf93b05403aa65b161997745ea2f737ccac15f62bb6f6d
|