mirror of
https://github.com/mii443/usls.git
synced 2025-08-22 15:45:41 +00:00
0.0.7 (#27)
This commit is contained in:
@ -25,29 +25,29 @@
|
||||
```Shell
|
||||
|
||||
# Classify
|
||||
cargo run -r --example yolo -- --task classify --version v5 # YOLOv5
|
||||
cargo run -r --example yolo -- --task classify --version v8 # YOLOv8
|
||||
cargo run -r --example yolo -- --task classify --ver v5 # YOLOv5
|
||||
cargo run -r --example yolo -- --task classify --ver v8 # YOLOv8
|
||||
|
||||
# Detect
|
||||
cargo run -r --example yolo -- --task detect --version v5 # YOLOv5
|
||||
cargo run -r --example yolo -- --task detect --version v6 # YOLOv6
|
||||
cargo run -r --example yolo -- --task detect --version v7 # YOLOv7
|
||||
cargo run -r --example yolo -- --task detect --version v8 # YOLOv8
|
||||
cargo run -r --example yolo -- --task detect --version v9 # YOLOv9
|
||||
cargo run -r --example yolo -- --task detect --version v10 # YOLOv10
|
||||
cargo run -r --example yolo -- --task detect --version rtdetr # YOLOv8-RTDETR
|
||||
cargo run -r --example yolo -- --task detect --version v8 --model yolov8s-world-v2-shoes.onnx # YOLOv8-world
|
||||
cargo run -r --example yolo -- --task detect --ver v5 # YOLOv5
|
||||
cargo run -r --example yolo -- --task detect --ver v6 # YOLOv6
|
||||
cargo run -r --example yolo -- --task detect --ver v7 # YOLOv7
|
||||
cargo run -r --example yolo -- --task detect --ver v8 # YOLOv8
|
||||
cargo run -r --example yolo -- --task detect --ver v9 # YOLOv9
|
||||
cargo run -r --example yolo -- --task detect --ver v10 # YOLOv10
|
||||
cargo run -r --example yolo -- --task detect --ver rtdetr # YOLOv8-RTDETR
|
||||
cargo run -r --example yolo -- --task detect --ver v8 --model yolov8s-world-v2-shoes.onnx # YOLOv8-world
|
||||
|
||||
# Pose
|
||||
cargo run -r --example yolo -- --task pose --version v8 # YOLOv8-Pose
|
||||
cargo run -r --example yolo -- --task pose --ver v8 # YOLOv8-Pose
|
||||
|
||||
# Segment
|
||||
cargo run -r --example yolo -- --task segment --version v5 # YOLOv5-Segment
|
||||
cargo run -r --example yolo -- --task segment --version v8 # YOLOv8-Segment
|
||||
cargo run -r --example yolo -- --task segment --version v8 --model FastSAM-s-dyn-f16.onnx # FastSAM
|
||||
cargo run -r --example yolo -- --task segment --ver v5 # YOLOv5-Segment
|
||||
cargo run -r --example yolo -- --task segment --ver v8 # YOLOv8-Segment
|
||||
cargo run -r --example yolo -- --task segment --ver v8 --model FastSAM-s-dyn-f16.onnx # FastSAM
|
||||
|
||||
# Obb
|
||||
cargo run -r --example yolo -- --task obb --version v8 # YOLOv8-Obb
|
||||
cargo run -r --example yolo -- --task obb --ver v8 # YOLOv8-Obb
|
||||
```
|
||||
|
||||
<details close>
|
||||
@ -175,7 +175,3 @@ yolo export model=yolov8m-obb.pt format=onnx simplify
|
||||
[Here](https://github.com/THU-MIG/yolov10#export)
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -16,7 +16,7 @@ pub struct Args {
|
||||
pub task: YOLOTask,
|
||||
|
||||
#[arg(long, value_enum, default_value_t = YOLOVersion::V8)]
|
||||
pub version: YOLOVersion,
|
||||
pub ver: YOLOVersion,
|
||||
|
||||
#[arg(long, default_value_t = 224)]
|
||||
pub width_min: isize,
|
||||
@ -59,6 +59,9 @@ pub struct Args {
|
||||
|
||||
#[arg(long)]
|
||||
pub no_plot: bool,
|
||||
|
||||
#[arg(long)]
|
||||
pub no_contours: bool,
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
@ -68,66 +71,87 @@ fn main() -> Result<()> {
|
||||
let options = Options::default();
|
||||
|
||||
// version & task
|
||||
let options =
|
||||
match args.version {
|
||||
YOLOVersion::V5 => {
|
||||
match args.task {
|
||||
YOLOTask::Classify => options
|
||||
.with_model(&args.model.unwrap_or("yolov5n-cls-dyn.onnx".to_string()))?,
|
||||
YOLOTask::Detect => {
|
||||
options.with_model(&args.model.unwrap_or("yolov5n-dyn.onnx".to_string()))?
|
||||
}
|
||||
YOLOTask::Segment => options
|
||||
.with_model(&args.model.unwrap_or("yolov5n-seg-dyn.onnx".to_string()))?,
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.version),
|
||||
}
|
||||
}
|
||||
YOLOVersion::V6 => match args.task {
|
||||
YOLOTask::Detect => options
|
||||
let (options, saveout) = match args.ver {
|
||||
YOLOVersion::V5 => match args.task {
|
||||
YOLOTask::Classify => (
|
||||
options.with_model(&args.model.unwrap_or("yolov5n-cls-dyn.onnx".to_string()))?,
|
||||
"YOLOv5-Classify",
|
||||
),
|
||||
YOLOTask::Detect => (
|
||||
options.with_model(&args.model.unwrap_or("yolov5n-dyn.onnx".to_string()))?,
|
||||
"YOLOv5-Detect",
|
||||
),
|
||||
YOLOTask::Segment => (
|
||||
options.with_model(&args.model.unwrap_or("yolov5n-seg-dyn.onnx".to_string()))?,
|
||||
"YOLOv5-Segment",
|
||||
),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.ver),
|
||||
},
|
||||
YOLOVersion::V6 => match args.task {
|
||||
YOLOTask::Detect => (
|
||||
options
|
||||
.with_model(&args.model.unwrap_or("yolov6n-dyn.onnx".to_string()))?
|
||||
.with_nc(args.nc),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.version),
|
||||
},
|
||||
YOLOVersion::V7 => match args.task {
|
||||
YOLOTask::Detect => options
|
||||
"YOLOv6-Detect",
|
||||
),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.ver),
|
||||
},
|
||||
YOLOVersion::V7 => match args.task {
|
||||
YOLOTask::Detect => (
|
||||
options
|
||||
.with_model(&args.model.unwrap_or("yolov7-tiny-dyn.onnx".to_string()))?
|
||||
.with_nc(args.nc),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.version),
|
||||
},
|
||||
YOLOVersion::V8 => {
|
||||
match args.task {
|
||||
YOLOTask::Classify => options
|
||||
.with_model(&args.model.unwrap_or("yolov8m-cls-dyn.onnx".to_string()))?,
|
||||
YOLOTask::Detect => {
|
||||
options.with_model(&args.model.unwrap_or("yolov8m-dyn.onnx".to_string()))?
|
||||
}
|
||||
YOLOTask::Segment => options
|
||||
.with_model(&args.model.unwrap_or("yolov8m-seg-dyn.onnx".to_string()))?,
|
||||
YOLOTask::Pose => options
|
||||
.with_model(&args.model.unwrap_or("yolov8m-pose-dyn.onnx".to_string()))?,
|
||||
YOLOTask::Obb => options
|
||||
.with_model(&args.model.unwrap_or("yolov8m-obb-dyn.onnx".to_string()))?,
|
||||
}
|
||||
}
|
||||
YOLOVersion::V9 => match args.task {
|
||||
YOLOTask::Detect => options
|
||||
.with_model(&args.model.unwrap_or("yolov9-c-dyn-f16.onnx".to_string()))?,
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.version),
|
||||
},
|
||||
YOLOVersion::V10 => match args.task {
|
||||
YOLOTask::Detect => {
|
||||
options.with_model(&args.model.unwrap_or("yolov10n.onnx".to_string()))?
|
||||
}
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.version),
|
||||
},
|
||||
YOLOVersion::RTDETR => match args.task {
|
||||
YOLOTask::Detect => {
|
||||
options.with_model(&args.model.unwrap_or("rtdetr-l-f16.onnx".to_string()))?
|
||||
}
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.version),
|
||||
},
|
||||
}
|
||||
.with_yolo_version(args.version)
|
||||
"YOLOv7-Detect",
|
||||
),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.ver),
|
||||
},
|
||||
YOLOVersion::V8 => match args.task {
|
||||
YOLOTask::Classify => (
|
||||
options.with_model(&args.model.unwrap_or("yolov8m-cls-dyn.onnx".to_string()))?,
|
||||
"YOLOv8-Classify",
|
||||
),
|
||||
YOLOTask::Detect => (
|
||||
options.with_model(&args.model.unwrap_or("yolov8m-dyn.onnx".to_string()))?,
|
||||
"YOLOv8-Detect",
|
||||
),
|
||||
YOLOTask::Segment => (
|
||||
options.with_model(&args.model.unwrap_or("yolov8m-seg-dyn.onnx".to_string()))?,
|
||||
"YOLOv8-Segment",
|
||||
),
|
||||
YOLOTask::Pose => (
|
||||
options.with_model(&args.model.unwrap_or("yolov8m-pose-dyn.onnx".to_string()))?,
|
||||
"YOLOv8-Pose",
|
||||
),
|
||||
YOLOTask::Obb => (
|
||||
options.with_model(&args.model.unwrap_or("yolov8m-obb-dyn.onnx".to_string()))?,
|
||||
"YOLOv8-Obb",
|
||||
),
|
||||
},
|
||||
YOLOVersion::V9 => match args.task {
|
||||
YOLOTask::Detect => (
|
||||
options.with_model(&args.model.unwrap_or("yolov9-c-dyn-f16.onnx".to_string()))?,
|
||||
"YOLOv9-Detect",
|
||||
),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.ver),
|
||||
},
|
||||
YOLOVersion::V10 => match args.task {
|
||||
YOLOTask::Detect => (
|
||||
options.with_model(&args.model.unwrap_or("yolov10n.onnx".to_string()))?,
|
||||
"YOLOv10-Detect",
|
||||
),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.ver),
|
||||
},
|
||||
YOLOVersion::RTDETR => match args.task {
|
||||
YOLOTask::Detect => (
|
||||
options.with_model(&args.model.unwrap_or("rtdetr-l-f16.onnx".to_string()))?,
|
||||
"RTDETR",
|
||||
),
|
||||
t => anyhow::bail!("Task: {t:?} is unsupported for {:?}", args.ver),
|
||||
},
|
||||
};
|
||||
|
||||
let options = options
|
||||
.with_yolo_version(args.ver)
|
||||
.with_yolo_task(args.task);
|
||||
|
||||
// device
|
||||
@ -152,6 +176,7 @@ fn main() -> Result<()> {
|
||||
.with_confs(&[0.2, 0.15]) // class_0: 0.4, others: 0.15
|
||||
// .with_names(&coco::NAMES_80)
|
||||
.with_names2(&coco::KEYPOINTS_NAMES_17)
|
||||
.with_find_contours(!args.no_contours) // find contours or not
|
||||
.with_profile(args.profile);
|
||||
let mut model = YOLO::new(options)?;
|
||||
|
||||
@ -163,9 +188,9 @@ fn main() -> Result<()> {
|
||||
// build annotator
|
||||
let annotator = Annotator::default()
|
||||
.with_skeletons(&coco::SKELETONS_16)
|
||||
.with_bboxes_thickness(7)
|
||||
.without_masks(true) // No masks plotting.
|
||||
.with_saveout("YOLO-Series");
|
||||
.with_bboxes_thickness(4)
|
||||
.without_masks(true) // No masks plotting when doing segment task.
|
||||
.with_saveout(saveout);
|
||||
|
||||
// run & annotate
|
||||
for (xs, _paths) in dl {
|
||||
|
Reference in New Issue
Block a user