본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/FreeCAD

모델 유사성 평가 프로그램 컨

by ToolBOX01 2026. 6. 13.
반응형

 

■ 유사성 평가 프로그램

설계 정보(Parameter & 물리적 속성)와 형상(Vision AI)을 결합한 하이브리드 유사성 평가 프로그램

품번(Part Number) 체계가 지능형 코드(Intelligent / Significant Part Numbering System) 구조를 가지고 있다면, 이는 AI나 물리 파라미터보다 더 명확하고 왜곡 없는 '최상위 도메인 지식(Domain Knowledge)' 역할을 할 수 있습니다.

예를 들어, 품번의 앞 4자리가 BRNG(베어링)나 GEAR(기어)처럼 부품의 대분류를 나타낸다면, 형상이나 무게를 비교하기도 전에 검색 범위를 해당 부품 군집(Cluster)으로 완전히 격리시킬 수 있습니다. 이를 활용해 파이프라인을 고도화하면 유사성 평가의 신뢰도를 최고 수준으로 끌어올릴 수 있습니다.

1. 지능형 품번을 결합한 3단계 필터링 구조

[신규 설계 모델 생성 및 STEP 내보내기]
              │
              ▼  (0단계: 신규 입력된 품번의 특정 자릿수 파싱)
[품번 군집 필터링 (Cluster Filter)] 
  - 예: 앞 3자리 'SHA' -> 샤프트(Shaft) 군집 데이터만 선택 (타 부품 100% 차단)
              │
              ▼  (1단계: 파라미터 필터링)
[물리적 속성 필터링 (Parametric Filter)]
  - 해당 군집 내에서 부피/무게/관성모우먼트가 ±5% 이내인 후보 추출
              │
              ▼  (2단계: AI 정밀 비교)
[비전 AI 이미지 유사도 분석 (Vision AI Matching)]
  - 최종 후보들의 회전 이미지 임베딩 벡터 비교 -> 95% 유사도 판정

 

2. 지능형 품번을 결합한 3단계 필터링 구조

① 형상적 '의사 결정 착오(False Positive)' 완벽 제거

  • 문제 상황: 외형 이미지와 부피가 기가 막히게 일치하는 두 부품이 있습니다. 하나는 고온 환경용 엔진 밸브(ENG-V-01)이고, 다른 하나는 일반 배관용 밸브(PIP-V-01)입니다. 비전 AI와 물리 파라미터는 두 부품을 99% 유사하다고 판단할 것입니다.
  • 해결 책: 품번 체계에서 이미 ENG와 PIP로 군집이 나뉘기 때문에, 설계자가 엔진 밸브를 설계할 때 배관용 밸브가 추천되는 엔지니어링 에러를 원천 차단합니다.

② 연산 속도의 비약적인 향상 (O(N) -> O(1) 수준으로 대폭 축소)

  • 데이터베이스에 수만, 수십만 개의 부품이 쌓여도 품번 자릿수로 인덱싱(Indexing)된 군집만 쿼리하기 때문에 검색 대상이 최초 시작부터 수백 개 단위로 좁혀집니다. 서버의 CPU/GPU 부하가 거의 제로에 수렴하게 됩니다.

 

3. 구현을 위한 데이터베이스 및 쿼리 고도화 방안

예품번의 각 자릿수가 가진 의미를 데이터베이스 테이블화하여 관리하면 매칭 알고리즘을 아주 깨끗하게 짤 수 있습니다.

① 데이터베이스 스키마 확장 (품번 메타데이터 분리)

ALTER TABLE cad_models 
ADD COLUMN part_cluster_prefix VARCHAR(10),  -- 품번 분류 코드 (예: 'BRNG', 'GEAR')
ADD COLUMN material_code VARCHAR(5);        -- 재질 분류 코드 (예: 'ST', 'AL')

-- 분류 코드에 인덱스를 걸어 0단계 필터링 속도 극대화
CREATE INDEX idx_cad_models_cluster ON cad_models (part_cluster_prefix);

 

② 하이브리드 검색 쿼리 (Python / SQL 통합 예시)

서버단에서 신규 품번(예: SHAFT-25-ST)을 받으면, 정규식이나 문자열 슬라이싱으로 군집 코드를 뽑아내어 쿼리에 주입합니다.

Python

# 예: 입력 품번이 "BRNG-025-A" 인 경우
new_part_number = "BRNG-025-A"
cluster_code = new_part_number.split('-')[0] # 'BRNG' 추출 (베어링 군집)

# SQL 실행 (0단계, 1단계, 2단계를 하나의 쿼리로 고속 처리)
search_query = """
    SELECT part_number, volume, weight,
           (1 - (image_embedding <=> %s::vector)) AS similarity
    FROM cad_models
    WHERE part_cluster_prefix = %s             -- [0단계] 품번 군집 필터링 (가장 먼저 실행됨)
      AND volume BETWEEN %s AND %s             -- [1단계] 부피 필터링
      AND weight BETWEEN %s AND %s             -- [1단계] 무게 필터링
    ORDER BY similarity DESC
    LIMIT 5;
"""

■ 유사성 평가 프로그램 시스템 아키텍처 및 데이터 흐름

각 상용 CAD가 클라이언트(Client)가 되고, FreeCAD와 AI 모델이 탑재된 중앙 서버(Server)가 핵심 연산을 처리하는 REST API 기반 구조로 동작합니다.

[각 CAD 환경]            [중간 포맷]          [중앙 자동화 서버]               [데이터베이스 & AI]
Creo, CATIA, SolidWorks ──> STEP 파일 ──> FreeCAD Python API ───────> DB (파라미터 및 벡터 저장)
      ▲                                         │ (이미지/파라미터 추출)           │
      └─────────────────── 검색 요청 및 결과 반환 ───────────────────────────────┘

 

1. 단계별 가능성 및 구현 핵심 가이드

단계 1: CAD 환경에서 STEP 변환 및 호출 (클라이언트 단)

구현 방법: 각 CAD 프로그램의 API와 매크로 기능을 활용해 현재 활성화된 모델을 STEP 파일로 내보내고, 중앙 서버의 검색 API를 호출하는 플러그인(버튼)을 만듭니다.

  • Creo: Toolkit(C++)이나 Object TOOLKIT, VB API를 활용해 STEP 내보내기 자동화.
  • SolidWorks: VBA(Macro) 또는 C# API (SaveAs 메서드) 활용.
  • CATIA: CAA 또는 Automation API(VBA/VBScript) 활용.

 

단계 2: FreeCAD를 활용한 데이터 추출 및 DB 저장 (서버 단)

구현 방법: 서버에 FreeCAD를 설치하되 화면을 띄우지 않고, 파이썬 스크립트 모듈(import FreeCAD, import FreeCADGui)로만 호출하여 배치(Batch) 처리를 수행합니다.

 

  • 파라미터 추출: STEP 파일을 로드한 후 Shape.Volume(부피), Shape.CenterOfMass(중심점)를 계산하고, 재질 밀도를 곱해 무게를 산출합니다. Shape.BoundBox로 대략적인 가로/세로/높이 크기도 확보합니다.
  • 이미지 데이터 생성: FreeCADGui 모듈을 이용해 뷰(View) 방향을 코드(X, Y, Z 회전)로 제어하면서 백그라운드에서 saveImage를 실행하여 다각도 렌더링 이미지를 저장합니다.
  • DB 저장: 추출된 물리 파라미터는 관계형 DB(PostgreSQL 등)에 넣고, 이미지 데이터는 AI 모델(ResNet 등)을 거쳐 특징 벡터(Embedding)로 변환한 뒤 벡터 DB(pgvector, Faiss 등)에 저장합니다.

 

단계 3: 유사모델 검색 알고리즘 실행 및 결과 반환

 

구현 방법: 앞서 말씀하신 1차 필터링(무게/부피) + 2차 정밀 비교(이미지/벡터 유사도) 하이브리드 알고리즘을 중앙 서버에서 수행합니다.

결과 반환: 가장 유사도가 높은 상위 3~5개의 기존 모델 정보(부품 번호, 유사도 %, 미리보기 이미지 URL 등)를 JSON 형태로 클라이언트 CAD 플러그인에 반환합니다.

 

2. FreeCAD를 사용한 아키텍처의 강력한 장점

 

  • CAD 라이선스 비용 절감: Creo, CATIA, 솔리드웍스 라이선스는 매우 비쌉니다. 이 비싼 CAD들을 데이터 추출 서버용으로 따로 띄워둘 필요 없이, 서버단은 100% 무료 오픈소스인 FreeCAD와 Python으로만 구성하므로 서버 운영 비용이 거의 들지 않습니다.
  • 단일 알고리즘 유지보수: 유사도를 분석하는 핵심 알고리즘이 중앙 서버(Python 환경)에 딱 하나만 존재하므로, 알고리즘을 개선하거나 AI 모델을 업그레이드할 때 각 CAD 플러그인을 일일이 수정할 필요 없이 서버 코드만 업데이트하면 됩니다.

 


이미지 기반 유사도 비교를 구현할 때 활용하기 좋은 대표적인 접근법 3가지

① 사전 학습된 CNN 변형 (ResNet / EfficientNet + Triplet Loss)

② Contrastive Learning (SimCLR / CLIP)

③ 전통적인 컴퓨터 비전 기법 (OpenCV ORB / SIFT)

기계학습을 통하여 "알고리즘"을 개발 합니다. 개발된 알고리즘을 사용 CAD의 API로 개발된 유사도 평가 프로그램에 삽입합니다. 설계부서에서는 지속적으로 새로운 데이터를 발생 시킵니다. 아마도 개발된 "알고리즘"을 지속적으로 업데이트 해야 합니다. 

By korealionkk@gmail.com

 

 

 

반응형