Автоматически присваивать теги изображения для функции поиска - PullRequest
0 голосов
/ 11 февраля 2020

Я играю в игру, в которой используются скины, около 200 000 из них, и игроки изо всех сил пытаются найти их, поскольку на самом деле нет функции поиска, кроме случайных имен. У каждого скина есть имя, выбранное пользователями, которые его загружают, и все, другие не знают об этом, пока не увидят, что его использует кто-то другой. Я сделал несколько инструментов, чтобы упростить это, и я хотел реализовать функцию поиска по тегам, например, вы ищете «собака», и она дает вам скины, содержащие собак. Есть ли программа, способная автоматически присваивать теги 200 тыс. Изображений?

Игра: https://Gota.io

Мой "инструмент" (плохо сделанный сайт) https://specy.it/SkinGallery.html

И расширение к игре: https://www.dropbox.com/s/36w6dkz22pxksrz/Extension.js?dl=0

1 Ответ

0 голосов
/ 11 февраля 2020

Это не моя специальность, и это развивающаяся область, но в настоящее время существуют службы "распознавания изображений как услуга", такие как Google Vision , API остальных которых вы можете использовать, чтобы иметь тег компьютера ваше изображение в соответствии с тем, что оно видит.

При этом я не уверен, что ваши шкуры подходят для хорошего результата. Если мы попробуем это на коже «мертвого микки», мы получим:

enter image description here

Ну да, я думаю, что есть животное. Если вы посмотрите на вкладку «метки», то увидите, что она описывает в основном цвета, но там также упоминается «вымышленный персонаж» на 12-м месте или около того.

В зависимости от скина разные контексты могут подойти вам лучше. , Например, если вы используете Sage Mode Naruto, объекты, метки и логотипы приносят очень мало информации, но на вкладке Web написано:

enter image description here

Как бы вы справились? ответ службы отдыха? Ну, это JSON с формой:

{
  "cropHintsAnnotation": {
    "cropHints": [...]
  },
  "fullTextAnnotation": {
    "pages": [
      {
        "blocks": [...],
        "height": 512,
        "property": {
          "detectedLanguages": [
            {
              "confidence": 0.88,
              "languageCode": "en"
            }
          ]
        },
        "width": 512
      }
    ],
    "text": "SUH DUDE\n.\n"
  },
  "imagePropertiesAnnotation": {
    "cropHints": [...],
    "dominantColors": {
      "colors": [...]
    }
  },
  "labelAnnotations": [
    {
      "description": "Illustration",
      "mid": "/m/01kr8f",
      "score": 0.8927454,
      "topicality": 0.8927454
    },
    {
      "description": "Cartoon",
      "mid": "/m/0215n",
      "score": 0.8583309,
      "topicality": 0.8583309
    },
    {
      "description": "Circle",
      "mid": "/m/01vkl",
      "score": 0.70432633,
      "topicality": 0.70432633
    },
    {
      "description": "Art",
      "mid": "/m/0jjw",
      "score": 0.6253477,
      "topicality": 0.6253477
    },
    {
      "description": "Clip art",
      "mid": "/m/03g09t",
      "score": 0.5876344,
      "topicality": 0.5876344
    },
    {
      "description": "Fictional character",
      "mid": "/m/02h7lkt",
      "score": 0.52791756,
      "topicality": 0.52791756
    }
  ],
  "localizedObjectAnnotations": [...],
  "logoAnnotations": [...], 
      "description": "Los Angeles Rams",
      "mid": "/m/06x76",
      "score": 0.5958965
    }
  ],
  "safeSearchAnnotation": {
    "adult": "VERY_UNLIKELY",
    "medical": "VERY_UNLIKELY",
    "racy": "VERY_UNLIKELY",
    "spoof": "VERY_UNLIKELY",
    "violence": "VERY_UNLIKELY"
  },
  "textAnnotations": [...],
    {
      "boundingPoly": {
        "vertices": [
          {
            "x": 182,
            "y": 40
          },
          {
            "x": 295,
            "y": 40
          },
          {
            "x": 295,
            "y": 111
          },
          {
            "x": 182,
            "y": 111
          }
        ]
      },
      "description": "SUH DUDE\n.\n",
      "locale": "en"
    },
    {
      "boundingPoly": {
        "vertices": [
          {
            "x": 182,
            "y": 44
          },
          {
            "x": 222,
            "y": 43
          },
          {
            "x": 223,
            "y": 66
          },
          {
            "x": 183,
            "y": 67
          }
        ]
      },
      "description": "SUH"
    },
    {
      "boundingPoly": {
        "vertices": [
          {
            "x": 237,
            "y": 42
          },
          {
            "x": 294,
            "y": 40
          },
          {
            "x": 295,
            "y": 64
          },
          {
            "x": 238,
            "y": 66
          }
        ]
      },
      "description": "DUDE"
    },
    {
      "boundingPoly": {
        "vertices": [
          {
            "x": 194,
            "y": 101
          },
          {
            "x": 196,
            "y": 100
          },
          {
            "x": 200,
            "y": 111
          },
          {
            "x": 198,
            "y": 111
          }
        ]
      },
      "description": "."
    }
  
  "webDetection": {
    "bestGuessLabels": [
      {
        "label": "cartoon"
      }
    ],
    "pagesWithMatchingImages": [
      {
        "pageTitle": "edit #anime #naruto #foryou #foryoupage #narutouzumaki ... - TikTok",
        "partialMatchingImages": [
          {
            "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
          }
        ],
        "url": "https://www.tiktok.com/@sakura._.haruno_editz/video/6777103057055517958?lang=en"
      },
      {
        "pageTitle": "Originalton - edix_official TikTok Music Videos • TikyToky",
        "partialMatchingImages": [
          {
            "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
          }
        ],
        "url": "https://tikytoky.com/music/originalton-6768700410359302918"
      },
      {
        "pageTitle": ".... Wanna gain tons of followers? Follow @dragonballexclusives ...",
        "partialMatchingImages": [
          {
            "url": "https://scontent-frt3-1.cdninstagram.com/vp/cdb9be9aa9707b90d55564a965668b7c/5E881986/t51.2885-19/s150x150/71524634_2513191889001976_2699215275693178880_n.jpg?_nc_ht=scontent-frt3-1.cdninstagram.com"
          }
        ],
        "url": "https://www.mystalk.net/detail/1917580489812869720_7212599026"
      },
      {
        "pageTitle": "edit #anime #naruto #foryou #foryoupage #narutouzumaki ... - TikTok",
        "partialMatchingImages": [
          {
            "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
          }
        ],
        "url": "https://www.tiktok.com/@sakura._.haruno_editz/video/6777103057055517958?region=KR&langCountry=pa&source=h5_t&lang=ar"
      },
      {
        "pageTitle": "edit #anime #naruto #foryou #foryoupage #narutouzumaki ... - TikTok",
        "partialMatchingImages": [
          {
            "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
          }
        ],
        "url": "https://www.tiktok.com/@sakura._.haruno_editz/video/6777103057055517958?region=KR&langCountry=pa&source=h5_t&lang=en"
      },
      {
        "pageTitle": "edit #anime #naruto #foryou #foryoupage #narutouzumaki ... - TikTok",
        "partialMatchingImages": [
          {
            "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
          }
        ],
        "url": "https://www.tiktok.com/@sakura._.haruno_editz/video/6777103057055517958?region=JP&langCountry=ja"
      },
      {
        "pageTitle": "edit #anime #naruto #foryou #foryoupage #narutouzumaki ... - TikTok",
        "partialMatchingImages": [
          {
            "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
          }
        ],
        "url": "https://www.tiktok.com/@sakura._.haruno_editz/video/6777103057055517958?lang=de"
      }
    ],
    "partialMatchingImages": [
      {
        "url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/b27c516d2faee4174d0e4a26b7a3d466"
      },
      {
        "url": "https://scontent-frt3-1.cdninstagram.com/vp/cdb9be9aa9707b90d55564a965668b7c/5E881986/t51.2885-19/s150x150/71524634_2513191889001976_2699215275693178880_n.jpg?_nc_ht=scontent-frt3-1.cdninstagram.com"
      }
    ],
    "visuallySimilarImages": [
      {
        "url": "https://previews.123rf.com/images/lenm/lenm1703/lenm170300080/73206609-sketchy-illustration-featuring-a-woman-looking-fondly-at-her-baby-strapped-to-a-carrier.jpg"
      },
      {
        "url": "https://media.gettyimages.com/vectors/cartoon-soccer-football-girl-character-vector-id487299807"
      },
      {
        "url": "https://pbs.twimg.com/profile_images/1062176350797066241/UhaIkhRy_400x400.jpg"
      },
      {
        "url": "https://img.favpng.com/1/13/23/vertebrate-line-art-cartoon-clip-art-png-favpng-2LN24w4JHvqm4VfaF0gq56thE_t.jpg"
      },
      {
        "url": "https://f1.pngfuel.com/png/337/556/27/smile-human-cartoon-character-pink-m-happiness-behavior-purple-png-clip-art-thumbnail.png"
      },
      {
        "url": "https://img.favpng.com/8/3/13/clip-art-illustration-dance-hula-vector-graphics-png-favpng-jPQ56XsgP7Gi2cMLzhxbFApeA_t.jpg"
      },
      {
        "url": "https://img.favpng.com/16/4/23/clip-art-pre-school-illustration-human-behavior-png-favpng-VEBwHZmyxNijn756GP0YUW6BV_t.jpg"
      },
      {
        "url": "https://cdn.imgbin.com/11/5/20/imgbin-blond-girl-woman-blonde-haired-s-vPKgK1yAr3Z1vhLcyBms7tCL0.jpg"
      },
      {
        "url": "https://thumbnail.imgbin.com/3/13/22/imgbin-homo-sapiens-woman-cartoon-gipsy-nCHD5ktXjAryu06DKrqc4cZmR_t.jpg"
      },
      {
        "url": "http://clipartmag.com/images/shocked-clipart-1.jpg"
      },
      {
        "url": "https://i.pinimg.com/236x/10/89/7a/10897abb60aeafad127c8e80c5732001--doodle-kids-muslim-fashion.jpg"
      },
      {
        "url": "https://art.pixilart.com/thumb/0721b071d8ec62a.png"
      },
      {
        "url": "https://img.favpng.com/0/4/24/detective-cartoon-png-favpng-7t1LwLmVSieejTCmm39qDLgQV_t.jpg"
      }
    ],
    "webEntities": [
      {
        "description": "Hinata Hyuga",
        "entityId": "/m/04b5nh",
        "score": 0.32295
      },
      {
        "description": "Naruto Uzumaki",
        "entityId": "/m/02sp46",
        "score": 0.31364998
      },
      {
        "description": "Sakura Haruno",
        "entityId": "/m/037b28",
        "score": 0.30705
      },
      {
        "description": "Naruto",
        "entityId": "/m/01hryy",
        "score": 0.2758
      },
      {
        "description": "Illustration",
        "entityId": "/m/01kr8f",
        "score": 0.2729761
      },
      {
        "description": "Cartoon",
        "entityId": "/m/0215n",
        "score": 0.25171754
      },
      {
        "description": "TikTok",
        "entityId": "/g/11f555cn8l",
        "score": 0.2241
      },
      {
        "description": "Anime",
        "entityId": "/m/0jxy",
        "score": 0.207
      },
      {
        "description": "Text",
        "entityId": "/m/07s6nbt",
        "score": 0.19760928
      },
      {
        "description": "Music video",
        "entityId": "/m/0mdxd",
        "score": 0.187
      },
      {
        "description": "Dragon Ball",
        "entityId": "/m/0k2dm",
        "score": 0.1776
      },
      {
        "description": "Character",
        "entityId": "/m/0k5v2",
        "score": 0.1657
      },
      {
        "description": "Fiction",
        "entityId": "/m/02xlf",
        "score": 0.1247
      }
    ]
  }
}

На изображении выше перечислены термины под webDetection -> webEntities. Тем не менее, нет одного размера, подходящего для всех . Эти термины не имеют отношения к коже Микки), чьи теги, хотя и свободные, должны быть тегами под localizedObjectAnnotations или labelAnnotations. Чтобы обеспечить реальную ценность, потребовалась бы человеческая модерация.

Конечно, если у вас нет никаких тегов, добавление некоторых групп из ответа без человеческой модерации было бы лучше, чем ничего.

Другие услуги от крупные игроки, на которых вы можете посмотреть:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...