https://gitee.com/njsgcs/yolo-local

单标注一个尺寸线

100轮就百分百了 

Sign in to Roboflow

有混起来的问题

roboflow训练用的cocon-seg模型我网上找不到 

上面这种比较麻烦

 

text的中心要在dt范围内

屏幕点以下等同于按下save(enter)

取最长线段作为dt的长度 

按下drag tool中键可以移动,左键也可以

{"predictions": [{"x": 184,"y": 91.5,"width": 28,"height": 15,"confidence": 0.917,"class": "text","points": [{"x": 170.5,"y": 84.711},{"x": 170.5,"y": 99.248},{"x": 197.78,"y": 99.248},{"x": 197.78,"y": 84.711}],"class_id": 1,"detection_id": "8521534d-0755-4bd3-aea0-090637b5a3a4"},{"x": 286.5,"y": 163.5,"width": 27,"height": 15,"confidence": 0.881,"class": "text","points": [{"x": 273.42,"y": 155.889},{"x": 273.42,"y": 170.425},{"x": 292.64,"y": 170.425},{"x": 293.26,"y": 169.924},{"x": 294.5,"y": 169.924},{"x": 295.12,"y": 170.425},{"x": 298.22,"y": 170.425},{"x": 299.46,"y": 169.423},{"x": 299.46,"y": 155.889}],"class_id": 1,"detection_id": "b512339a-77d5-4b44-a63f-f0465cfd5a84"},{"x": 286,"y": 319.5,"width": 20,"height": 13,"confidence": 0.817,"class": "text","points": [{"x": 275.9,"y": 313.783},{"x": 275.9,"y": 326.314},{"x": 295.74,"y": 326.314},{"x": 295.74,"y": 313.783}],"class_id": 1,"detection_id": "84de0494-8e1c-4f1e-98d2-371acbe967bf"},{"x": 362.5,"y": 268,"width": 27,"height": 14,"confidence": 0.815,"class": "text","points": [{"x": 349.68,"y": 261.151},{"x": 349.68,"y": 274.685},{"x": 375.1,"y": 274.685},{"x": 375.1,"y": 261.151}],"class_id": 1,"detection_id": "29c6d5a3-5c5c-4a2e-af99-66d53875030c"},{"x": 152,"y": 266.5,"width": 20,"height": 15,"confidence": 0.809,"class": "text","points": [{"x": 143.22,"y": 259.648},{"x": 143.22,"y": 260.149},{"x": 142.6,"y": 260.65},{"x": 142.6,"y": 272.179},{"x": 143.22,"y": 272.179},{"x": 143.84,"y": 272.68},{"x": 146.32,"y": 272.68},{"x": 146.94,"y": 273.181},{"x": 157.48,"y": 273.181},{"x": 158.1,"y": 272.68},{"x": 158.1,"y": 271.176},{"x": 158.72,"y": 270.675},{"x": 158.72,"y": 269.673},{"x": 159.96,"y": 268.67},{"x": 161.82,"y": 268.67},{"x": 161.82,"y": 260.149},{"x": 161.2,"y": 259.648}],"class_id": 1,"detection_id": "abdabdf3-2e20-4f64-be9f-c6d741f0dd15"},{"x": 286.5,"y": 163.5,"width": 7,"height": 85,"confidence": 0.688,"class": "dt","points": [{"x": 283.34,"y": 120.801},{"x": 283.34,"y": 206.014},{"x": 289.54,"y": 206.014},{"x": 289.54,"y": 120.801}],"class_id": 0,"detection_id": "5ee057ba-a8fa-438a-af2a-238b327efa9b"},{"x": 363.5,"y": 268,"width": 53,"height": 6,"confidence": 0.675,"class": "dt","points": [{"x": 337.28,"y": 265.663},{"x": 337.28,"y": 270.675},{"x": 360.22,"y": 270.675},{"x": 360.84,"y": 270.174},{"x": 372.62,"y": 270.174},{"x": 373.24,"y": 270.675},{"x": 388.12,"y": 270.675},{"x": 389.36,"y": 269.673},{"x": 389.36,"y": 265.663}],"class_id": 0,"detection_id": "0fa3e6b6-df95-490b-ac40-02f1be87ed97"},{"x": 286.5,"y": 318.5,"width": 7,"height": 37,"confidence": 0.663,"class": "dt","points": [{"x": 283.34,"y": 300.249},{"x": 283.34,"y": 336.84},{"x": 289.54,"y": 336.84},{"x": 289.54,"y": 300.249}],"class_id": 0,"detection_id": "86198722-579d-4f07-a285-acf774afddc2"},{"x": 186,"y": 92.5,"width": 146,"height": 7,"confidence": 0.62,"class": "dt","points": [{"x": 114.08,"y": 89.223},{"x": 114.08,"y": 95.739},{"x": 170.5,"y": 95.739},{"x": 171.12,"y": 95.238},{"x": 180.42,"y": 95.238},{"x": 181.04,"y": 95.739},{"x": 256.68,"y": 95.739},{"x": 257.92,"y": 94.736},{"x": 257.92,"y": 89.223},{"x": 204.6,"y": 89.223},{"x": 203.98,"y": 89.724},{"x": 194.06,"y": 89.724},{"x": 193.44,"y": 89.223}],"class_id": 0,"detection_id": "e10c9e2a-415d-44c5-a6eb-1981e7f71aa7"},{"x": 152.5,"y": 265,"width": 19,"height": 6,"confidence": 0.552,"class": "dt","points": [{"x": 143.22,"y": 264.66},{"x": 143.22,"y": 268.169},{"x": 159.96,"y": 268.169},{"x": 160.58,"y": 267.668},{"x": 161.82,"y": 267.668},{"x": 161.82,"y": 265.161},{"x": 161.2,"y": 265.161},{"x": 160.58,"y": 264.66}],"class_id": 0,"detection_id": "f02982c1-fa5d-466c-b7fb-d1701a51543f"}]
}

大部分问题不大 

 

缺少交叉标注训练集 

这块确实难识别 

 

我需要一个带关键点检测或者关键线检测的实例分割模型 

 

from ultralytics import YOLO
import cv2# 加载模型
model = YOLO('runs/segment/train6/weights/best.pt')# 评估模型性能(可选)
metrics = model.predict(task='segment')# 执行图像上的目标检测
results = model("datasets/Drawing Annotation Recognition8.v1i.yolov12/valid/images/""Snipaste_2025-07-12_15-08-24_png.rf.0931b009a94871a6be21f7572200f9f7.jpg", task='segment')# 遍历结果并绘制
for result in results:# 获取分割掩码masks = result.masksif masks is not None:print("Segmentation Masks:", masks)# 绘制检测结果annotated_frame = result.plot()  # 使用plot方法绘制结果# 显示图像cv2.imshow('Detection Result', annotated_frame)cv2.waitKey(0)  # 按任意键关闭窗口cv2.destroyAllWindows()

 

画出几何中心 

result.boxes可以获取边界框

from ultralytics import YOLO
import cv2# 加载模型
model = YOLO('runs/segment/train6/weights/best.pt')# 图像路径
img_path = "datasets/Drawing Annotation Recognition8.v1i.yolov12/valid/images/" \"Snipaste_2025-07-12_15-08-24_png.rf.0931b009a94871a6be21f7572200f9f7.jpg"# 推理
results = model(img_path, task='segment')# 读取原始图像
im0 = cv2.imread(img_path)for result in results:# 获取边界框boxes = result.boxes.xyxy  # [x1, y1, x2, y2]for box in boxes:x1, y1, x2, y2 = map(int, box)center_x = (x1 + x2) // 2center_y = (y1 + y2) // 2# 绘制边界框cv2.rectangle(im0, (x1, y1), (x2, y2), (0, 255, 0), 2)# 绘制中心点cv2.circle(im0, (center_x, center_y), 5, (0, 0, 255), -1)  # 红色实心圆点# 或者使用分割掩码计算质心if result.masks is not None:for mask in result.masks.xy:# 计算掩码的最小外接矩形x, y, w, h = cv2.boundingRect(mask.astype(int))center_x = x + w // 2center_y = y + h // 2cv2.circle(im0, (center_x, center_y), 5, (255, 0, 0), -1)  # 蓝色实心圆点# 显示或保存图像
cv2.imshow('Detection with Center', im0)
cv2.waitKey(0)
cv2.destroyAllWindows()
# cv2.imwrite('output_with_center.jpg', im0)

 

SegmentationModel((model): Sequential((0): Conv((conv): Conv2d(3, 16, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(16, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(16, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): C2f((cv1): Conv((conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(48, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0): Bottleneck((cv1): Conv((conv): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(16, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(16, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(3): Conv((conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(4): C2f((cv1): Conv((conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0-1): 2 x Bottleneck((cv1): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(5): Conv((conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(6): C2f((cv1): Conv((conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0-1): 2 x Bottleneck((cv1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(7): Conv((conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(256, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(8): C2f((cv1): Conv((conv): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(256, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(384, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(256, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0): Bottleneck((cv1): Conv((conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(9): SPPF((cv1): Conv((conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(256, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): MaxPool2d(kernel_size=5, stride=1, padding=2, dilation=1, ceil_mode=False))(10): Upsample(scale_factor=2.0, mode='nearest')(11): Concat()(12): C2f((cv1): Conv((conv): Conv2d(384, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(192, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0): Bottleneck((cv1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(13): Upsample(scale_factor=2.0, mode='nearest')(14): Concat()(15): C2f((cv1): Conv((conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(96, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0): Bottleneck((cv1): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(16): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(17): Concat()(18): C2f((cv1): Conv((conv): Conv2d(192, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(192, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0): Bottleneck((cv1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(19): Conv((conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(20): Concat()(21): C2f((cv1): Conv((conv): Conv2d(384, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(256, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(384, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(256, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(m): ModuleList((0): Bottleneck((cv1): Conv((conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv2): Conv((conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(128, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))))(22): Segment((cv2): ModuleList((0): Sequential((0): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)))(1): Sequential((0): Conv((conv): Conv2d(128, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)))(2): Sequential((0): Conv((conv): Conv2d(256, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1))))(cv3): ModuleList((0): Sequential((0): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(64, 2, kernel_size=(1, 1), stride=(1, 1)))(1): Sequential((0): Conv((conv): Conv2d(128, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(64, 2, kernel_size=(1, 1), stride=(1, 1)))(2): Sequential((0): Conv((conv): Conv2d(256, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(64, 2, kernel_size=(1, 1), stride=(1, 1))))(dfl): DFL((conv): Conv2d(16, 1, kernel_size=(1, 1), stride=(1, 1), bias=False))(proto): Proto((cv1): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(upsample): ConvTranspose2d(64, 64, kernel_size=(2, 2), stride=(2, 2))(cv2): Conv((conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(cv3): Conv((conv): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True)))(cv4): ModuleList((0): Sequential((0): Conv((conv): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1)))(1): Sequential((0): Conv((conv): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1)))(2): Sequential((0): Conv((conv): Conv2d(256, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(1): Conv((conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(bn): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)(act): SiLU(inplace=True))(2): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1))))))
)
====================================================================================================
Layer (type:depth-idx)                             Output Shape              Param #
====================================================================================================
SegmentationModel                                  [1, 38, 8400]             --
├─Sequential: 1-1                                  --                        --
│    └─Conv: 2-1                                   [1, 16, 320, 320]         --
│    │    └─Conv2d: 3-1                            [1, 16, 320, 320]         (432)
│    │    └─BatchNorm2d: 3-2                       [1, 16, 320, 320]         (32)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Conv: 2-3                                   [1, 32, 160, 160]         --
│    │    └─Conv2d: 3-4                            [1, 32, 160, 160]         (4,608)
│    │    └─BatchNorm2d: 3-5                       [1, 32, 160, 160]         (64)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-5                                    [1, 32, 160, 160]         6,272
│    │    └─Conv: 3-7                              [1, 32, 160, 160]         (1,088)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-11                                   --                        (recursive)
│    │    └─ModuleList: 3-11                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-11                                   --                        (recursive)
│    │    └─ModuleList: 3-11                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-11                                   --                        (recursive)
│    │    └─Conv: 3-13                             [1, 32, 160, 160]         (1,600)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Conv: 2-13                                  [1, 64, 80, 80]           --
│    │    └─Conv2d: 3-15                           [1, 64, 80, 80]           (18,432)
│    │    └─BatchNorm2d: 3-16                      [1, 64, 80, 80]           (128)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-15                                   [1, 64, 80, 80]           45,440
│    │    └─Conv: 3-18                             [1, 64, 80, 80]           (4,224)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-25                                   --                        (recursive)
│    │    └─ModuleList: 3-26                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-25                                   --                        (recursive)
│    │    └─ModuleList: 3-26                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-25                                   --                        (recursive)
│    │    └─ModuleList: 3-26                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-25                                   --                        (recursive)
│    │    └─ModuleList: 3-26                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-25                                   --                        (recursive)
│    │    └─Conv: 3-28                             [1, 64, 80, 80]           (8,320)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Conv: 2-27                                  [1, 128, 40, 40]          --
│    │    └─Conv2d: 3-30                           [1, 128, 40, 40]          (73,728)
│    │    └─BatchNorm2d: 3-31                      [1, 128, 40, 40]          (256)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-29                                   [1, 128, 40, 40]          180,992
│    │    └─Conv: 3-33                             [1, 128, 40, 40]          (16,640)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-39                                   --                        (recursive)
│    │    └─ModuleList: 3-41                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-39                                   --                        (recursive)
│    │    └─ModuleList: 3-41                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-39                                   --                        (recursive)
│    │    └─ModuleList: 3-41                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-39                                   --                        (recursive)
│    │    └─ModuleList: 3-41                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-39                                   --                        (recursive)
│    │    └─Conv: 3-43                             [1, 128, 40, 40]          (33,024)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Conv: 2-41                                  [1, 256, 20, 20]          --
│    │    └─Conv2d: 3-45                           [1, 256, 20, 20]          (294,912)
│    │    └─BatchNorm2d: 3-46                      [1, 256, 20, 20]          (512)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-43                                   [1, 256, 20, 20]          394,240
│    │    └─Conv: 3-48                             [1, 256, 20, 20]          (66,048)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-49                                   --                        (recursive)
│    │    └─ModuleList: 3-52                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-49                                   --                        (recursive)
│    │    └─ModuleList: 3-52                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-49                                   --                        (recursive)
│    │    └─Conv: 3-54                             [1, 256, 20, 20]          (98,816)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─SPPF: 2-51                                  [1, 256, 20, 20]          131,584
│    │    └─Conv: 3-56                             [1, 128, 20, 20]          (33,024)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─SPPF: 2-53                                  --                        (recursive)
│    │    └─MaxPool2d: 3-58                        [1, 128, 20, 20]          --
│    │    └─MaxPool2d: 3-59                        [1, 128, 20, 20]          --
│    │    └─MaxPool2d: 3-60                        [1, 128, 20, 20]          --
│    │    └─Conv: 3-61                             [1, 256, 20, 20]          (131,584)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Upsample: 2-55                              [1, 256, 40, 40]          --
│    └─Concat: 2-56                                [1, 384, 40, 40]          --
│    └─C2f: 2-57                                   [1, 128, 40, 40]          98,816
│    │    └─Conv: 3-63                             [1, 128, 40, 40]          (49,408)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-63                                   --                        (recursive)
│    │    └─ModuleList: 3-67                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-63                                   --                        (recursive)
│    │    └─ModuleList: 3-67                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-63                                   --                        (recursive)
│    │    └─Conv: 3-69                             [1, 128, 40, 40]          (24,832)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Upsample: 2-65                              [1, 128, 80, 80]          --
│    └─Concat: 2-66                                [1, 192, 80, 80]          --
│    └─C2f: 2-67                                   [1, 64, 80, 80]           24,832
│    │    └─Conv: 3-71                             [1, 64, 80, 80]           (12,416)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-73                                   --                        (recursive)
│    │    └─ModuleList: 3-75                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-73                                   --                        (recursive)
│    │    └─ModuleList: 3-75                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-73                                   --                        (recursive)
│    │    └─Conv: 3-77                             [1, 64, 80, 80]           (6,272)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Conv: 2-75                                  [1, 64, 40, 40]           --
│    │    └─Conv2d: 3-79                           [1, 64, 40, 40]           (36,864)
│    │    └─BatchNorm2d: 3-80                      [1, 64, 40, 40]           (128)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Concat: 2-77                                [1, 192, 40, 40]          --
│    └─C2f: 2-78                                   [1, 128, 40, 40]          98,816
│    │    └─Conv: 3-82                             [1, 128, 40, 40]          (24,832)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-84                                   --                        (recursive)
│    │    └─ModuleList: 3-86                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-84                                   --                        (recursive)
│    │    └─ModuleList: 3-86                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-84                                   --                        (recursive)
│    │    └─Conv: 3-88                             [1, 128, 40, 40]          (24,832)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Conv: 2-86                                  [1, 128, 20, 20]          --
│    │    └─Conv2d: 3-90                           [1, 128, 20, 20]          (147,456)
│    │    └─BatchNorm2d: 3-91                      [1, 128, 20, 20]          (256)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Concat: 2-88                                [1, 384, 20, 20]          --
│    └─C2f: 2-89                                   [1, 256, 20, 20]          394,240
│    │    └─Conv: 3-93                             [1, 256, 20, 20]          (98,816)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-95                                   --                        (recursive)
│    │    └─ModuleList: 3-97                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-95                                   --                        (recursive)
│    │    └─ModuleList: 3-97                       --                        (recursive)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─C2f: 2-95                                   --                        (recursive)
│    │    └─Conv: 3-99                             [1, 256, 20, 20]          (98,816)
│    └─Segment: 2-96                               --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    └─Segment: 2-97                               [1, 38, 8400]             --
│    │    └─Proto: 3-101                           [1, 32, 160, 160]         (92,544)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─Proto: 3-105                           --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─Proto: 3-105                           --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-131                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─ModuleList: 3-135                      --                        (recursive)
│    │    └─ModuleList: 3-136                      --                        (recursive)
│    │    └─DFL: 3-137                             [1, 4, 8400]              (16)
====================================================================================================
Total params: 5,423,852
Trainable params: 0
Non-trainable params: 5,423,852
Total mult-adds (Units.GIGABYTES): 5.99
====================================================================================================
Input size (MB): 4.92
Forward/backward pass size (MB): 292.35
Params size (MB): 13.06
Estimated Total Size (MB): 310.32
====================================================================================================

 

from ultralytics import YOLO
import cv2
from torchinfo import summary#micromamba activate ./.venv
#tensorboard --logdir=runs
# 加载模型
model = YOLO('runs/segment/train6/weights/best.pt')summary(model.model, input_size=(1, 3, 640, 640))
# 图像路径
img_path = "datasets/Drawing Annotation Recognition8.v1i.yolov12/valid/images/" \"Snipaste_2025-07-12_15-08-24_png.rf.0931b009a94871a6be21f7572200f9f7.jpg"
# img_path = "datasets/Drawing Annotation Recognition8.v1i.yolov12/test/images/" \
#            "Snipaste_2025-07-12_19-54-54_png.rf.a562ea098219605eff9cb4ce58f09d0e.jpg"# 推理
results = model(img_path, task='segment', conf=0.2)# 读取原始图像
im0 = cv2.imread(img_path)for result in results:# 获取边界框boxes = result.boxes.xyxy  # [x1, y1, x2, y2]for box in boxes:x1, y1, x2, y2 = map(int, box)center_x = (x1 + x2) // 2center_y = (y1 + y2) // 2# 绘制边界框cv2.rectangle(im0, (x1, y1), (x2, y2), (0, 255, 0), 2)# 绘制中心点cv2.circle(im0, (center_x, center_y), 5, (0, 0, 255), -1)  # 红色实心圆点# 显示或保存图像
cv2.imshow('Detection with Center', im0)
cv2.waitKey(0)
cv2.destroyAllWindows()
# cv2.imwrite('output_with_center.jpg', im0)

这个架构好像对直线关系不敏感

我怀疑是数据集不够大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89329.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89329.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89329.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

敏捷开发卡在需求分析?飞算 JavaAI 加速需求确认与功能迭代

在敏捷开发中,需求分析常成为团队推进的 “卡点”—— 模糊的需求描述、反复的需求变更、拆解落地难等问题,往往导致迭代周期延长。而飞算 JavaAI 作为专为 Java 开发设计的工具,正通过 “需求理解 - 接口设计 - 代码生成” 的全流程智能化&a…

QT跨平台应用程序开发框架(10)—— Qt窗口

目录 一,关于窗口 二,菜单栏 2.1 菜单介绍 2.2 添加菜单 2.3 添加快捷键 2.4 添加其子菜单 2.5 添加分割线和图标 三,工具栏 3.1 添加和使用工具栏 3.2 设置位置属性 四,状态栏 五,浮动窗口 六,对话框 6.1 …

git从本地仓库添加到远程仓库

先创建,然后配置 Git 的全局用户名和邮箱git config --global user.name "不吃糖o" git config --global user.email "1523944556qq.com" git config --global -l 查看设置的用户名和邮箱如何生成SSH公钥?ssh-keygen 生成sshkeyls ~…

锁步核,为什么叫锁步核?

“锁步核”(Lockstep Cores)这一名称源于其工作原理与军事队列行进中的“锁步”(Lockstep)动作的类比。以下是详细的说明整理:1. 军事起源:什么是“锁步”? 在传统军事训练中,“锁步…

python学智能算法(二十二)|SVM-点与超平面的距离

引言 前序学习进程中,了解了向量、向量点积运算、超平面、感知机等知识点。 SVM算法最核心的目标是通过规划租号的分割超平面,来使得超平面附近的点到超平面的距离和达到最大值。 那点和超平面的距离如何计算,就是今天学习的重点。 点与超平…

参会邀请!2025世界人工智能大会合合信息技术交流日报名启动!

2025世界人工智能大会即将开幕,合合信息邀请您一起参与KOL深度技术交流活动。本次活动不仅可以带您逛展2025世界人工智能大会,在合合信息展台体验AI黑科技,还可以与行业顶尖技术专家面对面交流,共同探讨当下热门AI安全话题。 详细…

零基础入门:用C++从零实现TCP Socket网络小工具

个人主页:chian-ocean 文章专栏-Linux 前言: 网络编程中的套接字(Socket)是通信的基本接口,允许不同计算机之间通过网络交换数据。套接字是计算机网络中通信的“端点”,通过它,应用程序可以与…

SOES:软实现EtherCAT从站协议栈项目介绍及从站开发案例

在现代工业自动化领域,EtherCAT(Ethernet for Control Automation Technology)以其高速、实时和开放的特性,成为现场总线通信的主流协议之一。EtherCAT网络中,主站(Master)负责调度和管理&#…

[simdjson] 填充字符串 | `document` 对象 | on-demand 模式

第二章:填充字符串 在第一章解析器中,我们学习了simdjson::dom::parser和simdjson::ondemand::parser作为可复用内存的JSON解析工具。 本章将深入解析JSON数据输入的核心要求——“填充字符串”。 为何需要填充? simdjson通过SIMD&#x…

扭蛋机小程序开发:开启线上娱乐新风尚

在当今数字化浪潮席卷的时代,娱乐方式正经历着前所未有的变革。传统的扭蛋机,那充满惊喜与期待的实体装置,曾是无数人童年回忆中的欢乐源泉。如今,随着科技的飞速发展,扭蛋机小程序开发应运而生,将这份经典…

【React Native】布局和 Stack 、Slot

布局和Stack 点击链接后,页面切换时最好是有动画效果。页面一般都有头部,里面有页面的标题之类的东西。 在app目录里,新建一个_layout.js文件,这是项目的布局文件。 这个名字是固定的,前面必须有一个_ 。 布局的意…

3C电子产品蓝光三维扫描检测方案-中科米堆CASAIM

随着3C电子产品向轻薄化、精密化方向发展,传统的二维检测技术已难以满足现代制造业对产品精度的高标准要求。特别是在智能手机、平板电脑等消费电子领域,微小的结构偏差都可能导致产品组装困难或性能下降。当前行业内普遍面临检测效率低、数据采集不完整…

Docker 镜像原理

Union FS(联合文件系统) Union File System 是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS 是一种为 Linux,FreeBSD 和 NetBSD 操作系统…

为什么IoTDB成为物联网场景的技术优选?

在物联网、工业监控等领域,时序数据的高效管理成为技术架构设计的关键环节。时序数据库作为专门处理带时间戳数据的系统,其选型需兼顾性能、兼容性与场景适配性。本文将从技术角度解析 IoTDB 的设计理念与实践方法,为时序数据库选型提供参考。…

js中的微任务和宏任务的理解

在JavaScript中,微任务(Microtask)和宏任务(Macrotask)是异步任务执行机制的重要组成部分,它们共同构成了JavaScript事件循环(Event Loop)的核心逻辑。理解这两个概念对于编写高性能…

Spring-AI系列-AI模型-Model

原文-知识库,欢迎大家评论互动 AI Model API Portable ModelAPI across AI providers for Chat, Text to Image, Audio Transcription, Text to Speech, and Embedding models. Both synchronous and stream API options are supported. Dropping down to access mo…

MySQL查询今天、昨天、上周、近30天、去年等的数据的方法

目录 常用的MySQL查询今天、昨天、上周、近30天、去年等数据的方法 0、Sql server中DateDiff()用法 1、MySQL的DATE_SUB()函数 定义和用法 语法 实例 2、MySQL的TO_DAYS(date) 3、MySQL的DATE() 函数 定义和用法 4、MySQL NOW() 函数 定义和用法 语法 实例 例子 …

Linux —— B / 基础开发工具

一、软件包管理器1.1什么是软件包1.2 Linux软件生态1.3 yum具体操作1.3.1 查看软件包1.3.2 安装软件1.3.3 卸载软件1.3.4 注意事项1.4 安装源二、编辑器Vim2-1 Linux编辑器-vim使用2-2 vim的基本概念2-3 vim的基本操作2-4 vim正常模式命令集2-5 vim末行模式命令集2-6 vim操作总…

SQL,在join中,on和where的区别

0.结论 两个表在,join时,首先做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。 先on,再join,再…

SD-WAN在储能网络中的应用,传统方案如何借力智能化升级?(附网络架构图)

一、储能网络的建设挑战在储能项目中,网络系统通常需要实现以下目标:高可靠性:实时采集和传输储能设备状态数据,链路中断可能导致系统故障。灵活扩展:分布式站点部署广泛,传统网络扩展需重新铺设线路&#…