Research & Science

Built for Discovery

A codebase designed for researchers, not just users. Modify freely, inspect deeply, and publish without paying for the privilege.

No "Research License" Required

Some frameworks charge separate fees for "research" or "science" licenses just to let you inspect the code without releasing your work. LibreYOLO doesn't.

Typical "Science Licenses"

  • Pay to keep research private
  • Fees for commercial R&D use
  • Complex license tiers
  • Legal review for publication

LibreYOLO (MIT)

  • Investigate freely, keep it private
  • Zero fees for any use case
  • One simple license: MIT
  • Publish without legal concerns
Native Explainability

See Inside the Black Box

Built-in tools for interpretability and explainability. No external dependencies, no complex setup - just flags and function calls.

Feature Map Extraction

One flag. That's all it takes to save intermediate activations from every layer. Perfect for understanding what your model "sees" at each stage.

feature_maps.py
from libreyolo import LibreYOLO

# Enable feature map saving in constructor
model = LibreYOLO(
    model_path="LibreYOLO11m.pt",
    size="m",
    save_feature_maps=True
)

# Run inference - feature maps auto-saved
results = model(image="parkour.jpg")

# Saved to: runs/feature_maps/
backbone_p1.png
1/11
Backbone P1 feature map

CAM Visualizations

Experimental

7 built-in Class Activation Map methods. Call model.explain() to generate heatmaps showing what your model focuses on. This feature is experimental and results may vary.

explainability.py
from libreyolo import LibreYOLO

model = LibreYOLO(model_path="LibreYOLO11m.pt", size="m")

# One-line CAM visualization
result = model.explain(
    image="parkour.jpg",
    method="gradcam",
    target_layer="neck_c2f22",
    save=True
)

# Returns heatmap and overlay
print(result["heatmap"].shape)

Designed for Modification

The codebase is written to be easy to read and modify. Want to test a new backbone? Experiment with a custom attention mechanism? Add a novel loss function? Go for it.

yolov11_custom.py
# Your modified architecture

from libreyolo.models.yolov11 import YOLOv11

class YOLOv11Custom(YOLOv11):
    def __init__(self):
        super().__init__()
        # Swap out the backbone
        self.backbone = MyCustomBackbone()

    def forward(self, x):
        features = self.backbone(x)
        return self.head(self.neck(features))

# Train it:
model = YOLOv11Custom()
model.train(data="my_dataset.yaml")

Start Your Research Today

No license fees. No paywalls. No restrictions on keeping your work private. Just install and start exploring.

$ pip install libreyolo
View Documentation