AI에 크래피를 보여주면 무엇을 생각하는지 (Azure의 이미지 분석 API입니다)

소개



#클래피챌린지 Advent Calendar 2020 8일째의 기사입니다.
크래피가 손에 들지 않기 때문에 과거에 촬영한 크래피의 이미지를 Azure Computer Vision의 이미지 분석 API에 던져 보았습니다. 이미지 분석 API를 사용하면 이미지의 설명문을 생성합니다.
HoloLens2에서도 이런 기사 「 HoloLens2 × Azure Cognitive Services(이미지 분석 API로 이미지 설명문 생성) 」를 쓰고 있으므로 봐 주세요.

개발 환경


  • Windows 10
  • Python 3.6
  • Azure

  • 소개



    이미지 분석 API에 던지는 Python 프로그램은 다음과 같습니다. Azure 포털에서 Computer Vision API를 만들고 엔드포인트와 키를 복사합니다.

    analyze.py
    import os
    import sys
    import requests
    # If you are using a Jupyter notebook, uncomment the following line.
    # %matplotlib inline
    import matplotlib.pyplot as plt
    from PIL import Image
    from io import BytesIO
    import os
    
    subscription_key = "<Insert Your API Key>"
    endpoint = "https://<Insert Your Resource Name>.cognitiveservices.azure.com/"
    analyze_url = endpoint + "vision/v3.1/analyze"
    
    # Set image_path to the local path of an image that you want to analyze.
    # Sample images are here, if needed:
    # https://github.com/Azure-Samples/cognitive-services-sample-data-files/tree/master/ComputerVision/Images
    
    dirname = "clappy/"
    files = os.listdir(dirname)
    
    for file in files:
        # Read the image into a byte array
        image_data = open(dirname + file, "rb").read()
        headers = {'Ocp-Apim-Subscription-Key': subscription_key,
                'Content-Type': 'application/octet-stream'}
        params = {'visualFeatures': 'Categories,Description,Color'}
        response = requests.post(
            analyze_url, headers=headers, params=params, data=image_data)
        response.raise_for_status()
    
        # The 'analysis' object contains various fields that describe the image. The most
        # relevant caption for the image is obtained from the 'description' property.
        analysis = response.json()
        print(analysis)
        image_caption = analysis["description"]["captions"][0]["text"].capitalize()
    
        # Display the image and overlay it with the caption.
        image = Image.open(BytesIO(image_data))
        fig = plt.figure()
        plt.imshow(image)
        plt.axis("off")
        _ = plt.title(image_caption, size="x-large", y=-0.1)
        # plt.show()
        fig.savefig("result/"+file)
    

    실행






















    요약



    비교적 정확하게 toy였다.

    좋은 웹페이지 즐겨찾기