Beispiel #1
0
class imageTag(object):

    fio_r = fio_w = None
    api = None
    images = []

    def __init__(self, input_filename, output_filename):

        self.fio_r = open(input_filename, 'r')
        self.fio_w = open(output_filename, 'wb')
        self.api = ClarifaiApi(model='general-v1.3')

    def read_images(self):
        """ read in image samples """

        worker = Worker(50)

        for line in self.fio_r:
            line = line.strip()
            try:
                item = json.loads(line)
            except:
                continue
            worker.add_task(self.tag_image, item)

        logging.debug('%d images have been read' % len(items))

        worker.join()

    def tag_image(self, image):
        """ tag and embed one image """

        imageurl = image.get('url')
        if not imageurl:
            return

        try:
            result = self.api.tag_and_embed_urls(imageurl)

            image['tags'] = result['results'][0]['result']['tag']['classes']
            image['probs'] = result['results'][0]['result']['tag']['probs']
            image['embeds'] = result['results'][0]['result']['embed']
        except:
            logging.error('FAILED %s' % imageurl)

        print 'FINSHED %s' % imageurl
        self.fio_w.write(json.dumps(image) + '\n')

    def run(self):
        """ run the tag service """

        self.read_images()