GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - IntptrMax/YoloSharp: Train Yolo with C#

BranchesTags
Open more actions menu

Latest commit

 

History

102 Commits
102 Commits

Folders and files

NameName
Last commit message
Last commit date
Assets
Assets
 
 
YoloSharp
YoloSharp
 
 
YoloSharpDemo
YoloSharpDemo
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
LICENSE.txt
LICENSE.txt
 
 
README.md
README.md
 
 
YoloSharp.sln
YoloSharp.sln
 
 

Repository files navigation

YoloSharp

Train and run YOLO models in pure C# with TorchSharp.
No Python required — from training to inference, everything stays inside .NET.

✨ Features

  • 100% C# implementation – No Python environment, no extra dependencies.
  • Full pipeline support – Train, validate, and predict with your own custom models.
  • Multiple YOLO versions – Supports YOLOv5, YOLOv5u, YOLOv8, YOLOv11, and YOLOv12.
  • All task types – Object detection, segmentation, oriented bounding boxes (OBB), pose estimation (keypoints), and classification.
  • Model sizes – n/s/m/l/x variants available for every architecture.
  • Advanced preprocessing – Built-in LetterBox and Mosaic4 data augmentation.
  • GPU‑accelerated NMS – Non‑maximum suppression runs directly on GPU.
  • Pretrained models – Load models from Ultralytics YOLO (v5/v8/v11) and converted YOLOv12 checkpoints.
  • Cross‑platform – Works with .NET 6 and later.

🤔 Why YoloSharp?

  • No Python environment – Say goodbye to Conda, pip, dependency hell, and version conflicts. Everything runs inside your existing .NET ecosystem.
  • Seamless integration – Directly use C# data structures, LibTorch bindings (TorchSharp),OpenCV bindings (OpenCvSharp), and your .NET logging/tracing infrastructure.
  • Simplified deployment – Package your trained model and inference logic into a single .NET application or container. No separate Python microservice needed.
  • Performance – Harness GPU acceleration via LibTorch and TorchSharp with full control over memory and execution.
  • Productivity – Train and validate models using the same language you use for the rest of your backend, desktop, or game logic. One language, one toolchain.
  • Cost‑effective – Reduce operational overhead by eliminating Python runtimes in production.

Whether you're building a desktop application, a cloud service, or an edge device solution, YoloSharp keeps your stack consistent and maintainable.

🔥 Recent Updates

🚀 Can Load .pt weight now.
🚀 Added Net Standard 2.0 support.
🚀 Added End-to-End (End2End) support for both training and inference.
🚀 Added warm‑up scheduling for stable training start.
🚀 Added rectangle‑resize transform for validation (preserves aspect ratio).
🚀 Added option to disable mosaic augmentation during training.
🚀 Added bias initialization for detection head to improve convergence.
🚀 Replaced CosineAnnealingLR with LambdaLR for more flexible learning rate scheduling.
🐛 Fixed angle loss calculation for oriented bounding boxes (OBB). 🐛 Fixed HSV transform implementation.

2026/10/13
🚀 Can Load .pt weight now.
🐛 Fix the bug of calculating metrics.

2026/06/01
🚀 Added Net Standard 2.0 support.

2026/05/31
🚀 Added End-to-End (End2End) support for both training and inference.
🐛 Fixed angle loss calculation for oriented bounding boxes (OBB).

2026/05/07
🚀 Added data augmentation: horizontal flip, vertical flip, RandomPerspective.
🐛 Fixed Mosaic4 implementation.

2026/03/26
🚀 Added training metrics curves.

2026/03/06
🚀 Configurable training & prediction.
🚀 More metrics for validation.

2026/02/03
🚀 Early stopping.
🚀 HSV transform.
🚀 Training logs.

2026/01/20
🚀 Mixed precision trainer (simple AMP).
🚀 Tqdm support.
🚀 BF16 precision.

📦 Download Pretrained Models

Get the official YOLO checkpoints below.

Prediction Checkpoints

model n s m l x
yolov5 yolov5n yolov5s yolov5m yolov5l yolov5x
yolov5u yolov5nu yolov5su yolov5mu yolov5lu yolov5xu
yolov8 yolov8n yolov8s yolov8m yolov8l yolov8x
yolov11 yolov11n yolov11s yolov11m yolov11l yolov11x

Segmentation Checkpoints

model n s m l x
yolov8 yolov8n-seg yolov8s-seg yolov8m-seg yolov8l-seg yolov8x-seg
yolov11 yolov11n-seg yolov11s-seg yolov11m-seg yolov11l-seg yolov11x-seg

🚀 Getting Started

Install from NuGet

dotnet add package IntptrMax.YoloSharp

Note

You also need to add one of the LibTorch packages (version 2.5.1.0) and OpenCvSharp4.runtime:

  • libtorch-cpu
  • libtorch-cuda-12.1
  • libtorch-cuda-12.1-win-x64
  • libtorch-cuda-12.1-linux-x64

Basic Usage

string preTrainedModelPath = @"..\..\..\Assets\PreTrainedModels\yolov8n-obb.bin"; // Pretrained model path.
string predictImagePath = @"..\..\..\Assets\TestImage\trucks.jpg";
string dataRootPath = @"..\..\..\Assets\datasets\dotav1";

string trainDataPath = @"train.txt";
string valDataPath = @"val.txt";

Mat predictImage = Cv2.ImRead(predictImagePath);

// Create a Yolo config
Config config = new Config
{
    DeviceType = DeviceType.CUDA,
    ScalarType = ScalarType.BFloat16,
    RootPath = dataRootPath,
    TrainDataPath = trainDataPath,
    ValDataPath = valDataPath,
    YoloType = YoloType.Yolov8,
    YoloSize = YoloSize.n,
    TaskType = TaskType.Obb,
    ImageProcessType = ImageProcessType.Mosiac,
    ImageSize = 640,
    BatchSize = 16,
    NumberClass = 15,
    PredictThreshold = 0.3f,
    IouThreshold = 0.7f,
    Workers = 4,
    Epochs = 100,
    LearningRate = 1e-4f,
    Patience = 50,
    KeyPoint_Num = 21,
    KeyPoint_Dim = 3,
};

// Create a yolo task.
YoloTask yoloTask = new YoloTask(config);

// Load pre-trained model. If you don't want to use pre-trained model, skip the step.
yoloTask.LoadModel(preTrainedModelPath, skipNcNotEqualLayers: true);

// Train model
yoloTask.Train();

// Predict image, if the model is not trained or loaded, it will use random weight to predict.
List<YoloResult> predictResult = yoloTask.ImagePredict(predictImage);

📸 Sample Results

Model Output
YOLOv8n (detection) zidane
YOLOv8n‑seg bus
YOLOv8n‑obb trucks
YOLOv8n‑pose tennis

Enjoy YOLO entirely in .NET – no Python needed!
Contributions and feedback are welcome!

About

Train Yolo with C#

Topics

csharpdeep-learningimage-classificationinstance-segmentationmachine-learningobject-detectionpose-estimationpredictionrotated-object-detectiontrainingyoloyolo11yolo12yolov5yolov8

Resources

Readme
Apache-2.0 license
Activity

Stars

266 stars

Watchers

8 watching

Forks

52 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.