def test_is_relevant(self):
        url = 'http://i.huffpost.com/gen/1321037/thumbs/o-KATE-LANPHEAR-570.jpg'
        url = 'http://schoolofba.com/wp-content/uploads/2014/09/faces-300x300.jpg'
        url = 'http://img07.deviantart.net/ee95/i/2011/058/8/4/many_faces_of_david_tennant_2_by_pfeifhuhn-d3ag5g6.jpg'
        url = 'http://face-negotiationtheory.weebly.com/uploads/4/2/1/6/4216257/1771161.jpg'
        url = 'http://www.travelmarketing.fr/wp-content/uploads/2014/04/multiple-faces-e1401642770899.jpg'
        # url = 'http://www.joancanto.com/blog/wp-content/uploads/2008/07/unai-jvcanto.jpg'
        # url = 'http://p1cdn02.thewrap.com/images/2015/01/e-fashion-police-joan-rivers-premiere.jpg'
        file = os.path.join('images', url.split('/')[-1])

        print('file:' + file)
        img = cv2.imread(file)
        if img is None:
            print('img doesnt exists locally, getting from url')
            response = requests.get(url, stream=True)
            with open(file, 'wb') as out_file:
                shutil.copyfileobj(response.raw, out_file)
            del response
            time.sleep(0.5)
            img = cv2.imread(file)
        if img is None:
            print('cant get image')
            return
        relevance = background_removal.image_is_relevant(img)
        print relevance
        if len(relevance.faces) > 0:
            for face in relevance.faces:
                print('face:' + str(face))
                cv2.rectangle(img, (face[0], face[1]),
                              (face[0] + face[2], face[1] + face[3]),
                              [0, 255, 0])
            cv2.imshow('faces', img)
            cv2.waitKey(0)
Ejemplo n.º 2
0
def mr8_4_demo(img, fc=None):

    mask, labels, pose = paperdoll_parse_enqueue.paperdoll_enqueue(
        img, async=False).result[:3]
    final_mask = paperdolls.after_pd_conclusions(mask, labels, person['face'])
    for num in np.unique(final_mask):
        category = list(labels.keys())[list(labels.values()).index(num)]
        if category in constants.paperdoll_shopstyle_women.keys():
            item_mask = 255 * np.array(final_mask == num, dtype=np.uint8)

    faces = background_removal.image_is_relevant(image)

    if faces[0] is True and len(faces[1]) != 0:
        x0, y0, w, h = faces[1][0]
        s_size = np.amin(np.asarray(w, h))
        print "s_size:", s_size
#sample = gray_img[y0 + 3 * s_size:y0 + 4 * s_size, x0:x0 + s_size]
    else:
        s_size = np.asarray(0.1 * image.shape[0])
        print "s_size:", s_size

    trimmed_mask = fp_yuli_MR8.trim_mask(image, mask)
    response = fp_yuli_MR8.yuli_fp(trimmed_mask, s_size)
    print len(response)

    ms_response = []
    for idx, val in enumerate(response):
        ms_response = ms_response + fp_yuli_MR8.mean_std_pooling(val, 5)
    return ms_response
Ejemplo n.º 3
0
def from_image_url_to_categorization_task(image_url):
    image_obj = images.find_one({"image_urls": image_url})
    if not image_obj:  # new image
        image = background_removal.standard_resize(Utils.get_cv2_img_array(image_url), 400)[0]
        if image is None:
            logging.warning("There's no image in the url!")
            return None
        relevance = background_removal.image_is_relevant(image)
        image_dict = {'image_urls': [], 'relevant': relevance.is_relevant, '_id': bson.ObjectId()}
        image_dict['image_urls'].append(image_url)
        if relevance.is_relevant:
            image_dict['people'] = []
            for face in relevance.faces:
                x, y, w, h = face
                person = {'face': face.tolist(), 'person_id': str(bson.ObjectId())}
                image_copy = image.copy()
                cv2.rectangle(image_copy, (x, y), (x + w, y + h), [0, 255, 0], 2)
                person['url'] = upload_image(image_copy, str(person['person_id']))
                image_dict['people'].append(person)
                q2.enqueue(send_image_to_qc_categorization, person['url'], person['person_id'])
        else:
            logging.warning('image is not relevant, but stored anyway..')
        images.insert(image_dict)
    else:
        if image_url not in image_obj['image_urls']:
            image_obj['image_urls'].append(image_url)
        if image_obj['relevant']:
            logging.warning("Image is in the DB and relevant!")
        else:
            logging.warning("Image is in the DB and not relevant!")
        return image_obj
Ejemplo n.º 4
0
def check_if_relevant(image_url, page_url, products_collection, method):
    image = Utils.get_cv2_img_array(image_url)
    if image is None:
        return
    small_img, _ = background_removal.standard_resize(image, 600)
    relevance = background_removal.image_is_relevant(small_img, use_caffe=False, image_url=image_url)

    if not relevance.is_relevant:
        hashed = get_hash(image)
        try:
            label = labelize(image).replace('.', '')
        except:
            label = None
        image_obj = {'image_hash': hashed, 'image_urls': [image_url], 'page_urls': [page_url], 'people': [],
                     'relevant': False, 'saved_date': str(datetime.datetime.utcnow()), 'views': 1,
                     'labels': label}
        db.irrelevant_images.insert_one(image_obj)
        db.labeled_irrelevant.insert_one(image_obj)
        return image_obj
    image_obj = {'people': [{'person_id': str(bson.ObjectId()), 'face': face.tolist(),
                             'gender': classifier_client.get('gender', image, face=face.tolist())['gender']} for face in
                            relevance.faces],
                 'image_urls': image_url, 'page_url': page_url, 'insert_time': datetime.datetime.now()}
    db.iip.insert_one(image_obj)
    start_pipeline.enqueue_call(func="", args=(page_url, image_url, products_collection, method),
                                ttl=2000, result_ttl=2000, timeout=2000)
Ejemplo n.º 5
0
def dl_keyword_images(
        category_id,
        total=2000,
        keyword=None,
        # dir='/home/jeremy/[email protected]/TrendiGuru/techdev/trendi_guru_modules/images',
        # dir='/home/ubuntu/Dev/trendi_guru_modules/images',
        dir='images',
        show_visual_output=False):
    query = {
        "categories": {
            "$elemMatch": {
                "id": {
                    "$in": get_all_subcategories(db.categories, category_id)
                }
            }
        }
    }
    if keyword is None:
        path = os.path.join(dir, category_id)
        cursor = db.products.find(query)
    else:
        path = os.path.join(dir, category_id)
        path = os.path.join(path, keyword)
        cursor = db.products.find(
            {'$and': [{
                "description": {
                    '$regex': keyword
                }
            }, query]})
    print('path:' + path)
    if not os.path.exists(path):
        print('creating dir')
        os.makedirs(path)
    i = 0
    for item in cursor:
        if i > total:
            break
        i += 1
        url = item['image']['sizes']['XLarge']['url']
        print('url:' + url)
        item_image = Utils.get_cv2_img_array(url)
        if item_image is None:
            return None
        if show_visual_output == True:
            cv2.imshow('im1', item_image)
            k = cv2.waitKey(200)

        if background_removal.image_is_relevant(
                background_removal.standard_resize(item_image, 400)[0]):
            name = os.path.join(path, str(item['id']) + '.jpg')
            try:
                print('writing ' + name)
                cv2.imwrite(name, item_image)
            except:
                print('couldnt write file:' + name)
Ejemplo n.º 6
0
def find_images(description):
    print('starting to find ' + str(description))
    no_face_count = 0
    face_count = 0
    for i in range(0, 10500):
        mdoc = dbUtils.lookfor_next_unbounded_feature_from_db_category(current_item=i, skip_if_marked_to_skip=True,
                                                                       which_to_show='showAll',
                                                                       filter_type='byWordInDescription',
                                                                       category_id=None,
                                                                       word_in_description=description,
                                                                       db=db)

        if mdoc is not None and 'doc' in mdoc:
            i = i + 1
            print('not none')
            doc = mdoc['doc']
            print doc
            xlarge_url = doc['image']['sizes']['XLarge']['url']
            print('large img url:' + str(xlarge_url))
            img_arr = Utils.get_cv2_img_array(xlarge_url)
            if img_arr is None:
                return None
            small_img = background_removal.standard_resize(img_arr, 400)[0]
            show_visual_output = False
            if show_visual_output == True:
                cv2.imshow('im1', img_arr)
                # k = cv2.waitKey(200)
                # cv2.imshow('smallim1', small_img)
                # k = cv2.waitKey(200)
            relevance = background_removal.image_is_relevant(small_img)
            print('relevance:' + str(relevance))
            rel = relevance.is_relevant
            if rel == False:
                no_face_count += 1
                print('relevant')
                fname = os.path.join('netanel', description)
                fname = os.path.join(fname, 'noface')
                Utils.ensure_dir(fname)
                fname = os.path.join(fname, str(no_face_count) + '.jpg')
            else:
                face_count += 1
                print('not relevant')
                fname = os.path.join('netanel', description)
                Utils.ensure_dir(fname)
                fname = os.path.join(description, str(face_count) + '.jpg')
            print('writing ' + str(fname))
            cv2.imwrite(fname, img_arr)
        else:
            break
Ejemplo n.º 7
0
def find_images(description):
    print('starting to find ' + str(description))
    for i in range(0, 500):
        mdoc = dbUtils.lookfor_next_unbounded_feature_from_db_category(
            current_item=i,
            skip_if_marked_to_skip=True,
            which_to_show='showAll',
            filter_type='byWordInDescription',
            category_id=None,
            word_in_description=description,
            db=None)

        if mdoc is not None and 'doc' in mdoc:
            doc = mdoc['doc']
            # print doc

            xlarge_url = doc['image']['sizes']['XLarge']['url']
            # print('large img url:' + str(xlarge_url))
            img_arr = Utils.get_cv2_img_array(xlarge_url)
            if img_arr is None:
                return None
            small_img = background_removal.standard_resize(img_arr, 400)[0]
            show_visual_output = False
            if show_visual_output == True:
                cv2.imshow('im1', img_arr)
                k = cv2.waitKey(200)
                cv2.imshow('smallim1', small_img)
                k = cv2.waitKey(200)
            relevance = background_removal.image_is_relevant(small_img)
            if not relevance:
                print('image is not relevant:' + str(description))
                continue
            print('image is relevant:' + str(description))
            face1 = background_removal.find_face(img_arr)
            if face1 is not None and len(face1) != 0:
                print('face1:' + str(face1))
                bb1 = face1[0]
                get_pose_est_bbs(xlarge_url,
                                 description,
                                 n=i,
                                 show_visual_output=show_visual_output,
                                 bb=bb1)

            else:
                get_pose_est_bbs(xlarge_url,
                                 description,
                                 n=i,
                                 show_visual_output=show_visual_output)