المهارة المعرفية لتحليل الصور

تستخرج مهارة تحليل الصور مجموعة غنية من الميزات المرئية استنادا إلى محتوى الصورة. على سبيل المثال، يمكنك إنشاء تسمية توضيحية من صورة أو إنشاء علامات أو تحديد المشاهير والمعالم. هذه المقالة هي الوثائق المرجعية لمهارة تحليل الصور. راجع استخراج النص والمعلومات من الصور للحصول على إرشادات الاستخدام.

تستخدم هذه المهارة نماذج التعلم الآلي التي توفرها Azure الذكاء الاصطناعي Vision في خدمات Azure الذكاء الاصطناعي. يعمل تحليل الصور على الصور التي تفي بالمتطلبات التالية:

  • يجب تقديم الصورة بتنسيق JPEG أو PNG أو GIF أو BMP
  • يجب أن يكون حجم ملف الصورة أقل من 4 ميغابايت (MB)
  • يجب أن تكون أبعاد الصورة أكبر من 50 x 50 بكسل

يتم تنفيذ هذه المهارة باستخدام الذكاء الاصطناعي Image Analysis API الإصدار 3.2. إذا كان الحل يتطلب استدعاء إصدار أحدث من واجهة برمجة تطبيقات الخدمة هذه (مثل الإصدار 4.0)، ففكر في التنفيذ من خلال مهارة مخصصة لواجهة برمجة تطبيقات الويب.

إشعار

ترتبط هذه المهارة بخدمات Azure الذكاء الاصطناعي وتتطلب موردا قابلا للفوترة للمعاملات التي تتجاوز 20 مستندا لكل مفهرس يوميا. يتم فرض رسوم على تنفيذ المهارات المضمنة بسعر الدفع حسب الاستخدام لخدمات Azure الذكاء الاصطناعي الحالية.

بالإضافة إلى ذلك، استخراج الصور قابل للفوترة بواسطة Azure الذكاء الاصطناعي Search.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

معلمات المهارة

المعلمات حساسة لحالة الأحرف.

اسم المعلمة ‏‏الوصف
defaultLanguageCode سلسلة تشير إلى اللغة المراد إرجاعها. ترجع الخدمة نتائج التعرف بلغة محددة. إذا لم يتم تحديد هذه المعلمة، فإن القيمة الافتراضية هي "en".

تتضمن اللغات المدعومة مجموعة فرعية من اللغات المتوفرة بشكل عام من Azure الذكاء الاصطناعي Vision. عندما يتم إدخال لغة حديثا بحالة توفر عامة في خدمة الذكاء الاصطناعي Vision، يكون هناك تأخير متوقع قبل دمجها بالكامل ضمن هذه المهارة.
visualFeatures صفيف من السلاسل يشير إلى أنواع الميزات المرئية المراد إرجاعها. تتضمن أنواع الميزات المرئية الصالحة ما يلي:
  • البالغ - يكتشف ما إذا كانت الصورة إباحية (تصور العري أو الفعل الجنسي)، أو gory (يصور العنف الشديد أو الدم) أو موحية (تعرف أيضا باسم المحتوى الشنيعة).
  • العلامات التجارية - يكتشف علامات تجارية مختلفة داخل صورة، بما في ذلك الموقع التقريبي.
  • الفئات - يصنف محتوى الصورة وفقا لتصنيف محدد بواسطة خدمات Azure الذكاء الاصطناعي.
  • description - يصف محتوى الصورة بجملة كاملة باللغات المدعومة.
  • الوجوه - يكتشف ما إذا كانت الوجوه موجودة. إذا كان موجودا، يولد إحداثيات ونوع الجنس والعمر.
  • الكائنات - يكشف عن كائنات مختلفة داخل صورة، بما في ذلك الموقع التقريبي.
  • العلامات - وضع علامة على الصورة بقائمة مفصلة من الكلمات المتعلقة بمحتوى الصورة.
أسماء الميزات المرئية حساسة لحالة الأحرف. تم إهمال كل من ميزات اللون و imageType المرئية، ولكن يمكنك الوصول إلى هذه الوظيفة من خلال مهارة مخصصة. راجع وثائق Azure الذكاء الاصطناعي Vision Image Analysis التي يتم دعم الميزات المرئية عليها مع كل defaultLanguageCode.
details صفيف من السلاسل يشير إلى التفاصيل الخاصة بالمجال التي يجب إرجاعها. تتضمن أنواع الميزات المرئية الصالحة ما يلي:
  • المشاهير - يحدد المشاهير إذا تم الكشف عنها في الصورة.
  • المعالم - يحدد المعالم إذا تم اكتشافها في الصورة.

إدخالات المهارات

اسم الإدخال ‏‏الوصف
image نوع معقد. يعمل حاليا فقط مع حقل "/document/normalized_images"، الذي ينتجه مفهرس Azure blob عند imageAction تعيينه إلى قيمة أخرى غير none.

إخراجات المهارات

اسم الإخراج ‏‏الوصف
adult الإخراج هو كائن بالغ واحد من نوع معقد، يتكون من حقول منطقية (isAdultContent، ، isGoryContentisRacyContent) ودرجات النوع المزدوج (adultScore، goreScore، ). racyScore
brands الإخراج هو صفيف من عناصر العلامة التجارية ، حيث العنصر هو نوع معقد يتكون من name (سلسلة) ودرجة confidence (مزدوجة). كما يقوم بإرجاع rectangle مع أربعة إحداثيات مربع إحاطة (x، y، w، h، بالبكسل) تشير إلى موضع داخل الصورة. للمستطيل، x و y هما أعلى اليسار. أسفل اليسار هو x، y+h. أعلى اليمين هو x+w، y. أسفل اليمين هو x+w، y+h.
categories الإخراج عبارة عن صفيف من عناصر الفئة ، حيث يكون كل عنصر فئة نوعا معقدا يتكون من name (سلسلة) score و(مزدوجة) واختيارية detail تحتوي على تفاصيل المشاهير أو المعالم. راجع تصنيف الفئة للحصول على القائمة الكاملة لأسماء الفئات. التفاصيل هي نوع معقد متداخل. تتكون تفاصيل المشاهير من اسم ودرجة ثقة ومربع إحاطة بالوجه. تتكون تفاصيل المعالم من اسم ودرجة ثقة.
description الإخراج هو كائن وصف واحد من نوع معقد، يتكون من قوائم tags و caption (صفيف يتكون من Text (سلسلة) و confidence (مزدوج)).
faces نوع معقد يتكون من age، gender، وجود faceBoundingBox أربعة إحداثيات مربع إحاطة (بالبكسل) تشير إلى موضع داخل الصورة. الإحداثيات هي top، left، width، . height
objects الإخراج عبارة عن صفيف من عناصر الميزات المرئية. كل كائن هو نوع معقد، يتكون من object (سلسلة)، confidence (مزدوج)، rectangle (مع أربعة إحداثيات مربع إحاطة تشير إلى موضع داخل الصورة)، ويحتوي parent على اسم كائن وثقة .
tags الإخراج عبارة عن صفيف من كائنات imageTag ، حيث يكون عنصر العلامة نوعا معقدا يتكون من name (سلسلة) hint و(سلسلة) و confidence (مزدوج). إضافة تلميح نادر. يتم إنشاؤه فقط إذا كانت العلامة غامضة. على سبيل المثال، قد تحتوي الصورة التي تحمل علامة "curling" على تلميح "الرياضة" للإشارة إلى محتواها بشكل أفضل.

نموذج تعريف المهارة

{
    "description": "Extract image analysis.",
    "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
    "context": "/document/normalized_images/*",
    "defaultLanguageCode": "en",
    "visualFeatures": [
        "adult",
        "brands",
        "categories",
        "description",
        "faces",
        "objects",
        "tags"
    ],
    "inputs": [
        {
            "name": "image",
            "source": "/document/normalized_images/*"
        }
    ],
    "outputs": [
        {
            "name": "adult"
        },
        {
            "name": "brands"
        },
        {
            "name": "categories"
        },
        {
            "name": "description"
        },
        {
            "name": "faces"
        },
        {
            "name": "objects"
        },
        {
            "name": "tags"
        }
    ]
}

فهرس العينة

بالنسبة للكائنات الفردية (مثل adult و description)، يمكنك هيكلتها في الفهرس ك Collection(Edm.ComplexType) لإرجاعها adult وإخراجها description جميعا. لمزيد من المعلومات حول تعيين المخرجات إلى حقول الفهرسة، راجع تسوية المعلومات من الأنواع المعقدة.

{
    "fields": [
        {
            "name": "metadata_storage_name",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "filterable": false,
            "facetable": false,
            "sortable": true
        },
        {
            "name": "metadata_storage_path",
            "type": "Edm.String",
            "searchable": true,
            "filterable": false,
            "facetable": false,
            "sortable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "sortable": false,
            "searchable": true,
            "filterable": false,
            "facetable": false
        },
        {
            "name": "adult",
            "type": "Edm.ComplexType",
            "fields": [
                {
                    "name": "isAdultContent",
                    "type": "Edm.Boolean",
                    "searchable": false,
                    "filterable": true,
                    "facetable": true
                },
                {
                    "name": "isGoryContent",
                    "type": "Edm.Boolean",
                    "searchable": false,
                    "filterable": true,
                    "facetable": true
                },
                {
                    "name": "isRacyContent",
                    "type": "Edm.Boolean",
                    "searchable": false,
                    "filterable": true,
                    "facetable": true
                },
                {
                    "name": "adultScore",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "goreScore",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "racyScore",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                }
            ]
        },
        {
            "name": "brands",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "name",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "rectangle",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "x",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "y",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "w",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "h",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "categories",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "name",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "score",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "detail",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "celebrities",
                            "type": "Collection(Edm.ComplexType)",
                            "fields": [
                                {
                                    "name": "name",
                                    "type": "Edm.String",
                                    "searchable": true,
                                    "filterable": false,
                                    "facetable": false
                                },
                                {
                                    "name": "faceBoundingBox",
                                    "type": "Collection(Edm.ComplexType)",
                                    "fields": [
                                        {
                                            "name": "x",
                                            "type": "Edm.Int32",
                                            "searchable": false,
                                            "filterable": false,
                                            "facetable": false
                                        },
                                        {
                                            "name": "y",
                                            "type": "Edm.Int32",
                                            "searchable": false,
                                            "filterable": false,
                                            "facetable": false
                                        }
                                    ]
                                },
                                {
                                    "name": "confidence",
                                    "type": "Edm.Double",
                                    "searchable": false,
                                    "filterable": false,
                                    "facetable": false
                                }
                            ]
                        },
                        {
                            "name": "landmarks",
                            "type": "Collection(Edm.ComplexType)",
                            "fields": [
                                {
                                    "name": "name",
                                    "type": "Edm.String",
                                    "searchable": true,
                                    "filterable": false,
                                    "facetable": false
                                },
                                {
                                    "name": "confidence",
                                    "type": "Edm.Double",
                                    "searchable": false,
                                    "filterable": false,
                                    "facetable": false
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "description",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "tags",
                    "type": "Collection(Edm.String)",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "captions",
                    "type": "Collection(Edm.ComplexType)",
                    "fields": [
                        {
                            "name": "text",
                            "type": "Edm.String",
                            "searchable": true,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "confidence",
                            "type": "Edm.Double",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "faces",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "age",
                    "type": "Edm.Int32",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "gender",
                    "type": "Edm.String",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "faceBoundingBox",
                    "type": "Collection(Edm.ComplexType)",
                    "fields": [
                        {
                            "name": "top",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "left",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "width",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "height",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "objects",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "object",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "rectangle",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "x",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "y",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "w",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "h",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                },
                {
                    "name": "parent",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "object",
                            "type": "Edm.String",
                            "searchable": true,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "confidence",
                            "type": "Edm.Double",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "tags",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "name",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "hint",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                }
            ]
        }
    ]
}

عينة تعيين حقل الإخراج

يمكن أن يكون الحقل الهدف حقلا أو مجموعة معقدة. يحدد تعريف الفهرس أي حقول فرعية.

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/adult",
        "targetFieldName": "adult"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/brands/*",
        "targetFieldName": "brands"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/*",
        "targetFieldName": "categories"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/description",
        "targetFieldName": "description"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/faces/*",
        "targetFieldName": "faces"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/objects/*",
        "targetFieldName": "objects"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/tags/*",
        "targetFieldName": "tags"
    }

التباين في تعيينات حقول الإخراج (الخصائص المتداخلة)

يمكنك تحديد تعيينات حقول الإخراج إلى خصائص ذات مستوى أدنى، مثل المشاهير أو المعالم فقط. في هذه الحالة، تأكد من أن مخطط الفهرس يحتوي على حقل يحتوي على كل تفاصيل على وجه التحديد.

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
        "targetFieldName": "celebrities"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
        "targetFieldName": "landmarks"
    }

عينة الإدخال

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "image": {
                    "data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
                    "width": 500,
                    "height": 300,
                    "originalWidth": 5000,
                    "originalHeight": 3000,
                    "rotationFromOriginal": 90,
                    "contentOffset": 500,
                    "pageNumber": 2
                }
            }
        }
    ]
}

عينة الإخراج

{
  "values": [
    {
      "recordId": "1",
      "data": {
        "categories": [
          {
            "name": "abstract_",
            "score": 0.00390625
          },
          {
            "name": "people_",
            "score": 0.83984375,
            "detail": {
              "celebrities": [
                {
                  "name": "Satya Nadella",
                  "faceBoundingBox": [
                        {
                            "x": 273,
                            "y": 309
                        },
                        {
                            "x": 395,
                            "y": 309
                        },
                        {
                            "x": 395,
                            "y": 431
                        },
                        {
                            "x": 273,
                            "y": 431
                        }
                    ],
                  "confidence": 0.999028444
                }
              ],
              "landmarks": [ ]
            }
          }
        ],
        "adult": {
          "isAdultContent": false,
          "isRacyContent": false,
          "isGoryContent": false,
          "adultScore": 0.0934349000453949,
          "racyScore": 0.068613491952419281,
          "goreScore": 0.08928389008070282
        },
        "tags": [
          {
            "name": "person",
            "confidence": 0.98979085683822632
          },
          {
            "name": "man",
            "confidence": 0.94493889808654785
          },
          {
            "name": "outdoor",
            "confidence": 0.938492476940155
          },
          {
            "name": "window",
            "confidence": 0.89513939619064331
          }
        ],
        "description": {
          "tags": [
            "person",
            "man",
            "outdoor",
            "window",
            "glasses"
          ],
          "captions": [
            {
              "text": "Satya Nadella sitting on a bench",
              "confidence": 0.48293603002174407
            }
          ]
        },
        "faces": [
          {
            "age": 44,
            "gender": "Male",
            "faceBoundingBox": [
                {
                    "x": 1601,
                    "y": 395
                },
                {
                    "x": 1653,
                    "y": 395
                },
                {
                    "x": 1653,
                    "y": 447
                },
                {
                    "x": 1601,
                    "y": 447
                }
            ]
          }
        ],
        "objects": [
          {
            "rectangle": {
              "x": 25,
              "y": 43,
              "w": 172,
              "h": 140
            },
            "object": "person",
            "confidence": 0.931
          }
        ],
        "brands":[  
           {  
              "name":"Microsoft",
              "confidence": 0.903,
              "rectangle":{  
                 "x":20,
                 "y":97,
                 "w":62,
                 "h":52
              }
           }
        ]
      }
    }
  ]
}

حالات الخطأ

في حالات الخطأ التالية، لا يتم استخراج أي عناصر.

رمز الخطأ ‏‏الوصف
NotSupportedLanguage اللغة المقدمة غير مدعومة.
InvalidImageUrl عنوان URL للصورة منسق بشكل سيئ أو لا يمكن الوصول إليه.
InvalidImageFormat بيانات الإدخال ليست صورة صالحة.
InvalidImageSize صورة الإدخال كبيرة جدا.
NotSupportedVisualFeature نوع الميزة المحدد غير صالح.
NotSupportedImage صورة غير معتمدة، على سبيل المثال، مواد إباحية للأطفال.
InvalidDetails نموذج خاص بالمجال غير معتمد.

إذا تلقيت الخطأ مشابها ل "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"، فتحقق من المسار. كل من المشاهير والمعالم هي خصائص ضمن detail.

"categories":[  
      {  
         "name":"building_",
         "score":0.97265625,
         "detail":{  
            "landmarks":[  
               {  
                  "name":"Forbidden City",
                  "confidence":0.92013400793075562
               }
            ]

(راجع أيضًا )