Skip to content
/ mcb Public

A large-scale mechanical components benchmark for the classification and retrieval tasks named Mechanical Components Benchmark (MCB)

License

Notifications You must be signed in to change notification settings

stnoah1/mcb

Repository files navigation

Introduction

We introduce a web-based data acquisition and annotation tool for Mechanical Components. We collect models from online 3D CAD repositories To effectively annotate, CAD models are filtered and annotated using with this tools. We define classes by following the field 'Mechanical 290 Systems and Components' of the International Classification for Standards (ICS) published by International Organization for Standardization (ISO). You can find more details on our project page (link). Download link to Dataset A and Dataset B.

overview

Setup

1. Install

  • Install Python dependencies
pip install -r requirements.txt
  • Install ASSIMP for file format conversion.

2. Make config.py

Create config.py following format,

# data download directory
grabcad_path = 'PATH/TO/GRABCAD_FILES'
dw_path = 'PATH/TO/3DW_FILES'

# web hosting info
host = '127.0.0.1'

# database info
dbhost = '127.0.0.1'
user = 'user'
password = 'password'

# ASSIMP path
assimp_path = 'PATH/TO/ASSIMP'

# TraceParts
api_key = ''
login_id = ''

3. Create Database

  • Create keyword table.
create table keyword
(
    id      serial      not null
        constraint keyword_pk
            primary key,
    name    varchar(50) not null,
    use     boolean default true,
    parent  integer
        constraint keyword_keyword_id_fk
            references keyword,
    dataset boolean
);

create unique index keyword_id_uindex
    on keyword (id);
  • Create cad_file table.
create table cad_file
(
    id        serial  not null
        constraint cad_file_pk_2
            primary key,
    source    integer not null
        constraint cad_file_source_id_fk
            references source,
    name      varchar(300),
    file      varchar(400),
    web_image varchar(400),
    image     varchar(400),
    label     integer,
    timestamp timestamp default now(),
    remark    varchar(500),
    source_id varchar(200),
    file_size integer
);

create unique index cad_file_id_uindex
    on cad_file (id);

Usage

Run Data collector

We provide mechanical components collector for online large 3D CAD repositories: TraceParts, 3D WareHouse, and GrabCAD. 3D Warehouse and GrabCAD are large online open repository for professional designers, engineers, manufacturers, and students to share CAD models. They provide numerous CAD models with various classes, including mechanical components. If you want to collect data from TraceParts, you have to request API key through their website [link] and put the api_key and login_id in the config.py file.

python scrapper.py --keywords=path/to/keywords.txt

Run Web-based UI

A dataset managing platform visualizes multi-view images of each engineering part, which gives users a more comprehensive understanding of the mechanical part during filtering and annotating. [DEMO]

python web_server.py

Citation

 @inproceedings{sangpil2020large,
    title={A Large-scale Annotated Mechanical Components Benchmark for Classification and Retrieval Tasks with Deep Neural Networks},
    author={Kim, Sangpil and Chi, Hyung-gun and Hu, Xiao and Huang, Qixing and Ramani, Karthik},
    booktitle={Proceedings of 16th European Conference on Computer Vision (ECCV)},
    year={2020},}

About

A large-scale mechanical components benchmark for the classification and retrieval tasks named Mechanical Components Benchmark (MCB)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published