Magic Code for Deep learning

딥러닝 기반의 인공지능 모델 학습을 위한 코드를 자동으로 생성합니다.

!pip install pyyaml==5.1
!pip install torch==1.8.0+cu101 torchvision==0.9.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

!pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/torch1.8/index.html

!pip install ds2ai
import detectron2
from detectron2.utils.logger import setup_logger
setup_logger()

import numpy as np
import os, json, cv2, random
from google.colab.patches import cv2_imshow

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog
import requests
import os
import time
from ds2ai import DS2
import ast
import zipfile
import torch, torchvision
from detectron2.engine import DefaultTrainer
from detectron2.evaluation import COCOEvaluator, inference_on_dataset
from detectron2.data import build_detection_test_loader
from detectron2.data.datasets import register_coco_instances

ds2 = DS2(apptoken="----")
project = ds2.get_project(14883)
model = project.models[0]
file_url = None
if not os.path.exists("./data"):
    if project.filePath:
        file_url = project.filePath
    else:
        label_project = ds2.get_labelproject(project.labelproject)
        async_task = label_project.export(is_get_image=True)
        for i in range(0, 1000):
            time.sleep(10)
            async_task = ds2.get_asynctask(async_task.id)
            if async_task.status == 100:
                file_url = async_task.outputFilePath
                break

    if not file_url:
        raise (Exception("Please upload the training file."))

    file_name = file_url.split("/")[-1]
    response = requests.get(file_url)
    with open(file_name, 'wb') as output:
        output.write(response.content)

    os.makedirs("./data", exist_ok=True)
    os.makedirs("./models", exist_ok=True)

    with zipfile.ZipFile(file_name, 'r') as zf:
        zf.extractall(path="./data")
        zf.close()

print("project.id")
print(project.id)

configFile = f"data/coco.json"
fileRoute = f"data/"


cocoData = None
configFileValid = None

if os.path.exists("data/cocovalid.json"):
    configFileValid = f"data/cocovalid.json"

try:
    register_coco_instances(f"{model.id}", {}, configFile, fileRoute)
    if configFileValid:
       register_coco_instances(f"{model.id}_valid", {}, configFileValid, fileRoute)
except:
    pass


cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_X_101_32x8d_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_X_101_32x8d_FPN_3x.yaml")
cfg.DATASETS.TRAIN = (f"{model.id}",)
if configFileValid:
    cfg.DATASETS.TEST = (f"{model.id}_valid",)
else:
    cfg.DATASETS.TEST = ()

cfg.DATALOADER.NUM_WORKERS = 1
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.8
cfg.SOLVER.IMS_PER_BATCH = 1
cfg.SOLVER.BASE_LR = 0.02
cfg.SOLVER.MAX_ITER = 300
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128

if project.yClass:
    cfg.MODEL.ROI_HEADS.NUM_CLASSES = len(ast.literal_eval(project.yClass))
cfg.OUTPUT_DIR = f"./models/"

trainer = DefaultTrainer(cfg)

trainer.resume_or_load(resume=False)
trainer.train()
evaluator = COCOEvaluator(f"{model.id}", ("bbox", "segm"), False, output_dir="./output/")
val_loader = build_detection_test_loader(cfg, f"{model.id}",)
bbox = inference_on_dataset(trainer.model, val_loader, evaluator).get("bbox")
print(bbox)

learn_path = f"./models/model_final.pth"
files = {'uploadedModel': open(learn_path, 'rb')}
values = {'apptoken': '----', 'project': 14883, 'bbox': bbox}  # TODO
r = requests.post('https://api.ds2.ai/predictmodelfromcolab/', files=files, data=values)  # TODO


image_sample_file_path = None
for root, dirs, images in os.walk(f"./data"):
    if '__MACOSX' in root:
        continue
    for image in images:
        if not image.lower().endswith((".jpg", ".jpeg", ".png")):
            continue
        image_sample_file_path = f"{root}/{image}"
        break
    if image_sample_file_path:
        break

im = cv2.imread(image_sample_file_path)
predictor = DefaultPredictor(cfg)
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2_imshow(out.get_image()[:, :, ::-1])
print("You can go back to the ds2.ai to check the output details.")

바로 시작할 수 있는 모델 학습

DS2.ai의 Magic Code는 바로 모델 학습을 시작할 수 있도록 자동 생성됩니다. Jupyter, Colab에 코드를 붙여넣는 것만으로 바로 모델 학습을 시작할 수 있습니다.

layer_deep = 102
layer_width = 103
learning_rate = 0.109
epoch = 13

최적화 가능한 Hyperparameter

매직코드의 Hyperparameter는 기본값으로 자동 세팅되며, 자유롭게 직접 튜닝하거나 바로 학습을 시작할 수 있습니다.

편리한 프로그래밍 개발을 위한 SDK 지원

제공되는 Python 기반의 SDK를 활용하여 매직코드를 생성할 수 있으며,  데이터의 업로드부터 라벨링 생성, 인공지능 학습 및 배포까지 DS2.ai의 모든 기능을 활용하여 데이터 파이프라인을 코드로 구축하고 사용할 수 있습니다.

Learn more →
from ds2 import DS2
ds2 = DS2(apptoken="s2234k3b4")
ds2.get_magic_code(
    "normal_classification",
    data_file="graduate_school_admission.csv",
    value_for_predict="admission_rate",
)

다양한 기능의 인공지능 모델 학습

정형 데이터(Classification, Regression), 물체인식(Object Detection)과 추천 시스템(Recommender System) 인공지능 모델을 학습하는 코드를 생성할 수 있습니다.

Tabular Data - Regression

매직코드로 개발 완료된 인공지능은 DS2.ai 내에서 바로 사용할 수 있습니다.

  • GRE Score337
  • TOEFL Score118
  • Univ Ranking4
  • Recommendation4.5
  • Research Experience1
입학 확률
--
%
Object Detection

매직코드로 개발 완료된 인공지능은 SDK를 통해 모델을 호출하여 사용할 수 있습니다.

    
    from ds2 import DS2
    
ds2 = DS2(apptoken=“s2234k3b4”)
ds2.predict(
    "people.jpg",
    quick_model_name = “person”
    #model_id=20000 # Or You can also use your custmized AI.
)


{
    "images": [
        {
            "id": "60a212aac869a1fea276480d",
            "file_name": "/images/img_labelingExample.jpg",
            "width": 4000,
            "height": 2084
        }
    ],
    "type": "instances",
    "annotations": [
        {
            "segmentation": [
                [
                    1200,
                    907,
                    1200,
                    1882,
                    2903,
                    1882,
                    2903,
                    907
                ]
            ],
            "area": 1660425,
            "iscrowd": 0,
            "ignore": 0,
            "image_id": "60a212aac869a1fea276480d",
            "bbox": [
                1200,
                907,
                1703,
                975
            ],
            "category_id": 2621,
            "id": "60a216ae2cd9eb1bbde44e2b"
        }
    ],
    "categories": [
        {
            "supercategory": "none",
            "id": 2620,
            "name": "person"
        },
        {
            "supercategory": "none",
            "id": 2621,
            "name": "person"
        },
        {
            "supercategory": "none",
            "id": 2622,
            "name": "person"
        }
    ]
}

인공지능 분석 기능 지원

Magic Code로 개발된 인공지능은 처방적 분석 및 심층 분석 등 CLICK AI에서 제공하는 인공지능 분석 기능을 동일하게 사용할 수 있습니다.

처방적 분석 리포트 생성

딥러닝 기반의 데이터 분석 결과에 따라, 예측값에 가장 큰 영향을 받는 TOP3의 값을 토대로 처방적 분석 리포트를 자동 생성하여 비지니스 관점에서 해결책을 찾아줍니다.

* 정형 데이터 기반 모델(Classification, Regression)에서만 제공됩니다.

설명가능한 AI

설명가능한 AI(eXplainable AI)를 통해 예측값에 대한 연관성 높은 칼럼을 출력합니다. 이를 통해 비전문가도 직관적으로 분석 결과를 이해하고 목표 달성을 위해 필요한 행동 전략을 기획할 수 있습니다.

* 정형 데이터 기반 모델(Classification, Regression)에서만 제공됩니다.

심층 분석 결과 제공

전문가의 더욱 심도있는 데이터 분석을 위해 분석 결과를 기반으로 하여 분포도, 히스토그램, 박스그래프 등의 추천 시각화 그래프를 자동 생성하여 제공합니다.

인공지능 분석 기능 지원

Magic Code로 개발된 인공지능은 처방적 분석 및 심층 분석 등 CLICK AI에서 제공하는 인공지능 분석 기능을 동일하게 사용할 수 있습니다.

처방적 분석 리포트 생성

딥러닝 기반의 데이터 분석 결과에 따라, 예측값에 가장 큰 영향을 받는 TOP3의 값을 토대로 처방적 분석 리포트를 자동 생성하여 비지니스 관점에서 해결책을 찾아줍니다.

* 정형 데이터 기반 모델(Classification, Regression)에서만 제공됩니다.

설명가능한 AI

설명가능한 AI(eXplainable AI)를 통해 예측값에 대한 연관성 높은 칼럼을 출력합니다. 이를 통해 비전문가도 직관적으로 분석 결과를 이해하고 목표 달성을 위해 필요한 행동 전략을 기획할 수 있습니다.

* 정형 데이터 기반 모델(Classification, Regression)에서만 제공됩니다.

심층 분석 결과 제공

전문가의 더욱 심도있는 데이터 분석을 위해 분석 결과를 기반으로 하여 분포도, 히스토그램, 박스그래프 등의 추천 시각화 그래프를 자동 생성하여 제공합니다.

지금 바로 Magic Code를 시작할 수 있습니다.