尺寸標注識別5 實例分割 roboflow | result.boxes獲取邊界框 | yolov8n-seg架構 torchinfo | 對直線關系不敏感

?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在儲能網絡中的應用,傳統方案如何借力智能化升級?(附網絡架構圖)

一、儲能網絡的建設挑戰在儲能項目中,網絡系統通常需要實現以下目標:高可靠性:實時采集和傳輸儲能設備狀態數據,鏈路中斷可能導致系統故障。靈活擴展:分布式站點部署廣泛,傳統網絡擴展需重新鋪設線路&#…