IntptrMax.YoloSharp
1.1.5
dotnet add package IntptrMax.YoloSharp --version 1.1.5
NuGet\Install-Package IntptrMax.YoloSharp -Version 1.1.5
<PackageReference Include="IntptrMax.YoloSharp" Version="1.1.5" />
<PackageVersion Include="IntptrMax.YoloSharp" Version="1.1.5" />
<PackageReference Include="IntptrMax.YoloSharp" />
paket add IntptrMax.YoloSharp --version 1.1.5
#r "nuget: IntptrMax.YoloSharp, 1.1.5"
#addin nuget:?package=IntptrMax.YoloSharp&version=1.1.5
#tool nuget:?package=IntptrMax.YoloSharp&version=1.1.5
YoloSharp
Train Yolo model in C# with TorchSharp. </br> With the help of this project you won't have to transform .pt model to onnx, and can train your own model in C#.
Feature
- Written in C# only.
- Train and predict your own model.
- Support Yolov5, Yolov5u, Yolov8, Yolov11 and Yolov12 now.
- Support Predict and Segment now.
- Support n/s/m/l/x size.
- Support LetterBox and Mosaic4 method for preprocessing images.
- Support NMS with GPU.
- Support Load PreTrained models from ultralytics/yolov5/yolov8/yolo11 and yolov12(converted).
- Support .Net6 or higher.
Models
You can download yolov5/yolov8 pre-trained models here.
<details> <summary>Prediction Checkpoints</summary>
model | n | s | m | l | x |
---|---|---|---|---|---|
yolov5 | yolov5n | yolov5s | yolov5m | yolov5l | yolov5x |
yolov5 | yolov5nu | yolov5su | yolov5mu | yolov5lu | yolov5xu |
yolov8 | yolov8n | yolov8s | yolov8m | yolov8l | yolov8x |
yolov11 | yolov11n | yolov11s | yolov11m | yolov11l | yolov11x |
</details>
<details> <summary>Segmention Checkpoints</summary>
model | n | s | m | l | x |
---|---|---|---|---|---|
yolov8 | yolov8n | yolov8s | yolov8m | yolov8l | yolov8x |
yolov11 | yolov11n | yolov11s | yolov11m | yolov11l | yolov11x |
</details>
How to use
You can download the code or add it from nuget.
dotnet add package IntptrMax.YoloSharp
[!NOTE] Please add one of libtorch-cpu, libtorch-cuda-12.1, libtorch-cuda-12.1-win-x64 or libtorch-cuda-12.1-linux-x64 version 2.5.1.0 to execute.
In your code you can use it as below.
Predict
You can use it with the code below:
MagickImage predictImage = new MagickImage(predictImagePath);
// Create predictor
Predictor predictor = new Predictor(sortCount, yoloType: yoloType, deviceType: deviceType, yoloSize: yoloSize, dtype: dtype);
// Train model
predictor.LoadModel(preTrainedModelPath, skipNcNotEqualLayers: true);
predictor.Train(trainDataPath, valDataPath, outputPath: outputPath, batchSize: batchSize, epochs: epochs, useMosaic: true);
//ImagePredict image
predictor.LoadModel(Path.Combine(outputPath, "best.bin"));
List<Predictor.PredictResult> predictResult = predictor.ImagePredict(predictImage, predictThreshold, iouThreshold);
Use yolov5n pre-trained model to detect.
Segment
You can use it with the code below:
MagickImage predictImage = new MagickImage(predictImagePath);
// Create segmenter
Segmenter segmenter = new Segmenter(sortCount, yoloType: yoloType, deviceType: deviceType, yoloSize: yoloSize, dtype: dtype);
segmenter.LoadModel(preTrainedModelPath, skipNcNotEqualLayers: true);
// Train model
segmenter.Train(trainDataPath, valDataPath, outputPath: outputPath, batchSize: batchSize, epochs: epochs, useMosaic: false);
segmenter.LoadModel(Path.Combine(outputPath, "best.bin"));
// ImagePredict image
var (predictResult, resultImage) = segmenter.ImagePredict(predictImage, predictThreshold, iouThreshold);
Use yolov8n-seg pre-trained model to detect.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net6.0
- Magick.NET-Q8-AnyCPU (>= 14.6.0)
- Newtonsoft.Json (>= 13.0.3)
- TorchSharp (>= 0.105.0)
- TorchSharp.PyBridge (>= 1.4.3)
- TorchVision (>= 0.105.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.