BLOG

[Techblog] Computer Vision으로 가상 경계를 통해 위험 지역으로부터 사람 보호하기
작성일: 2021-04-23

기업이 더 많은 자율 로봇과 기타 중장비를 작업장에 도입하는 것을 환영함에 따라 장비가 팀원 주변에서 안전하게 작동 할 수 있도록해야합니다. 이 게시물에서는 개발자가 기계 학습 (ML)을 학습하도록 설계된 AWS 딥 러닝 지원 비디오 카메라 인 컴퓨터 비전과 AWS DeepLens 를 사용하여 가상 경계를 구축하는 방법을 보여줍니다 . 이 게시물의 기계 학습 기술을 사용하면 장비를 자동으로 종료하거나 사람이 가까이 오면 경고음을 울리는 제한된 영역에 대한 가상 경계를 구축 할 수 있습니다.

 

이 프로젝트의 경우 Amazon SageMaker를 사용하여 사용자 지정 객체 감지 모델을 교육 하고 모델을 AWS DeepLens 디바이스에 배포합니다. 객체 감지는 이미지를 입력으로 받아 이미지 내에서 객체와 위치를 식별하는 ML 알고리즘입니다. 가상 경계 솔루션 외에도 특정 개체가 이미지 내부에있는 위치를 감지하거나 이미지에서 원하는 개체의 인스턴스 수를 계산해야하는 경우이 게시물에서 배운 기술을 적용 할 수 있습니다. 

 

 

솔루션 개요

연습에는 다음 단계가 포함됩니다.

 

  1. ML 알고리즘에 공급할 데이터 세트를 준비합니다.
  2. Amazon SageMaker로 모델을 훈련시킵니다.
  3. 사용자 지정 제한 구역이있는 테스트 모델.
  4. AWS DeepLens에 솔루션을 배포합니다.

또한이 솔루션을 적용 할 수있는 다른 실제 사용 사례에 대해서도 논의합니다.

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

 

전제 조건

이 연습을 완료하려면 다음 전제 조건이 있어야합니다.

 

 

ML 알고리즘에 공급할 데이터 세트 준비

이 게시물은 객체 감지 모델이라는 ML 알고리즘을 사용하여 사람이 사용자 지정 제한 구역에 있는지 감지하는 솔루션을 구축합니다. 2,000 개가 넘는 이미지가있는 Kaggle에서 제공 되는 공개적으로 사용 가능한 보행자 감지 데이터 세트를 사용합니다. 이 데이터 세트에는 인간 및 인간과 유사한 물체 (예 : 마네킹)에 대한 레이블이 있으므로 훈련 된 모델이 실제 인간과 판지 소품 또는 조각상을 더 정확하게 구분할 수 있습니다.

예를 들어 다음 이미지는 건설 작업자가 감지되고 사용자 지정 제한 구역 (빨간색 윤곽선)에있는 경우의 예입니다.

 

모델 훈련을 시작하려면 먼저 훈련 데이터와 모델 출력을 저장할 S3 버킷 을 생성 하십시오. AWS DeepLens 프로젝트의 경우 S3 버킷 이름은 접두사로 시작해야합니다 deeplens-. 이 데이터를 사용하여 ML 모델을 빠르게 구축, 교육 및 배포 할 수있는 기능을 제공하는 완전 관리 형 서비스 인 SageMaker로 모델을 교육합니다.

 

 

Amazon SageMaker로 모델 훈련

SageMaker Jupyter 노트북을 개발 환경으로 사용하여 모델을 교육합니다. Jupyter Notebook은 라이브 코드, 방정식, 시각화 및 설명 텍스트가 포함 된 문서를 만들고 공유 할 수있는 오픈 소스 웹 애플리케이션입니다. 이 게시물에서는 따라 할 수 있는 전체 노트북 인 Train_Object_Detection_People_DeepLens.ipynb 를 제공합니다 .

 

커스텀 객체 감지 모델을 생성하려면 GPU (그래픽 처리 장치) 지원 학습 작업 인스턴스를 사용해야합니다. GPU는 신경망 훈련에 필요한 계산을 병렬화하는 데 탁월합니다. 노트북 자체는 단일 ml.t2.medium 인스턴스이지만 학습 작업은 특히 ml.p2.xlarge 인스턴스를 사용합니다. GPU 지원 교육 작업 인스턴스에 액세스하려면 AWS 지원 센터에 서비스 제한 증가 요청을 제출 해야합니다 .

 

한도 증가를 수신 한 후 다음 단계를 완료하여 SageMaker 노트북 인스턴스를 생성합니다.

 

  1. SageMaker 콘솔에서 노트북 인스턴스를 선택 합니다 .
  2. 노트북 인스턴스 생성을 선택 합니다 .
  3. 들어 노트북 인스턴스 이름 , 노트북 인스턴스의 이름을 입력합니다.
  4. 들어 인스턴스 유형 을 선택 t2.medium합니다.

 

이것은 노트북 인스턴스가 지원하는 가장 저렴한 인스턴스 유형이며이 자습서에 충분합니다.

  1. 들어 IAM 역할 , 선택 의 새로운 역할을 만듭니다 .

 

이 AWS Identity and Access Management (IAM) 역할이 이전에 생성 한 S3 버킷 (prefix deeplens-)에 대한 액세스 권한 이 있는지 확인하십시오 .

  1. 노트북 인스턴스 생성을 선택 합니다 . 노트북 인스턴스를 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  1. 노트북 인스턴스 페이지의 상태가 InService로 변경되면 Jupyter 열기를 선택 하여 새로 생성 된 Jupyter 노트북 인스턴스를 시작합니다.
  2. 이전에 다운로드 한 파일 을 업로드 하려면 업로드 를 선택합니다 Train_Object_Detection_people_DeepLens.ipynb.

  1. 노트북을 열고 끝까지 따르십시오.
  2. 커널 설정에 대한 질문이 표시되면 conda_mxnet_p36을 선택 하십시오 .

Jupyter 노트북에는 텍스트와 코드 셀이 혼합되어 있습니다. 코드를 실행하려면 셀을 선택하고 Shift + Enter를 누릅니다 . 셀이 실행되는 동안 셀 옆에 별표가 나타납니다. 셀이 완료되면 출력 번호와 새 출력 셀이 원래 셀 아래에 나타납니다.

  1. 퍼블릭 S3 버킷에서 로컬 SageMaker 인스턴스로 데이터 세트를 다운로드하고 데이터의 압축을 풉니 다. 노트북의 코드를 따르면됩니다.
     !aws s3 cp s3://deeplens-public/samples/pedestriansafety/humandetection_data.zip .  
      
    !rm -rf humandetection/  
    !unzip humandetection_data.zip -d humandetection
    
  2. 데이터 세트를 SageMaker 알고리즘에 제공 할 수 있는 형식 ( RecordIO ) 으로 변환합니다 .
     !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/train_mask.lst $DATA_PATH/  
    !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/val_mask.lst $DATA_PATH/ 
    
  3. RecordIO 파일을 다시 Amazon S3로 전송합니다.

 

이제 모든 데이터 준비를 마쳤으므로 물체 감지기를 훈련 할 준비가되었습니다.

 

다양한 유형의 객체 감지 알고리즘이 있습니다. 이 게시물에서는 SSD (Single-Shot MultiBox Detection) 알고리즘 을 사용합니다 . SSD 알고리즘은 속도와 정확성의 균형이 잘 맞아 AWS DeepLens와 같은 에지 장치에서 실행하는 데 이상적입니다.

 

훈련 작업의 일부로 훈련 동작을 구성하는 데 도움이되는 하이퍼 파라미터에 대한 많은 옵션이 있습니다 (예 : 에포크 수, 학습률, 최적화 기 유형 및 미니 배치 크기). 하이퍼 파라미터를 사용하면 모델의 훈련 속도와 정확성을 조정할 수 있습니다. 하이퍼 파라미터에 대한 자세한 내용은 객체 감지 알고리즘을 참조하십시오 .

 

  1. 하이퍼 파라미터와 데이터 채널을 설정합니다. 다음과 같은 초 매개 변수 정의 예제를 사용해보십시오.
     od_model = sagemaker.estimator.Estimator(training_image,  
                                             role,   
                                             train_instance_count=1,   
                                             train_instance_type='ml.p2.xlarge',  
                                             train_volume_size = 50,  
                                             train_max_run = 360000,  
                                             input_mode= 'File',  
                                             output_path=s3_output_location,  
                                             sagemaker_session=sess)  
      
    od_model.set_hyperparameters(base_network='resnet-50',  
                                 use_pretrained_model=1,  
                                 num_classes=2,  
                                 mini_batch_size=32,  
                                 epochs=100,  
                                 learning_rate=0.003,  
                                 lr_scheduler_step='3,6',  
                                 lr_scheduler_factor=0.1,  
                                 optimizer='sgd',  
                                 momentum=0.9,  
                                 weight_decay=0.0005,  
                                 overlap_threshold=0.5,  
                                 nms_threshold=0.45,  
                                 image_shape=300,  
                                 num_training_samples=n_train_samples) 
    

 

노트북에는 미리 선택된 몇 가지 기본 하이퍼 파라미터가 있습니다. 보행자 감지를 위해 모델을 100 에포크 동안 훈련합니다. 이 학습 단계는 ml.p2.xlarge 인스턴스 1 개를 사용하여 약 2 시간이 소요됩니다. 다양한 하이퍼 파라미터 조합을 실험하거나 성능 향상을 위해 더 많은 시대를 위해 훈련 할 수 있습니다. 최신 요금에 대한 자세한 내용은 Amazon SageMaker 요금을 참조하십시오 .

  1. 한 줄의 코드로 훈련 작업을 시작하고 SageMaker 콘솔에서 시간 경과에 따른 정확성을 모니터링 할 수 있습니다.
    od_model.fit(inputs=data_channels, logs=True)  

 

훈련 작동 방식에 대한 자세한 내용은 CreateTrainingJob을 참조하십시오 . 프로비저닝 및 데이터 다운로드는 데이터 크기에 따라 시간이 걸립니다. 따라서 학습 작업에 대한 데이터 로그를 가져 오기 시작하는 데 몇 분 정도 걸릴 수 있습니다.

 

측정 항목 평균 평균 정밀도 (mAP)를 통해 학습 작업의 진행 상황을 모니터링 할 수 있습니다.이를 통해 모델의 객체 분류 능력 품질을 모니터링하고 올바른 경계 상자를 감지 할 수 있습니다. 데이터 로그는 또한 다른 손실 중에서도 데이터 세트의 모든 실행에 대해 한 세대에 대해 한 번 검증 데이터에 대한 mAP를 인쇄합니다. 이 측정 항목은 클래스와 그 주위의 정확한 경계 상자를 정확하게 감지 할 때 알고리즘 성능의 품질을 나타내는 프록시입니다.

 

작업이 완료되면 이전에 지정된 S3 버킷 및 폴더에서 학습 된 모델 파일을 찾을 수 있습니다 s3_output_location.

s3_output_location = 's3://{}/{}/output'.format(BUCKET, PREFIX)

 

이 게시물에서는 10 번째 Epoch와 100 번째 Epoch 완료시 검증 세트에 대한 결과를 보여줍니다. 10 번째 epoch가 끝날 무렵 검증 mAP는 약 0.027 인 반면 100 번째 epoch는 약 0.42였습니다.

 

더 나은 검색 결과를 얻으려면 자동 모델 튜닝을 위해 SageMaker에 내장 된 기능을 사용하여 하이퍼 파라미터를 튜닝 하고 더 많은 세대에 맞게 모델을 훈련시킬 수 있습니다. 정확도가 떨어지면 일반적으로 훈련을 중단합니다.

 

사용자 지정 제한 구역이있는 테스트 모델

훈련 된 모델을 AWS DeepLens에 배포하기 전에 SageMaker 호스팅 엔드 포인트를 사용하여 클라우드에서 테스트 할 수 있습니다. SageMaker 엔드 포인트는 REST API를 통해 실시간 추론을 수행 할 수있는 완전 관리 형 서비스입니다. SageMaker를 사용하면 새 엔드 포인트를 신속하게 배포하여 모델을 테스트 할 수 있으므로 모델을 교육하는 데 사용 된 로컬 인스턴스에서 모델을 호스팅 할 필요가 없습니다. 이를 통해 학습 중에 알고리즘이 보지 못한 이미지에 대한 모델에서 예측 (또는 추론)을 수행 할 수 있습니다.

 

학습에 사용한 것과 동일한 인스턴스 유형에서 호스팅 할 필요가 없습니다. 훈련은 일반적으로 호스팅하지 않는 다른 컴퓨팅 및 메모리 요구 사항 집합이 필요한 장기적이고 컴퓨팅 집약적 인 작업입니다. 모델을 호스팅 할 모든 유형의 인스턴스를 선택할 수 있습니다. 이 경우 훈련 할 ml.p3.2xlarge 인스턴스를 선택했지만 더 저렴한 CPU 인스턴스 인 ml.m4.xlarge에서 모델을 호스팅하도록 선택했습니다. 다음 코드 스 니펫은 엔드 포인트 배포를 보여줍니다.

 

object_detector = od_model.deploy(initial_instance_count = 1,
                                  instance_type = 'ml.m4.xlarge')

 

사용자 지정 제한 구역 (관심 지역)에서 감지

출력 형식은 [class_index, Confident_score, xmin, ymin, xmax, ymax]로 표현할 수 있습니다. 낮은 신뢰도 예측은 종종 위양성 또는 위음성 가능성이 높으므로 신뢰도가 낮은 예측은 삭제해야합니다. 다음 코드를 사용하여 사람의 경계 상자가 제한 구역과 겹치는 지 감지 할 수 있습니다.

def inRestrictedSection(ImShape = None, R1 = None, restricted_region = None, kclass = None, score = None, threshold = None):  
    statement = 'Person Not Detected in Restricted Zone'  
    if (kclass == 1) and (score > threshold):  
        Im1 = np.zeros((ImShape[0],ImShape[1],3), np.int32)  
        cv2.fillPoly(Im1, [R1], 255)  
        Im2 = np.zeros((ImShape[0],ImShape[1],3), np.int32)  
        if restricted_region is None:  
            restricted_region = np.array([[0,ImShape[0]],[ImShape[1],ImShape[0]],[ImShape[1],0], [0,0]], np.int32)  
        cv2.fillPoly(Im2, [restricted_region], 255)  
        Im = Im1 * Im2  
        if np.sum(np.greater(Im, 0))>0:  
            statement = 'Person Detected in Restricted Zone'  
    else:  
        statement = statement  
      
    return statement

기본적으로 전체 프레임은 사람이 있는지 평가됩니다. 그러나 사람의 존재가 높은 위험으로 간주되는 관심 영역을 쉽게 지정할 수 있습니다. 사용자 지정 제한 영역을 추가하려면 [X 축, Y 축]으로 표시되는 영역의 꼭지점 좌표를 추가하고 다각형을 만듭니다. 좌표는 시계 방향 또는 시계 반대 방향으로 입력해야합니다. 다음 코드를 참조하십시오.

restricted_region = None  
#restricted_region = np.array([[0,200],[100,200],[100,0], [10,10]], np.int32)

다음 샘플 코드는 제한 구역 내에서 식별되는 보행자를 보여줍니다.

file_name = 'humandetection/test_images/t1_image.jpg'  
img = cv2.imread(file_name)  
img =cv2.cvtColor(img,cv2.COLOR_BGR2RGB)  
thresh = 0.2  
height = img.shape[0]  
width = img.shape[1]  
colors = dict()  
  
  
with open(file_name, 'rb') as image:  
    f = image.read()  
    b = bytearray(f)  
    ne = open('n.txt','wb')  
    ne.write(b)  
      
  
results = object_detector.predict(b, initial_args={'ContentType': 'image/jpeg'})  
detections = json.loads(results)  
  
object_categories = ['no-person', 'person']  
  
for det in detections['prediction']:  
    (klass, score, x0, y0, x1, y1) = det  
    if score < thresh:  
        continue  
    cls_id = int(klass)  
    prob = score  
    if cls_id not in colors:  
        colors[cls_id] = (random.random(), random.random(), random.random())  
    xmin = int(x0 * width)  
    ymin = int(y0 * height)  
    xmax = int(x1 * width)  
    ymax = int(y1 * height)  
      
    R1 = np.array([[xmin,ymin],[xmax,ymin],[xmax,ymax], [xmin,ymax]], np.int32)  
    cv2.polylines(img,[R1],True, (255,255,0), thickness = 5)  
    cv2.polylines(img,[restricted_region],True, (255,0,0), thickness = 5)  
      
    plt.imshow(img)  
      
    print(inRestrictedSection(img.shape,R1 = R1, restricted_region= restricted_region, kclass = cls_id, score = prob, threshold=0.2))

다음 이미지는 결과를 보여줍니다.

AWS DeepLens에 솔루션 배포

배포 용 모델을 AWS DeepLens로 변환

SageMaker 교육을받은 SSD 모델을 AWS DeepLens에 배포 할 때 먼저 deploy.py 를 실행 하여 모델 아티팩트를 배포 가능한 모델로 변환 해야합니다 .

!rm -rf incubator-mxnet  
!git clone -b v1.7.x https://github.com/apache/incubator-mxnet  
  
MODEL_PATH = od_model.model_data  
TARGET_PATH ='s3://'+BUCKET+'/'+PREFIX+'/patched/'  
!rm -rf tmp && mkdir tmp  
  
rm -rf tmp && mkdir tmp  
!aws s3 cp $MODEL_PATH tmp  
!tar -xzvf tmp/model.tar.gz -C tmp  
!mv tmp/model_algo_1-0000.params tmp/ssd_resnet50_300-0000.params  
!mv tmp/model_algo_1-symbol.json tmp/ssd_resnet50_300-symbol.json  
!python incubator-mxnet/example/ssd/deploy.py --network resnet50 --data-shape 300 --num-class 2 --prefix tmp/ssd_  
!tar -cvzf ./patched_model.tar.gz -C tmp ./deploy_ssd_resnet50_300-0000.params ./deploy_ssd_resnet50_300-symbol.json ./hyperparams.json  
!aws s3 cp patched_model.tar.gz $TARGET_PATH

AWS DeepLens로 모델 가져 오기

AWS DeepLens 디바이스에서 모델을 실행하려면 AWS DeepLens 프로젝트를 생성해야합니다. 모델을 AWS DeepLens로 가져 오는 것부터 시작하십시오.

  1. AWS DeepLens 콘솔의 리소스 에서 모델을 선택합니다 .
  2. 모델 가져 오기를 선택합니다 .

  1. 들어 오기 소스 선택 외부 훈련 모델을 .
  2. 위 단계에서 deploy.py를 실행하여 저장 한 패치 된 모델 의 Amazon S3 위치를 입력합니다 .
  3. 들어 모델 프레임 워크 를 선택 MXNet을 .
  4. 모델 가져 오기를 선택합니다 .

 

추론 함수 만들기

추론 기능은 각 카메라 프레임을 모델에 공급하여 예측을 얻고 추론 결과 사용에 대한 사용자 지정 비즈니스 논리를 실행합니다. 당신은 사용 AWS 람다를 사용하면 AWS DeepLens에 배포하는 기능을 만들 수 있습니다. 이 함수는 AWS DeepLens 디바이스에서 로컬로 추론을 실행합니다.

 

먼저 AWS DeepLens에 배포 할 Lambda 함수를 생성해야합니다.

  1. 추론 Lambda 함수를 다운로드합니다 .
  2. Lambda 콘솔에서 함수를 선택합니다 .
  3. 함수 생성을 선택 합니다 .
  4. 처음부터 작성자를 선택합니다 .
  5. 들어 함수 이름 , 이름을 입력합니다.
  6. 의 경우 런타임 선택 파이썬 3.7 .
  7. 들어 선택하거나 실행 역할을 생성 , 선택 사용을 기존 역할을 .
  8. service-role / AWSDeepLensLambdaRole을 선택합니다 .
  9. 함수 생성을 선택 합니다 .

  1. 함수 세부 정보 페이지의 작업 메뉴에서 .zip 파일 업로드를 선택 합니다 .

  1. 이전에 다운로드 한 추론 Lambda 파일을 업로드합니다 .
  2. 저장 을 선택 하여 입력 한 코드를 저장합니다.
  3. 온 작업 메뉴 선택 새 버전을 게시합니다 .

 

함수를 게시하면 사용자 지정 프로젝트에 추가 할 수 있도록 AWS DeepLens 콘솔에서 사용할 수 있습니다.

  1. 버전 번호를 입력하고 게시를 선택합니다 .

 

 

추론 기능 이해

이 섹션에서는 추론 기능의 몇 가지 중요한 부분을 안내합니다. 먼저 다음 두 가지 특정 파일에주의해야합니다.

  • labels.txt – 신경망 (정수)의 출력을 사람이 읽을 수있는 레이블 (문자열)로 매핑합니다.
  • lambda_function.py – 모든 카메라 프레임에서 예측을 생성하고 결과를 다시 보내기 위해 호출되는 함수에 대한 코드를 포함합니다.

 

lambda_function.py에서 먼저 모델을로드하고 최적화합니다. GPU가있는 클라우드 가상 머신에 비해 AWS DeepLens는 컴퓨팅 성능이 낮습니다. AWS DeepLens는 Intel OpenVino 모델 최적화 프로그램을 사용하여 SageMaker에서 훈련 된 모델을 하드웨어에서 실행되도록 최적화합니다. 다음 코드는 로컬에서 실행되도록 모델을 최적화합니다.

client.publish(topic=iot_topic, payload='Optimizing model...')  
ret, model_path = mo.optimize('deploy_ssd_resnet50_300', INPUT_W, INPUT_H)  
  
# Load the model onto the GPU.  
client.publish(topic=iot_topic, payload='Loading model...')  
model = awscam.Model(model_path, {'GPU': 1})  

그런 다음 카메라의 이미지에 대해 프레임 당 모델을 실행합니다. 다음 코드를 참조하십시오.

while True:  
    # Get a frame from the video stream  
    ret, frame = awscam.getLastFrame()  
    if not ret:  
        raise Exception('Failed to get frame from the stream')  
    # Resize frame to the same size as the training set.  
    frame_resize = cv2.resize(frame, (INPUT_H, INPUT_W))  
    # Run the images through the inference engine and parse the results using  
    # the parser API, note it is possible to get the output of doInference  
    # and do the parsing manually, but since it is a ssd model,  
    # a simple API is provided.  
    parsed_inference_results = model.parseResult(model_type,  
                                                 model.doInference(frame_resize))  

 

마지막으로 텍스트 예측 결과를 클라우드로 다시 보냅니다. 클라우드에서 텍스트 결과를 보는 것은 모델이 올바르게 작동하는지 확인하는 편리한 방법입니다. 각 AWS DeepLens 디바이스에는 추론 결과를 수신하기 위해 자동으로 생성 된 전용 iot_topic이 있습니다. 다음 코드를 참조하십시오.

# Send results to the cloud  
client.publish(topic=iot_topic, payload=json.dumps(cloud_output))  

사용자 지정 AWS DeepLens 프로젝트 생성

새 AWS DeepLens 프로젝트를 생성하려면 다음 단계를 완료하십시오.

  1. AWS DeepLens 콘솔의 프로젝트 페이지에서 프로젝트 생성을 선택합니다 .
  2. 를 들어 프로젝트 유형 을 선택 비어있는 새 프로젝트를 만듭니다 .
  3. 다음을 선택합니다 .

  1. 프로젝트 이름을 지정합니다 yourname-pedestrian-detector-.
  2. 모델 추가를 선택합니다 .
  3. 방금 생성 한 모델을 선택합니다.
  4. 기능 추가를 선택 합니다 .
  5. 이전에 생성 한 Lambda 함수를 이름으로 검색합니다.
  6. 프로젝트 생성을 선택합니다 .
  7. 온 프로젝트 페이지, 배포 할 프로젝트를 선택합니다.
  8. Deploy to device를 선택 합니다 .
  9. 들어 대상 장치 , 장치를 선택합니다.
  10. 검토를 선택합니다 .
  11. 설정을 검토하고 배포를 선택합니다 .

 

배포를 완료하는 데는 AWS DeepLens가 연결된 네트워크의 속도에 따라 최대 10 분이 소요될 수 있습니다. 배포가 완료되면 페이지에 “축하합니다. 이제 모델이 AWS DeepLens에서 로컬로 실행 중입니다!”라는 메시지와 함께 녹색 배너가 표시됩니다.

 

텍스트 출력을 보려면 장치 세부 정보 페이지에서 프로젝트 출력 섹션 까지 아래로 스크롤합니다 . 섹션의 지침에 따라 주제를 복사하고 AWS IoT Core 콘솔로 이동하여 주제를 구독합니다. 다음 스크린 샷과 같은 결과가 표시되어야합니다.

 

비디오 스트림 또는 텍스트 출력보기에 대한 단계별 지침 은 AWS DeepLens에서 결과보기를 참조하십시오 .

 

 

실제 사용 사례

이제 AWS DeepLens에서 실행되는 모델의 예측이 있으므로 이러한 예측을 경고 및 통찰력으로 변환 해 보겠습니다. 이와 같은 프로젝트의 가장 일반적인 용도는 다음과 같습니다.

  • 지정된 날에 얼마나 많은 사람이 제한 구역에 들어 갔는지 파악하여 건설 현장에서 더 많은 안전 표지가 필요한 지점을 식별 할 수 있습니다. 이는 결과를 수집하고이를 사용하여 Amazon QuickSight 를 사용하여 대시 보드를 생성함으로써 수행 할 수 있습니다 . QuickSight를 사용하여 대시 보드를 생성하는 방법에 대한 자세한 내용은 AWS DeepLens 및 GluonCV를 사용하여 재택 근무 자세 추적기 구축을 참조 하십시오 .
  • AWS DeepLens에서 출력을 수집하고 누군가가 제한된 영역에 들어갈 때 경고음을 울리도록 Raspberry Pi를 구성합니다. AWS DeepLens 디바이스를 Raspberry Pi 디바이스에 연결하는 방법에 대한 자세한 내용은 AWS DeepLens를 사용 하여 휴지통 분류기 빌드를 참조하십시오 .

 

결론

이 게시물에서는 객체 감지 모델을 교육하고이를 AWS DeepLens에 배포하여 제한된 영역에 들어오는 사람을 감지하는 방법을 배웠습니다. 이 자습서를 참조하여 AWS DeepLens에서 사용자 지정 객체 감지 프로젝트를 교육하고 배포 할 수 있습니다.

 

이 자습서와 AWS DeepLens를 사용한 기타 자습서, 샘플 및 프로젝트 아이디어에 대한 자세한 설명은 AWS DeepLens 레시피를 참조하십시오 .

원문URL: https://aws.amazon.com/ko/blogs/machine-learning/protecting-people-through-virtual-boundaries-computer-vision/

 

메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.