Skip to main content

AI-POWERED DOCS

What do you want to know?

Đo lường (Kiểm tra kích thước)

Khối Measurement biến OV80i từ một thiết bị phát hiện lỗi thành một trạm kiểm tra kích thước. Thay vì hỏi "bộ phận này tốt hay xấu?", nó hỏi "đường kính, khe hở, hoặc góc của bộ phận này là bao nhiêu, tính bằng milimét?" — và cung cấp cho bạn một con số mà bạn có thể đánh giá pass/fail theo dung sai.

Bạn phải sử dụng ống kính telecentric

Không chạy recipe Measurement với ống kính C-mount tiêu chuẩn (entocentric). Ống kính tiêu chuẩn gây ra méo phối cảnh và thay đổi độ phóng đại theo khoảng cách làm việc — một bộ phận nằm gần camera hơn 1 mm sẽ đo được lớn hơn đáng kể, và các đặc điểm gần mép khung hình sẽ đo khác với các đặc điểm ở trung tâm. Các con số bạn nhận được sẽ sai lệch lớn hơn dung sai thông thường, và không có bước hiệu chuẩn nào có thể khắc phục điều này.

Một ống kính telecentric giữ độ phóng đại không đổi trên toàn bộ trường nhìn và qua các biến thiên nhỏ của khoảng cách làm việc. Đây là phần cứng duy nhất giúp kiểm tra kích thước thực sự chính xác.

Nếu hệ thống lắp đặt của bạn không có ống kính telecentric, hãy dừng lại tại đây — chuyển sang Classification hoặc Segmentation để kiểm tra theo kiểu pass/fail, hoặc liên hệ support@overview.ai để được tư vấn quang học phù hợp trước khi tiếp tục.

Bên dưới, một mô hình deep-learning tìm các primitive features trong hình ảnh (cạnh, hình tròn, đoạn thẳng, cung tròn) và sau đó tính toán các phép đo giữa hoặc về các primitive đó (bán kính của một lỗ, khoảng cách giữa hai cạnh, góc giữa hai đường thẳng). Vì camera được hiệu chuẩn theo px/mm, mọi kết quả đều được đưa ra theo đơn vị thực tế.

Recipe Measurement trong danh sách All Recipes

Mục tiêu học tập

Sau khi hoàn thành trang này, bạn sẽ có thể:

  • Quyết định khi nào Measurement là khối phù hợp (so với Classification hoặc Segmentation)
  • Hiệu chuẩn camera để một pixel ánh xạ tới một giá trị milimét đã biết
  • Vẽ các primitive (hình tròn, đường thẳng, điểm, cung tròn) trên bộ phận và biến chúng thành các phép đo (bán kính, khoảng cách, góc)
  • Chụp và gán nhãn hình ảnh huấn luyện để mô hình Measurement học cách tìm các primitive một cách đáng tin cậy
  • Huấn luyện, kiểm tra và triển khai một mô hình Measurement
  • Kết nối kết quả vào logic pass/fail và đọc chúng trên bảng điều khiển vận hành trên màn hình của camera (HMI, viết tắt của Human-Machine Interface)

Khi nào sử dụng Measurement

Trường hợp sử dụngKhối phù hợp
Đường kính lỗ có nằm trong khoảng 9.0 ± 0.1 mm không?Measurement
Khe hở giữa hai bộ phận có dưới 0.5 mm không?Measurement
Giá đỡ này được uốn cong ở góc nào?Measurement
Nhãn có hiện diện hay bị thiếu?Classification
Có vết xước trên bề mặt không?Segmentation
Văn bản trên bộ phận ghi gì?OCR

Measurement là công cụ phù hợp bất cứ khi nào một hệ thống hạ nguồn cần một con số theo đơn vị vật lý thay vì một nhãn phân loại. Nếu bảng thông số kỹ thuật của bạn có ghi dung sai, bạn cần Measurement.

Measurement so với Segmentation cho việc kiểm tra kích thước

Segmentation có thể cung cấp cho bạn diện tích của một đặc điểm tính bằng pixel, nhưng nó không bám vào cạnh với độ chính xác cấp sub-pixel và không cung cấp các primitive hình học. Nếu bạn chỉ cần biết "vết bẩn có lớn hơn X cm² không", segmentation có thể đủ. Nếu bạn cần "bán kính của lỗ này là 4.31 mm", hãy sử dụng Measurement.

Cách Measurement hoạt động

Pipeline Measurement gồm bốn giai đoạn, theo thứ tự:

  1. Capture and align. Camera được kích hoạt, chụp một khung hình và chạy aligner để khóa bộ phận về hướng của template. Mọi phép đo đều được tính trong khung đã được căn chỉnh, vì vậy một bộ phận bị xoay 10° vẫn cho kết quả đo như nhau.
  2. Detect primitives. Mô hình Measurement đã được huấn luyện sẽ tìm bên trong mỗi ROI (Region of Interest — hình chữ nhật bạn vẽ trên hình ảnh để báo cho camera "nhìn vào đây") và xuất ra các primitive hình học: một edge segment, một arc/circle, hoặc một line. Mỗi recipe có một Main ROI cộng với các Child ROI tùy chọn để phóng to vào các đặc điểm cụ thể.
  3. Compute measurements. Mỗi phép đo bạn đã định nghĩa (ví dụ "Radius of Circle 1", "Distance from Line A to Line B") được đánh giá dựa trên các primitive đã phát hiện. Kết quả được báo cáo bằng milimet (hoặc đơn vị bạn chọn) nhờ vào hiệu chuẩn pixel-to-mm.
  4. Pass/fail and output. Các giá trị được đưa vào khối IO Logic, nơi một hàm Node-RED quyết định PASS hoặc FAIL dựa trên dung sai của bạn, và kết quả được đẩy đến HMI, PLC (bộ điều khiển ở sàn nhà máy), MQTT và bất kỳ hệ thống được kết nối nào khác.
Hiệu ứng thác nước: mỗi giai đoạn phụ thuộc vào giai đoạn trước đó

Nếu imaging không ổn định, alignment sẽ bị trôi. Nếu alignment bị trôi, mô hình sẽ thấy primitive ở một vị trí khác mỗi lần. Nếu phát hiện primitive bị giật, các phép đo sẽ nhiễu. Hãy khắc phục vấn đề ở giai đoạn sớm nhất mà nó xuất hiện. Việc tinh chỉnh lại ngưỡng pass/fail sẽ không sửa được alignment kém, và huấn luyện lại mô hình sẽ không sửa được imaging kém.

Bước 1: Tạo một Measurement recipe

  1. Mở giao diện web OV80i trong trình duyệt (http://<camera-ip>). Thanh bên trái hiển thị All Recipes, Recipe Editor, HMI, v.v.
  2. Nhấp vào All Recipes trên thanh bên trái.
  3. Nhấp vào + New ở góc trên bên phải. Một hộp thoại có tiêu đề Add A New Recipe sẽ mở ra.
  4. Nhập Name (ví dụ Hole_Diameter_Check) và mô tả tùy chọn, sau đó nhấp OK.
  5. Recipe mới xuất hiện trong danh sách. Nhấp Activate trên dòng đó, rồi chọn Activate and go to editor trong hộp thoại xác nhận.
  6. Recipe Editor sẽ mở ra. Trên thanh trên cùng, bên cạnh tên recipe, tìm recipe-type combobox (mặc định là Classification). Nhấp vào nó và chọn Measurement. Hàng AI Blocks trong editor giờ sẽ làm nổi bật khối Measurement sẵn sàng để được cấu hình.

Recipe Editor cho một Measurement recipe — Imaging Setup, Alignment, Inspection, và bốn AI Blocks

Một mô hình Measurement cho mỗi recipe

Mỗi recipe chứa đúng một mô hình Measurement, nhưng mô hình đó có thể mang nhiều primitive và nhiều phép đo trên nhiều Child ROI. Đừng tạo một recipe riêng cho mỗi kích thước — hãy nhóm tất cả các kích thước trên một bộ phận vào một mô hình Measurement để chúng cùng chia sẻ imaging và alignment.

Bước 2: Imaging Setup

Nhấp vào Configure Imaging trong editor để mở Imaging Setup. Đây là cùng một bảng imaging được sử dụng bởi mọi recipe — xem Imaging Setup Fundamentals — với một trách nhiệm bổ sung dành cho Measurement: bộ phận phải được lấy nét rõ ràng, không có motion blur, ở mọi chu kỳ. Độ chính xác cạnh ở mức sub-pixel phụ thuộc vào điều đó.

Imaging Setup ở 3840x2160, Exposure 55.7 ms, Gain 1, Gamma 50

Các cài đặt quan trọng nhất đối với Measurement:

  • Exposure. Đặt sao cho bộ phận được phơi sáng tốt nhưng không bị cháy sáng. Vùng sáng bão hòa sẽ phá hủy chi tiết cạnh.
  • Gain. Giữ gain ở mức 1 nếu có thể. Gain cao hơn sẽ thêm nhiễu, và nhiễu làm dịch chuyển cạnh nửa pixel mỗi lần.
  • Gamma. Mặc định 50 phù hợp với hầu hết các bộ phận. Tăng lên nếu các cạnh tối khó nhìn thấy.
  • Image Rotation. Để ở "No Rotation" trừ khi đồ gá của bạn buộc phải lắp camera nằm ngang.
  • Trigger Settings. Manual HMI Trigger phù hợp cho việc thiết lập. Chuyển sang cảm biến số hoặc trigger từ PLC khi vào sản xuất.
Motion blur âm thầm phá hủy các phép đo

Exposure dài + băng tải đang chạy = cạnh bị mờ. Một blur 2 pixel trên hiệu chuẩn 17 px/mm là sai số ±0.06 mm trước khi bạn bắt đầu. Hoặc đóng băng bộ phận bằng strobe, hoặc giảm exposure đủ thấp để chuyển động trong một khung hình dưới 1 pixel.

Nhấp Save Imaging Settings khi hoàn tất.

Bước 3: Hiệu chuẩn pixel sang milimet

Đây là bước phân biệt Measurement với mọi block khác. Nếu không có hiệu chuẩn, camera chỉ biết về pixel — và mỗi lần lắp đặt, pixel sẽ có kích thước khác nhau. Hiệu chuẩn dạy camera rằng "ngần này pixel trên cảm biến tương đương ngần này milimet trong thế giới thực."

  1. Trong Imaging Setup, nhấp vào Reference Image Calibration (phía dưới bảng bên phải).
  2. Chụp hoặc tải lên hình ảnh tham chiếu có chứa kích thước đã biết — thường là một mục tiêu hiệu chuẩn, một chi tiết được gia công chính xác trên đồ gá, hoặc một bộ phận tốt đã biết mà bạn đã đo kích thước bằng thước cặp.
  3. Mở phần Measurement Calibration. Xác nhận đơn vị (mặc định mm).
  4. Nhấp vào Measure on Image. Nhấp hai điểm trên hình ảnh trải dài một khoảng cách đã biết (ví dụ: khoảng cách tâm-đến-tâm giữa hai chốt, hoặc đường kính của chốt đo).
  5. Camera báo cáo khoảng cách pixel đã đo (ví dụ: "Measured: 159 px"). Nhập giá trị thực tế bằng milimet (ví dụ: 9.0) và nhấp Finish.
  6. Giá trị px/mm sẽ tự động điền — đối với công thức trong ảnh chụp màn hình bên dưới, hiệu chuẩn cho ra kết quả 17.621 px/mm, nghĩa là một milimet của bộ phận chiếm khoảng ~17.6 pixel cảm biến.

Reference Image Calibration in Side-by-Side view, calibration set to 17.621 px/mm

Drawing the calibration line: 159 px measured for an entered value of 9.0 mm

Hiệu chuẩn lại sau bất kỳ thay đổi quang học nào

Giá trị px/mm gắn liền với ống kính, khoảng cách làm việc và cảm biến. Nếu bạn thay đổi ống kính, lấy nét lại, di chuyển camera hoặc đổi đồ gá, hãy hiệu chuẩn lại. Một hiệu chuẩn sai lệch 1% sẽ trở thành phép đo sai lệch 1% — trên kích thước 10 mm, đó là 0.1 mm sai số hệ thống thuần túy, thường lớn hơn dung sai của bạn.

Sử dụng kích thước dài nhất có thể

Hiệu chuẩn dựa trên chi tiết 2 mm sẽ nhân bất kỳ sai số chỉ điểm nào lên 5 lần so với hiệu chuẩn dựa trên chi tiết 10 mm. Luôn hiệu chuẩn theo kích thước đã biết dài nhất vừa vặn gọn gàng trong khung hình.

Bước 4: Template Image và Alignment

Measurement yêu cầu căn chỉnh (alignment). Mô hình được huấn luyện dựa trên các primitive ở vị trí cố định trên bộ phận; nếu bộ phận dịch chuyển hoặc xoay, aligner phải bù trừ để mô hình vẫn nhìn thấy các primitive trong cùng tọa độ hình ảnh.

  1. Từ Recipe Editor, nhấp vào Template Image and Alignment dưới mục "Image Alignment & Inspection Setup".
  2. Chụp một hình ảnh tham chiếu sạch với bộ phận được đặt đúng vị trí, sau đó vẽ Search Area (hộp màu cyan) xung quanh vùng hình ảnh mà bộ phận có thể xuất hiện, và Template Region (hộp màu vàng) bao sát quanh chính bộ phận đó.
  3. Chọn Aligner Type: Classical cho các bộ phận giàu cạnh, Deep Learning cho các bộ phận có kết cấu (textured) — xem AI Aligner (Deep Learning) để biết ma trận quyết định.
  4. Tinh chỉnh Rotation Range, Sensitivity và (đối với Classical) các vùng bỏ qua cho đến khi căn chỉnh ổn định qua các lần chụp.

Template Image and Alignment screen showing Aligner Type (Classical/Deep Learning), Performance Mode, Search Areas, Template Regions, Rotation Range, and Sensitivity

Tắt Scale Invariant cho các công thức Measurement

Tùy chọn "Scale Invariant" của AI Aligner cho phép bộ so khớp dung sai với các bộ phận hơi gần hơn hoặc xa hơn camera. Không bật tùy chọn này trên công thức Measurement. Scale Invariance ngầm thay đổi tỷ lệ khung hình để khớp với template, nghĩa là một bộ phận ở xa camera 1% so với bình thường sẽ đo ra giống hệt bộ phận ở khoảng cách chính xác — và hiệu chuẩn px/mm của bạn đột nhiên trở nên sai. Hãy giữ Scale Invariant tắt và kiểm soát khoảng cách làm việc bằng đồ gá cơ khí thay vì điều đó.

Đừng bỏ qua aligner

Công tắc "Skip Aligner" có thể chấp nhận được với các công thức Segmentation hoặc Classification nhìn vào toàn bộ hình ảnh, nhưng một công thức Measurement không có aligner sẽ tạo ra kết quả vô nghĩa ngay khoảnh khắc bộ phận dịch chuyển một milimet. Luôn cấu hình alignment cho Measurement.

Bước 5: Thiết Lập Kiểm Tra — Main ROI và Child ROI

Màn hình Thiết Lập Kiểm Tra xác định vị trí trong hình ảnh đã được căn chỉnh mà model Measurement sẽ xem xét. Có một Main ROI (bao phủ toàn bộ vùng quan tâm) và, tùy chọn, một hoặc nhiều Child ROI (phóng to vào các đặc điểm cụ thể).

Màn hình Thiết Lập Kiểm Tra hiển thị Main ROI và Child ROI, cùng với menu Add (Classification / Segmentation / Measurement / OCR)

  1. Hộp Main ROI đã tồn tại sẵn khi khối Measurement được thêm vào — kéo các góc của nó cho đến khi nó bao phủ khu vực bạn muốn đo. Hầu hết các recipe sử dụng một Main ROI duy nhất bao phủ toàn bộ bộ phận.
  2. Để kiểm tra nhiều đặc điểm rời rạc (ví dụ: hai lỗ ở hai mặt đối diện của một giá đỡ), nhấp vào Add Child ROI cho từng đặc điểm và đặt nó sát quanh đặc điểm đó.
  3. Mỗi ROI sẽ có bản sao riêng của các dự đoán primitive của model. Một Main ROI với năm Child ROI có nghĩa là model sẽ chạy sáu lần cho mỗi lần chụp.
Một đặc điểm cho mỗi Child ROI = nhãn đơn giản hơn và model nhanh hơn

Một Child ROI sát quanh một lỗ duy nhất cung cấp cho model một góc nhìn rõ ràng về một đặc điểm, làm cho việc gán nhãn rõ ràng, và giữ cho inference nhanh chóng. Một Main ROI khổng lồ bao phủ mười lỗ có nghĩa là người gán nhãn phải phân biệt mười primitive trong mọi hình ảnh, và model có nhiều nhiễu thị giác phải bỏ qua hơn.

Thanh công cụ Inspection Region

Thanh phía trên canvas có các trường nhập H / W / X / Y / ∠ để đặt ROI chính xác, các nút Align và Distribute để bố trí ROI đồng đều, và một công tắc Bounding Boxes + ROI Labels để dọn dẹp lớp phủ trong khi bạn làm việc. Nhấp chuột phải vào bất kỳ ROI nào để xem menu ngữ cảnh (copy, paste, lock, delete).

Bước 6: Định Nghĩa Primitive

Mở Primitive Editor bằng cách nhấp vào Edit Main ROI (hoặc Edit trên bất kỳ Child ROI nào). Đây là nơi bạn vẽ các hình dạng hình học mà model sẽ học cách tìm. Mỗi ROI bắt đầu với bốn primitive System đã bị khóa — cạnh Top / Bottom / Left / Right của chính ROI đó — mà bạn có thể sử dụng làm hình học tham chiếu cho các phép đo khoảng cách mà không cần vẽ thêm gì mới.

Primitive Editor hiển thị một primitive Circle khớp với một lỗ, với lớp phủ kính lúp ở mức zoom 4x và phép đo Radius là 4.306 trong Data Panel

Các loại primitive khả dụng (thanh công cụ bên trái):

Biểu tượng công cụLoại primitiveCái gì được ghi lạiXuất hiện ở đâu
LineSegmentMột cạnh thẳngCạnh bộ phận, khe, tham chiếu
Arc / RadiusCircleMột bán kính + tâmLỗ, chốt, fillet, đặc điểm cong

Di chuột qua bất kỳ biểu tượng công cụ nào để xem tên của nó; thanh trạng thái ở dưới cùng của trình chỉnh sửa hiển thị công cụ đang hoạt động — ví dụ "Tool: Arc — Click to place the first point".

Để vẽ một primitive:

  1. Nhấp vào biểu tượng công cụ trong thanh công cụ bên trái (ví dụ: Line hoặc công cụ radius/arc). Thanh trạng thái sẽ hiển thị tên công cụ đang hoạt động.
  2. Nhấp vào hình ảnh tại các điểm mà công cụ cần. Đối với hình tròn/cung tròn, nhấp ba điểm xung quanh cạnh của đặc điểm. Đối với đường thẳng, nhấp hai điểm cuối.
  3. Primitive sẽ xuất hiện trong Data Panel ở bên phải, dưới mục Primitives.
  4. Đổi tên nó thành một cái gì đó có ý nghĩa (Hole_A, Top_Edge_of_Slot) bằng cách nhấp vào biểu tượng bút chì bên cạnh tên của nó. Các tên tốt sẽ làm cho các phép đo dễ đọc hơn sau này.

Hàng công tắc phía trên canvas (Construction Lines, Primitives, Measurements, Labels, Pixel Grid) kiểm soát những gì được vẽ trên hình ảnh — tắt chúng đi để giảm rối khi vẽ, bật lại để xác minh.

Sử dụng kính lúp

Di chuột qua canvas khi vẽ và một kính lúp 4x sẽ xuất hiện ở góc. Đặt cạnh ở mức sub-pixel rất quan trọng: một primitive đặt lệch một pixel, nhân lên qua 1000 chu kỳ, là điều phân biệt giữa một phép đo sử dụng được và một phép đo bị nhiễu.

Hình tròn ba điểm, không phải hộp bao

Công cụ arc khớp một hình tròn qua ba điểm trên cạnh của đặc điểm. Đặt ba điểm đó cách xa nhau quanh vành, không tụ lại ở phía trên. Một bộ ba bị tụ lại sẽ cho một độ khớp không ổn định mà model sẽ kế thừa.

Bước 7: Định nghĩa các phép đo

Primitive là hình học thô; measurement là các con số mà bạn thực sự quan tâm. Mỗi phép đo tham chiếu đến một hoặc hai primitive và tính toán một giá trị từ chúng.

Các loại phép đo có sẵn:

Phép đoĐầu vàoĐầu ra
RadiusMột hình tròn/cung trònBán kính của hình tròn theo mm
DistanceHai primitive (điểm-tới-điểm, điểm-tới-đường, đường-tới-đường)Khoảng cách ngắn nhất theo mm
LengthMột đoạn thẳngChiều dài của đoạn theo mm
AngleHai đường thẳngGóc giữa chúng theo độ
X / Y positionMột điểmTọa độ của điểm trong hệ quy chiếu đã căn chỉnh

Để định nghĩa một phép đo:

  1. Trong Data Panel bên phải của Primitive Editor, mở rộng phần Measurements.
  2. Nhấp vào nút + / Add measurement ở đầu phần Measurements. Một biểu mẫu nhỏ sẽ mở ra.
  3. Chọn loại phép đo (Radius / Distance / Angle / Length / v.v.) từ menu thả xuống.
  4. Chọn primitive mà nó sẽ tham chiếu. Phép đo Radius cần một hình tròn; phép đo Distance cần hai primitive.
  5. Đặt tên phép đo một cách mô tả (Hole_A_Diameter, Slot_Gap). Tên này sẽ hiển thị trên HMI và là khóa mà Function trong Node-RED của bạn sử dụng để đọc giá trị, vì vậy hãy giữ nó ổn định.
  6. Nhấp ra ngoài biểu mẫu hoặc nhấn Enter để lưu. Phép đo mới sẽ xuất hiện trong bảng Measurements với giá trị trực tiếp được tính toán từ hình ảnh template.

Bạn có thể kết hợp linh hoạt: một ROI duy nhất có thể chứa năm primitive và mười phép đo được tính từ chúng. Ảnh chụp màn hình ở trên cho thấy một primitive Circle 1 với phép đo Radius Circle 1 báo cáo 4.306 mm.

Cạnh hệ thống là primitive thực sự

Các primitive Top / Bottom / Left / Right Edge được khóa đi kèm với mỗi ROI là các đầu vào phép đo hợp lệ. Nếu bạn cần "khoảng cách từ đáy của khe đến đáy của ROI", bạn không cần vẽ một đường mới — hãy tham chiếu trực tiếp đến Bottom Edge của hệ thống.

Bước 8: Gán nhãn hình ảnh huấn luyện

Vẽ các primitive trên template cung cấp cho mô hình một ví dụ. Sản xuất cần ít nhất 10–20 ví dụ để mô hình học cách tìm các primitive trong điều kiện biến đổi thực tế (ánh sáng thay đổi, vết xước bề mặt, lô màu khác nhau).

  1. Trong Recipe Editor, nhấp vào Measurement Block từ thanh điều hướng trên cùng, hoặc Measurement dưới mục AI Blocks.
  2. Nhấp vào Capture để chụp một khung hình mới, hoặc Import Capture để đưa một khung hình từ Library vào.
  3. Đối với mỗi capture, hãy vẽ cùng các primitive mà bạn đã định nghĩa trên template — tại cùng vị trí trên mỗi hình ảnh mới của bộ phận.
  4. Nhấp vào Save Annotations khi mỗi capture đã được gán nhãn.
  5. Điều hướng Previous / Next để duyệt qua mọi capture.

Chế độ xem chú thích Measurement Block với hai Child ROI hiển thị primitive Circle 1 trên các lỗ, cùng với điều hướng capture, bộ chọn mô hình đo lường, kính lúp và bảng Show/Hide Primitives

Đa dạng capture, không chỉ số lượng

Hai mươi capture của cùng một bộ phận ở cùng một vị trí dạy mô hình rất ít. Mười capture trải dài qua các góc xoay khác nhau của bộ phận, độ lệch vị trí nhẹ, biến đổi ánh sáng và điều kiện bề mặt sẽ dạy nó tất cả những gì nó cần. Hãy đa dạng có chủ đích.

Gán nhãn cùng một primitive nhất quán giữa các capture

Nếu "Circle 1" là lỗ phía trên bên trái trên capture 1, nó phải là lỗ phía trên bên trái trên capture 2. Việc nhầm lẫn đặc điểm vật lý nào mà một primitive được đặt tên trỏ đến sẽ dạy cho mô hình những mâu thuẫn, và những mâu thuẫn này sẽ hiển thị dưới dạng các dự đoán nhiễu gấp 10 lần trong sản xuất.

Bước 9: Huấn luyện model

  1. Từ chế độ xem Measurement Block hoặc Recipe Editor, mở tab Train.
  2. Tìm hàng measurement. Xác nhận Training Mode — đối với Measurement, Accurate là mặc định và được khuyến nghị. Có các chế độ nhanh hơn để lặp nhanh nhưng đánh đổi độ chính xác.
  3. Nhấp Train trên hàng đó (hoặc Train All để huấn luyện mọi block trong recipe).
  4. Modal Training AI Model hiển thị tiến trình trực tiếp: Mean IoU (xanh dương, tăng), Loss (đỏ, giảm) và bộ đếm số lần lặp (ví dụ 200/200).

Trang Train hiển thị model measurement ở trạng thái Trained, với các cột IoU/Loss, chế độ Accurate và các thao tác Train / Cancel

Training Completed ở 100% với Model Quality (IoU) 76%, Total Images 10, Iterations 200/200, và lưới thumbnail của các crop huấn luyện

Những điều cần lưu ý:

  • IoU tăng và Loss giảm khi số lần lặp tăng. Nếu cả hai đều phẳng từ sớm, cần thêm hình ảnh hoặc nhãn tốt hơn.
  • Lưới thumbnail bên phải hiển thị các crop huấn luyện với các primitive được dự đoán được vẽ (True Positive màu xanh lá, False Positive màu đỏ, False Negative màu xanh dương). Xem lướt qua — nếu một crop nằm trong chú giải đỏ/xanh dương, hãy kiểm tra các nhãn của nó.
  • Model Quality (IoU) được báo cáo khi huấn luyện hoàn tất. Đối với Measurement, bất kỳ giá trị nào trên 70% đều có thể sử dụng được; trên 85% là xuất sắc.
Lặp lại, đừng cố hoàn hảo

Đừng nhắm tới một model hoàn hảo ngay lần đầu. Huấn luyện với 10 ảnh chụp, chạy Live Preview trên một bộ phận mới, xem các dự đoán bị lệch ở đâu, sau đó thêm 5 ảnh chụp nữa nhắm vào chế độ lỗi và huấn luyện lại. Ba lần lặp ngắn tốt hơn một lần dài.

Một lưới các crop huấn luyện hiển thị model tìm các primitive hình tròn trên nhiều lỗ — đường viền màu xanh lá cho thấy các dự đoán đúng

Bước 10: Kiểm tra và xác minh

  1. Quay lại chế độ xem Measurement Block, bật Live Preview Mode.
  2. Kích hoạt chụp ảnh bằng nút Test (hoặc Capture trong HMI) và quan sát các primitive được dự đoán phủ lên các khung hình trực tiếp.
  3. So sánh kích thước được dự đoán với phép đo bằng thước cặp trên cùng một bộ phận vật lý. Hai giá trị nên khớp nhau trong giới hạn dung sai của bạn.
  4. Di chuyển bộ phận xung quanh (trong giới hạn căn chỉnh) và xác nhận giá trị đo vẫn ổn định qua các lần chụp.
Xác thực với thước cặp trước khi triển khai

Camera báo 4.306 mm. Hãy cầm bộ phận lên, đo bằng thước cặp và xem bạn có đọc được 4.3 mm không. Nếu camera và thước cặp chênh lệch nhiều hơn dung sai của bạn, vấn đề hầu như luôn là hiệu chuẩn (bước 3) — hiệu chuẩn lại theo kích thước dài nhất trên fixture và thử lại.

Bước 11: Kết nối logic pass/fail

Model tạo ra các con số; block IO Logic chuyển các con số đó thành PASS hoặc FAIL.

  1. Từ Recipe Editor, nhấp Configure IO (hoặc tab IO Logic).
  2. Kéo vào một node All Block Outputs, một node Function và một node Final Pass/Fail. Kết nối chúng với nhau.
  3. Nhấp đúp vào node Function và viết kiểm tra dung sai. Dưới đây là hình dạng của logic — kết quả đo đến dưới phần của Measurement block trong msg.payload, được khóa bởi các tên bạn đã đặt trong Primitive Editor. Cấu trúc payload chính xác có thể thay đổi giữa các phiên bản firmware, vì vậy hãy kết nối một node Debug một lần và kiểm tra msg trực tiếp để xác nhận tên các trường trước khi dựa vào chúng.
// PASS if hole radius is within 4.30 ± 0.10 mm
// Adjust the path below to match the payload from your camera's
// Debug node — the Measurement block emits an array of measurement objects
// each with a name and a numeric value in mm.
const measurements = msg.payload.measurement?.measurements ?? [];
const radius = measurements.find(m => m.name === 'Radius Circle 1');

if (!radius) {
msg.payload = false; // no result = fail
return msg;
}

const value = radius.value; // value in mm
const target = 4.30;
const tolerance = 0.10;

msg.payload = Math.abs(value - target) <= tolerance;
return msg;
  1. Nhấp Deploy để đẩy flow lên hoạt động.
Sử dụng các tên bạn đã đặt ở bước 7

Node Function tra cứu các phép đo theo tên bạn đã gán trong Primitive Editor. Đổi tên một phép đo và flow sẽ bị hỏng cho đến khi bạn cập nhật node. Giữ tên ổn định khi đã đưa vào sản xuất.

Pass/fail đa phép đo

Đối với các bộ phận có nhiều kích thước cần kiểm tra, hãy xây dựng một Array.every(...) trên một danh sách các đối tượng {name, target, tolerance}. Một node Function có thể xác thực mọi kích thước trên bộ phận, và chỉ một lỗi sẽ làm toàn bộ quá trình kiểm tra ngắn mạch thành FAIL.

Đọc kết quả trên HMI

Sau khi triển khai, chuyển sang tab HMI. Kích hoạt một lần chụp và chế độ xem trực tiếp sẽ chú thích hình ảnh với các primitive được dự đoán, chip pass/fail sẽ chuyển sang PASS hoặc FAIL, và bảng đo lường bên dưới sẽ hiển thị mọi kích thước với:

  • Avg — giá trị tổng hợp trên tất cả các Child ROI (hữu ích khi cùng một phép đo chạy trong nhiều ROI)
  • Inspection Region — Main ROI hoặc Child ROI nào đã tạo ra giá trị
  • Search Area — Search Area nào trên aligner mà giá trị thuộc về
  • Value — phép đo tính bằng mm (hoặc đơn vị của bạn)
  • Primitives — primitive nào đã được sử dụng để tính toán phép đo

Chế độ xem trực tiếp HMI hiển thị Measurement recipe với PASS, Alignment Confidence 92.4%, và một bảng đo lường chi tiết Radius Circle 1 đến 4.326 mm và 4.315 mm trên Main ROI và Child ROI

Bật hoặc tắt các lớp phủ khi cần:

  • Labels — hiển thị tên primitive trên hình ảnh
  • Blob Stats — hiển thị điểm số phát hiện
  • Heatmap — phủ lên bản đồ nhiệt độ tin cậy của mô hình (hữu ích để gỡ lỗi "tại sao nó lại chọn điểm đó?")

Các ví dụ thực tế

Kiểm tra đường kính lỗ

  • Primitive: một Circle trong một Child ROI bao sát quanh lỗ
  • Measurement: Radius (kết quả được báo cáo dưới dạng bán kính; nhân với 2 trong Function node nếu bạn cần đường kính)
  • Pass/fail: Math.abs(radius - target) <= tolerance

Khoảng cách giữa hai bộ phận

  • Primitives: hai primitive Line/Segment song song dọc theo các cạnh đối diện
  • Measurement: Distance, Line-to-Line
  • Pass/fail: gap >= min_gap && gap <= max_gap

Khoảng cách giữa hai lỗ

  • Primitives: hai primitive Circle, mỗi lỗ một cái
  • Measurement: Distance, Point-to-Point (giữa các tâm)
  • Pass/fail: Math.abs(spacing - target) <= tolerance

Góc uốn của một bracket

  • Primitives: hai primitive Line, mỗi cái dọc theo một cánh của bracket
  • Measurement: Angle, Line-to-Line
  • Pass/fail: Math.abs(angle - target_degrees) <= angle_tolerance

Mẹo và thủ thuật

Hiệu chuẩn một lần, khóa cố định fixture

Khi đã hiệu chuẩn xong, khóa cố định vật lý camera, ống kính và fixture của bộ phận. Bất kỳ chuyển động nào cũng sẽ làm mất hiệu lực giá trị px/mm một cách âm thầm. Một dải mô-men xoắn trên vòng lấy nét và keo khóa ren trên đế lắp ống kính không phải là quá mức cần thiết trong một cài đặt sản xuất.

Sử dụng lớp phủ kính lúp trong quá trình gán nhãn

Kính lúp phóng đại 4x của Primitive Editor hiển thị các pixel mà bạn đang nhấp vào. Độ chính xác của cạnh trong nhãn là giới hạn của độ chính xác cạnh trong sản xuất. Đừng nhấp "gần" cạnh — hãy nhấp trên cạnh, đã phóng to.

Backtest trước khi đưa vào hoạt động

Trước khi triển khai, hãy chụp hơn 30 khung hình bao gồm các trường hợp pass và fail và đưa chúng qua Recipe Backtesting. Nó chạy toàn bộ recipe trên tập kiểm tra trong vài giây và báo cáo các phép đo cho từng khung hình, để bạn có thể xác nhận dung sai bạn đặt trong Function node thực sự phân tách các bộ phận tốt khỏi bộ phận lỗi mà không có false positive.

Ống kính telecentric là bắt buộc, không phải tùy chọn, đối với Measurement

Nhắc lại cảnh báo ở đầu trang: ống kính C-mount tiêu chuẩn gây ra méo phối cảnh, trở nên tệ hơn ở gần các cạnh của hình ảnh và thay đổi theo khoảng cách làm việc. Ống kính telecentric là phần cứng duy nhất giúp kiểm tra kích thước chính xác. Nếu cài đặt của bạn không có nó, đừng sử dụng khối Measurement.

Lưu chú thích sớm và thường xuyên

Chế độ xem Measurement Block không tự động lưu. Nhấp Save Annotations sau mỗi một hoặc hai lần chụp — đóng tab sẽ làm mất bất kỳ nhãn nào chưa được lưu.

Các lỗi thường gặp và khắc phục sự cố

Triệu chứngNguyên nhân có thểCách khắc phục
Camera đọc 4.3 mm, thước cặp đọc 4.5 mmHiệu chuẩn bị sai lệchHiệu chuẩn lại với kích thước tham chiếu dài hơn; xác minh giá trị px/mm không thay đổi
Cùng một bộ phận cho kết quả đo khác nhau ở mỗi chu kỳCăn chỉnh không ổn định, hoặc mờ do chuyển độngSiết chặt template / vùng tìm kiếm, giảm phơi sáng, thêm strobe, cố định đồ gá
Dự đoán nhảy sang đặc trưng saiNhãn primitive không nhất quán giữa các ảnh chụp huấn luyệnGán nhãn lại các ảnh chụp, đảm bảo "Circle 1" luôn là cùng một đặc trưng vật lý, huấn luyện lại
Mô hình tìm thấy primitive trên một bộ phận lỗi mà lẽ ra không nênTập huấn luyện không có ví dụ về lỗi; mô hình chưa học cách từ chốiThêm 5+ ảnh chụp lỗi, gán nhãn chúng không có primitive (hoặc với primitive ở vị trí chính xác), huấn luyện lại
Giá trị px/mm thay đổi âm thầmỐng kính đã được lấy nét, di chuyển hoặc thay thếHiệu chuẩn lại. Khóa ống kính. Không lấy nét trong quá trình sản xuất
Phép đo sai lệch lớn sau khi cập nhật phần mềmXoay hình ảnh đã thay đổi, hoặc template căn chỉnh đã bị mấtMở Imaging Setup và xác nhận Image Rotation; chụp lại template nếu cần
Recipe chạy chậm (độ trễ dài)Quá nhiều Child ROI, hoặc mô hình chạy ở chế độ Fastest mà không đủ độ phân giảiHợp nhất các ROI, hoặc huấn luyện ở chế độ Accurate
Huấn luyện lại sau bất kỳ thay đổi nào về primitives hoặc ROI

Nếu bạn đổi tên một primitive, di chuyển một Child ROI, thêm một phép đo, hoặc thay đổi Search Area, hãy huấn luyện lại mô hình. Việc huấn luyện gắn liền với bố cục không gian mà bạn đã xác định; thay đổi bố cục mà không huấn luyện lại sẽ khiến mô hình tìm kiếm sai vị trí. Trang Train sẽ đánh dấu mô hình là lỗi thời khi điều này xảy ra.

Bài viết liên quan