Skip to content

A Computer Vision-Based Tool for Automatic Segmentation and Size Analysis of Nanoparticles in Scanning Electron Microscope (SEM) and Transmission Electron Microscope (TEM) Images

License

Notifications You must be signed in to change notification settings

rybakov-ks/ParticleAnalyzer

Repository files navigation

📑 Table of Contents

  1. 🔎 ParticleAnalyzer
  2. Examples
  3. Key Features
  4. 📥 Installation Guide
  5. 🛠 Segmentation Optimization Guide
  6. 📊 Analysis Outputs
  7. ⚙️ Advanced Settings
  8. 📏 Scale Calibration
  9. 📧 Contributors
  10. 📖 Citation

ParticleAnalyzer

LIVE Application Slow Demo? PyPI Version Monthly Downloads

A Computer Vision-Based Tool for Automatic Segmentation and Size Analysis of Nanoparticles in Scanning Electron Microscope (SEM) and Transmission Electron Microscope (TEM) Images.

Video demonstrations:

Local video (MP4) | YouTube demonstration

Example

If you encounter any errors while using Particle Analyzer, please open an issue in the GitHub repository or contact me at [email protected] for support. If the model cannot segment your images correctly, please send them to [email protected] . Your images will be used to retrain the model's.

✅ Examples

Example.1.mp4
Example.2.mp4
Example.3.mp4
Example.4.mp4
Example.5.mp4

✨ Key Features

  • Automated particle segmentation in SEM images
  • SAHI mode enables accurate detection of small particles in high-resolution images via a sliding window method
  • Comprehensive statistical analysis of particle characteristics
  • Interactive visualization of size distributions
  • Dual unit support — switch between pixels and micrometers (µm)
  • Supports multiple AI models: YOLOv11, YOLOv12, and Detectron2
  • Advanced configuration options for fine-tuning detection accuracy
  • AI Interpretation of SEM Data
  • Multi-language interface: Russian, Simplified Chinese, Traditional Chinese, English (ru, zh-CN, zh-TW, en)
  • Try it online: particleanalyzer.ru

🛠 Installation Guide

1. 📥 Install PyTorch with CUDA support

Make sure your system has an NVIDIA GPU with CUDA. Install PyTorch using the appropriate CUDA version (e.g., CUDA 11.8):

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

If you do not have a CUDA-capable GPU, use the CPU version instead—however, in this case, ParticleAnalyzer will run significantly slower:

pip install torch torchvision torchaudio

🧪 2. Install Detectron2 (Optional)

If you want to enable advanced instance segmentation, install Detectron2:

pip install 'git+https://github.com/facebookresearch/detectron2.git'

Warning

There may be problems installing Detectron2. Use the official documentation.

📦 3. Install ParticleAnalyzer

Finally, install ParticleAnalyzer from PyPI:

pip install --upgrade ParticleAnalyzer

✅ Now you're ready to run the application:

ParticleAnalyzer run

Open in browser: http://127.0.0.1:8000

You can specify the port if necessary:

ParticleAnalyzer run --port 5000

Launch with LLM support (OpenRouter or Hugging Face API key required):

ParticleAnalyzer run --port 5000 --api-key YOUR_OPENROUTER_API_KEY

🛠 Segmentation Optimization Guide

🔧 Core Parameters:

  • Model Selection
  • Detection Confidence Threshold (0-1)
    • Increase (e.g., 0.7→0.85) to reduce false positives
    • Decrease (e.g., 0.5→0.3) to detect faint particles
  • IoU Threshold (0-1)
    • Increase (e.g., 0.5→0.7) to eliminate duplicate detections
    • Decrease for dense particle fields
  • Enable SAHI Processing (split-analyze-merge)

🧩 SAHI Configuration (for large images):

  • Slice Size: Start with 400×400
  • Overlap Ratio: 0.2-0.3 (prevents edge artifacts)
    SAHI mode helps detect small objects in high-resolution images by using a sliding window approach

🔄 Model Selection:

Model Best For Speed Recommended Use Case
YOLOv11 🆕 General use (balanced) ⚡⚡⚡ Fast Quick analysis of standard samples
YOLOv12 🆕 High precision detection ⚡⚡⚡ Fast Critical measurements
Mask R-CNN X152 🆕 Challenging morphology ⚡ Slow Irregular/overlapping particles

📊 Analysis Outputs

Statistical Data Table

Statistics Table
Statistics Table

Comprehensive metrics including mean, median, min/max, standard deviation values for:

  • Area (px² or µm²)
  • Perimeter (px or µm)
  • Equivalent diameter (px or µm)
  • Feret diameters and angles (px or µm and °)
  • Eccentricity (unitless)
  • Intensity values (grayscale units)

Size Distribution Visualization

Distribution Plots

Normal distribution fitting for all measured parameters showing particle population characteristics

Data filtering

Filtering.data.mp4

AI Interpretation of SEM Data

Statistics Table

Advanced Settings Panel

Settings Menu

Configuration options include:

  • Model Selection: YOLOv11, YOLOv12, Detectron2
  • SAHI Mode: Enable/disable sliced inference for large images
SAHI Mode
  • Detection Threshold: Confidence level (0-1)
  • IOU Threshold: Overlap threshold for NMS (0-1)
  • Max Detections: Maximum number of particles to detect
  • Scaling Mode: Pixel/µm unit selection
  • Image Resolution: Output resolution control
  • Result Rounding: Decimal places for metrics
  • Single Particle Mode: Detailed individual analysis
  • Histogram Bins: Number of intervals for distribution plots

📐 Scale Calibration

instruction.mp4

Micrometer values are calculated by:

  1. Identifying the SEM image's scale bar using two marker points
  2. Manually specifying the known real-world distance between markers
  3. Automatically computing the pixel-to-µm conversion ratio
Real Scale

Note: For accurate µm measurements, please ensure:

  • The scale bar is clearly visible in your image
  • Enter the correct scale
  • The scale bar was created at the same magnification as your particles

📧 Contributors

Kirill Rybakov, PhD | Chemistry
Affiliation: Saratov State University
Email: [email protected]

📖 Citation

If you plan to publish results obtained using ParticleAnalyzer, we would appreciate it if you mention the use of ParticleAnalyzer (https://github.com/rybakov-ks/ParticleAnalyzer).