# Copyright 2021 NVIDIA Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================

# Each user is responsible for checking the content of datasets and the
# applicable licenses and determining if suitable for the intended use.
http://developer.download.nvidia.com/notebooks/dlsw-notebooks/merlin_hugectr_multi-modal-data-3-feature-extraction-poster/nvidia_logo.png

Movie Poster Feature Extraction with ResNet

In this notebook, we will use a pretrained ResNet-50 network to extract image features from the movie poster images.

Note: this notebook should be executed from within the nvidia_resnet50 container, built as follows

git clone https://github.com/NVIDIA/DeepLearningExamples
git checkout 5d6d417ff57e8824ef51573e00e5e21307b39697
cd DeepLearningExamples/PyTorch/Classification/ConvNets
docker build . -t nvidia_resnet50

Start the container, mounting the current directory:

nvidia-docker run --rm --net=host -it -v $PWD:/workspace --ipc=host nvidia_resnet50

Then from within the container:

cd /workspace
jupyter-lab --allow-root --ip='0.0.0.0'

Download a pretrained ResNet-50 from NVIDIA GPU cloud

First, we install an extra package and restart the kernel.

!pip install ipywidgets tqdm
import IPython

IPython.Application.instance().kernel.do_shutdown(True)
from PIL import Image
import argparse
import numpy as np
import json
import torch
from torch.cuda.amp import autocast
import torch.backends.cudnn as cudnn

import sys
sys.path.append('/workspace/DeepLearningExamples/PyTorch/Classification/ConvNets')
from image_classification import models
import torchvision.transforms as transforms
from image_classification.models import (
    resnet50,
    resnext101_32x4d,
    se_resnext101_32x4d,
    efficientnet_b0,
    efficientnet_b4,
    efficientnet_widese_b0,
    efficientnet_widese_b4,
    efficientnet_quant_b0,
    efficientnet_quant_b4,
)
def available_models():
    models = {
        m.name: m
        for m in [
            resnet50,
            resnext101_32x4d,
            se_resnext101_32x4d,
            efficientnet_b0,
            efficientnet_b4,
            efficientnet_widese_b0,
            efficientnet_widese_b4,
            efficientnet_quant_b0,
            efficientnet_quant_b4,
        ]
    }
    return models
def load_jpeg_from_file(path, image_size, cuda=True):
    img_transforms = transforms.Compose(
        [
            transforms.Resize(image_size + 32),
            transforms.CenterCrop(image_size),
            transforms.ToTensor(),
        ]
    )

    img = img_transforms(Image.open(path))
    with torch.no_grad():
        # mean and std are not multiplied by 255 as they are in training script
        # torch dataloader reads data into bytes whereas loading directly
        # through PIL creates a tensor with floats in [0,1] range
        mean = torch.tensor([0.485, 0.456, 0.406]).view(1, 3, 1, 1)
        std = torch.tensor([0.229, 0.224, 0.225]).view(1, 3, 1, 1)

        if cuda:
            mean = mean.cuda()
            std = std.cuda()
            img = img.cuda()
        img = img.float()

        if img.shape[0] == 1: #mono image
            #pad channels
            img = img.repeat([3, 1, 1])
        input = img.unsqueeze(0).sub_(mean).div_(std)

    return input
def check_quant_weight_correctness(checkpoint_path, model):
    state_dict = torch.load(checkpoint_path, map_location=torch.device('cpu'))
    state_dict = {k[len("module."):] if k.startswith("module.") else k: v for k, v in state_dict.items()}
    quantizers_sd_keys = {f'{n[0]}._amax' for n in model.named_modules() if 'quantizer' in n[0]}
    sd_all_keys = quantizers_sd_keys | set(model.state_dict().keys())
    assert set(state_dict.keys()) == sd_all_keys, (f'Passed quantized architecture, but following keys are missing in '
                                                   f'checkpoint: {list(sd_all_keys - set(state_dict.keys()))}')
imgnet_classes = np.array(json.load(open("/workspace/DeepLearningExamples/PyTorch/Classification/ConvNets/LOC_synset_mapping.json", "r")))

model_args = {}
model_args["pretrained_from_file"] = './nvidia_resnet50_200821.pth.tar'
model = available_models()['resnet50'](model_args)

model = model.cuda()
model.eval()
Downloading: "https://api.ngc.nvidia.com/v2/models/nvidia/resnet50_pyt_amp/versions/20.06.0/files/nvidia_resnet50_200821.pth.tar" to /root/.cache/torch/hub/checkpoints/nvidia_resnet50_200821.pth.tar

ResNet(
  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  (relu): ReLU(inplace=True)
  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
  (layer1): Sequential(
    (0): Bottleneck(
      (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
      (downsample): Sequential(
        (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): Bottleneck(
      (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (2): Bottleneck(
      (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
  )
  (layer2): Sequential(
    (0): Bottleneck(
      (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
      (downsample): Sequential(
        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)
        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): Bottleneck(
      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (2): Bottleneck(
      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (3): Bottleneck(
      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
  )
  (layer3): Sequential(
    (0): Bottleneck(
      (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
      (downsample): Sequential(
        (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)
        (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): Bottleneck(
      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (2): Bottleneck(
      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (3): Bottleneck(
      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (4): Bottleneck(
      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (5): Bottleneck(
      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
  )
  (layer4): Sequential(
    (0): Bottleneck(
      (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
      (downsample): Sequential(
        (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)
        (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): Bottleneck(
      (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
    (2): Bottleneck(
      (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
    )
  )
  (avgpool): AdaptiveAvgPool2d(output_size=1)
  (fc): Linear(in_features=2048, out_features=1000, bias=True)
)

Extract features for all movies

Next, we will extract feature for all movie posters, using the last layer just before the classification head, containing 2048 float values.

import glob

filelist = glob.glob('./poster_small/*.jpg')
len(filelist)
61951
filelist[:10]
['./poster_small/0055323.jpg',
 './poster_small/0114709.jpg',
 './poster_small/0274711.jpg',
 './poster_small/0055320.jpg',
 './poster_small/0054197.jpg',
 './poster_small/1791658.jpg',
 './poster_small/1288589.jpg',
 './poster_small/0365653.jpg',
 './poster_small/2324928.jpg',
 './poster_small/6000478.jpg']
from tqdm import tqdm

batchsize = 64
num_bathces = len(filelist)//batchsize
batches = np.array_split(filelist, num_bathces)
### strip the last layer
feature_extractor = torch.nn.Sequential(*list(model.children())[:-1])

feature_dict = {}
error = 0
for batch in tqdm(batches):
    inputs = []
    imgs = []
    for i, f in enumerate(batch):
        try:
            img = load_jpeg_from_file(f, 224, cuda=True)
            imgs.append(f.split('/')[-1].split('.')[0])
            inputs.append(img.squeeze())
        except Exception as e:
            print(e)
            error +=1
    features = feature_extractor(torch.stack(inputs, dim=0)).cpu().detach().numpy().squeeze()  
    for i, f in enumerate(imgs):
        feature_dict[f] =features[i,:]

print('Unable to extract features for %d images'%error)
  0%|          | 0/967 [00:00<?, ?it/s]
cannot identify image file './poster_small/0114709.jpg'
cannot identify image file './poster_small/0274711.jpg'
cannot identify image file './poster_small/0055320.jpg'
cannot identify image file './poster_small/0054197.jpg'
cannot identify image file './poster_small/1791658.jpg'
cannot identify image file './poster_small/1288589.jpg'
cannot identify image file './poster_small/0365653.jpg'
cannot identify image file './poster_small/2324928.jpg'
cannot identify image file './poster_small/6000478.jpg'
cannot identify image file './poster_small/0168199.jpg'
cannot identify image file './poster_small/0118926.jpg'
cannot identify image file './poster_small/0415856.jpg'
  0%|          | 2/967 [00:02<21:58,  1.37s/it]
cannot identify image file './poster_small/0494260.jpg'
  0%|          | 3/967 [00:03<18:50,  1.17s/it]
cannot identify image file './poster_small/0810772.jpg'
  0%|          | 4/967 [00:03<15:46,  1.02it/s]
cannot identify image file './poster_small/0049314.jpg'
  1%|          | 8/967 [00:06<12:59,  1.23it/s]
cannot identify image file './poster_small/0066831.jpg'
  1%|          | 9/967 [00:07<12:22,  1.29it/s]
cannot identify image file './poster_small/0888693.jpg'
  1%|          | 12/967 [00:10<14:20,  1.11it/s]
cannot identify image file './poster_small/0067431.jpg'
  1%|▏         | 14/967 [00:11<13:07,  1.21it/s]
cannot identify image file './poster_small/6522546.jpg'
cannot identify image file './poster_small/0057811.jpg'
  2%|▏         | 16/967 [00:13<13:05,  1.21it/s]
cannot identify image file './poster_small/5176252.jpg'
cannot identify image file './poster_small/0112373.jpg'
  2%|▏         | 18/967 [00:14<10:45,  1.47it/s]
cannot identify image file './poster_small/4636254.jpg'
  2%|▏         | 19/967 [00:15<11:11,  1.41it/s]
cannot identify image file './poster_small/0365658.jpg'
  2%|▏         | 24/967 [00:19<13:04,  1.20it/s]
cannot identify image file './poster_small/2124046.jpg'
  4%|▎         | 34/967 [00:26<12:05,  1.29it/s]
cannot identify image file './poster_small/0104469.jpg'
  4%|▍         | 37/967 [00:29<13:35,  1.14it/s]
cannot identify image file './poster_small/0102493.jpg'
  4%|▍         | 41/967 [00:33<13:08,  1.17it/s]
cannot identify image file './poster_small/0051792.jpg'
  5%|▍         | 46/967 [00:36<09:19,  1.65it/s]
cannot identify image file './poster_small/0110017.jpg'
cannot identify image file './poster_small/0139630.jpg'
  5%|▍         | 48/967 [00:37<08:21,  1.83it/s]
cannot identify image file './poster_small/0143348.jpg'
  5%|▌         | 51/967 [00:38<07:56,  1.92it/s]
cannot identify image file './poster_small/0037618.jpg'
cannot identify image file './poster_small/0040002.jpg'
  5%|▌         | 53/967 [00:39<08:56,  1.70it/s]
cannot identify image file './poster_small/0317950.jpg'
  6%|▌         | 54/967 [00:40<10:00,  1.52it/s]
cannot identify image file './poster_small/0850669.jpg'
cannot identify image file './poster_small/0325258.jpg'
  6%|▌         | 58/967 [00:44<12:21,  1.23it/s]
cannot identify image file './poster_small/6569888.jpg'
cannot identify image file './poster_small/0037736.jpg'
  6%|▋         | 61/967 [00:46<12:33,  1.20it/s]
cannot identify image file './poster_small/0109303.jpg'
  7%|▋         | 66/967 [00:50<10:24,  1.44it/s]
cannot identify image file './poster_small/0103882.jpg'
  7%|▋         | 67/967 [00:50<09:26,  1.59it/s]
cannot identify image file './poster_small/0267287.jpg'
  7%|▋         | 71/967 [00:53<12:02,  1.24it/s]
cannot identify image file './poster_small/0100033.jpg'
  8%|▊         | 77/967 [00:57<10:21,  1.43it/s]
cannot identify image file './poster_small/1601215.jpg'
  8%|▊         | 81/967 [01:00<10:08,  1.46it/s]
cannot identify image file './poster_small/0092028.jpg'
cannot identify image file './poster_small/0075963.jpg'
cannot identify image file './poster_small/3267334.jpg'
  9%|▊         | 84/967 [01:02<08:43,  1.69it/s]
cannot identify image file './poster_small/0059398.jpg'
  9%|▉         | 86/967 [01:03<08:15,  1.78it/s]
cannot identify image file './poster_small/0122565.jpg'
 10%|█         | 97/967 [01:09<07:56,  1.82it/s]
cannot identify image file './poster_small/0052572.jpg'
 11%|█         | 102/967 [01:12<10:25,  1.38it/s]
cannot identify image file './poster_small/6404896.jpg'
 11%|█         | 103/967 [01:13<11:14,  1.28it/s]
cannot identify image file './poster_small/0027428.jpg'
cannot identify image file './poster_small/0033883.jpg'
 11%|█         | 104/967 [01:14<10:13,  1.41it/s]
cannot identify image file './poster_small/0113270.jpg'
 11%|█         | 108/967 [01:18<12:33,  1.14it/s]
cannot identify image file './poster_small/0022286.jpg'
 12%|█▏        | 112/967 [01:21<11:23,  1.25it/s]
cannot identify image file './poster_small/0068953.jpg'
 12%|█▏        | 114/967 [01:23<12:35,  1.13it/s]
cannot identify image file './poster_small/0042949.jpg'
cannot identify image file './poster_small/0130297.jpg'
 12%|█▏        | 115/967 [01:24<12:22,  1.15it/s]
cannot identify image file './poster_small/0028207.jpg'
 12%|█▏        | 117/967 [01:26<12:46,  1.11it/s]
cannot identify image file './poster_small/0054244.jpg'
 12%|█▏        | 118/967 [01:27<12:54,  1.10it/s]
cannot identify image file './poster_small/1275680.jpg'
 12%|█▏        | 120/967 [01:30<18:32,  1.31s/it]
cannot identify image file './poster_small/0036533.jpg'
cannot identify image file './poster_small/0037297.jpg'
 13%|█▎        | 130/967 [01:37<09:14,  1.51it/s]
cannot identify image file './poster_small/0962736.jpg'
cannot identify image file './poster_small/0042548.jpg'
 14%|█▍        | 134/967 [01:40<10:19,  1.34it/s]
cannot identify image file './poster_small/0038109.jpg'
cannot identify image file './poster_small/0104009.jpg'
 14%|█▍        | 136/967 [01:41<11:21,  1.22it/s]
cannot identify image file './poster_small/0180316.jpg'
 14%|█▍        | 137/967 [01:42<11:00,  1.26it/s]
cannot identify image file './poster_small/0071925.jpg'
 14%|█▍        | 139/967 [01:43<10:33,  1.31it/s]
cannot identify image file './poster_small/0087001.jpg'
 15%|█▍        | 143/967 [01:47<11:02,  1.24it/s]
cannot identify image file './poster_small/0056910.jpg'
 15%|█▍        | 144/967 [01:47<09:55,  1.38it/s]
cannot identify image file './poster_small/0064563.jpg'
 15%|█▌        | 147/967 [01:49<09:19,  1.46it/s]
cannot identify image file './poster_small/1720040.jpg'
 15%|█▌        | 149/967 [01:51<12:05,  1.13it/s]
cannot identify image file './poster_small/0041112.jpg'
 16%|█▌        | 156/967 [01:58<11:37,  1.16it/s]
cannot identify image file './poster_small/4412528.jpg'
 16%|█▌        | 157/967 [01:58<10:57,  1.23it/s]
cannot identify image file './poster_small/0051362.jpg'
 16%|█▋        | 158/967 [01:59<10:15,  1.31it/s]
cannot identify image file './poster_small/0029992.jpg'
 17%|█▋        | 160/967 [02:00<08:26,  1.59it/s]
cannot identify image file './poster_small/0384309.jpg'
cannot identify image file './poster_small/0028367.jpg'
 17%|█▋        | 162/967 [02:01<08:56,  1.50it/s]
cannot identify image file './poster_small/0038336.jpg'
 17%|█▋        | 163/967 [02:02<10:07,  1.32it/s]
cannot identify image file './poster_small/0058725.jpg'
 17%|█▋        | 164/967 [02:04<11:26,  1.17it/s]
cannot identify image file './poster_small/0113328.jpg'
 17%|█▋        | 166/967 [02:05<09:21,  1.43it/s]
cannot identify image file './poster_small/3878542.jpg'
 17%|█▋        | 167/967 [02:06<10:00,  1.33it/s]
cannot identify image file './poster_small/0026465.jpg'
 17%|█▋        | 169/967 [02:07<10:07,  1.31it/s]
cannot identify image file './poster_small/0040588.jpg'
 18%|█▊        | 175/967 [02:12<10:37,  1.24it/s]
cannot identify image file './poster_small/0086984.jpg'
 18%|█▊        | 178/967 [02:14<09:23,  1.40it/s]
cannot identify image file './poster_small/0309047.jpg'
 19%|█▊        | 181/967 [02:16<10:52,  1.21it/s]
cannot identify image file './poster_small/0031405.jpg'
 19%|█▉        | 185/967 [02:20<11:42,  1.11it/s]
cannot identify image file './poster_small/0097493.jpg'
 19%|█▉        | 186/967 [02:21<11:54,  1.09it/s]
cannot identify image file './poster_small/0346336.jpg'
cannot identify image file './poster_small/0078841.jpg'
cannot identify image file './poster_small/0018795.jpg'
cannot identify image file './poster_small/9151704.jpg'
 20%|█▉        | 191/967 [02:25<10:40,  1.21it/s]
cannot identify image file './poster_small/1417097.jpg'
 20%|██        | 195/967 [02:29<11:12,  1.15it/s]
cannot identify image file './poster_small/0054223.jpg'
 20%|██        | 196/967 [02:30<11:16,  1.14it/s]
cannot identify image file './poster_small/0117477.jpg'
 21%|██        | 199/967 [02:31<07:48,  1.64it/s]
cannot identify image file './poster_small/0000041.jpg'
 21%|██        | 201/967 [02:33<09:47,  1.30it/s]
cannot identify image file './poster_small/0028907.jpg'
 21%|██▏       | 207/967 [02:38<10:09,  1.25it/s]
cannot identify image file './poster_small/0366179.jpg'
 22%|██▏       | 209/967 [02:40<11:12,  1.13it/s]
cannot identify image file './poster_small/0109761.jpg'
 22%|██▏       | 217/967 [02:45<08:58,  1.39it/s]
cannot identify image file './poster_small/7167686.jpg'
 23%|██▎       | 219/967 [02:47<08:51,  1.41it/s]
cannot identify image file './poster_small/0048973.jpg'
 23%|██▎       | 226/967 [02:53<10:37,  1.16it/s]
cannot identify image file './poster_small/0100112.jpg'
cannot identify image file './poster_small/3606394.jpg'
 23%|██▎       | 227/967 [02:54<10:40,  1.16it/s]
cannot identify image file './poster_small/0021890.jpg'
 24%|██▎       | 228/967 [02:54<10:32,  1.17it/s]
cannot identify image file './poster_small/0033874.jpg'
cannot identify image file './poster_small/0035019.jpg'
 24%|██▍       | 232/967 [02:57<09:59,  1.23it/s]
cannot identify image file './poster_small/1228953.jpg'
 25%|██▍       | 237/967 [03:02<09:53,  1.23it/s]
cannot identify image file './poster_small/7688990.jpg'
cannot identify image file './poster_small/0052954.jpg'
cannot identify image file './poster_small/0092159.jpg'
 25%|██▌       | 242/967 [03:06<09:58,  1.21it/s]
cannot identify image file './poster_small/0094349.jpg'
cannot identify image file './poster_small/0065136.jpg'
 25%|██▌       | 246/967 [03:09<09:09,  1.31it/s]
cannot identify image file './poster_small/0027805.jpg'
cannot identify image file './poster_small/0034904.jpg'
 26%|██▌       | 248/967 [03:10<10:07,  1.18it/s]
cannot identify image file './poster_small/0037522.jpg'
 26%|██▌       | 250/967 [03:13<11:19,  1.06it/s]
cannot identify image file './poster_small/0036301.jpg'
 26%|██▋       | 254/967 [03:16<10:26,  1.14it/s]
cannot identify image file './poster_small/0037324.jpg'
 26%|██▋       | 256/967 [03:17<08:46,  1.35it/s]
cannot identify image file './poster_small/0053622.jpg'
 27%|██▋       | 265/967 [03:23<08:14,  1.42it/s]
cannot identify image file './poster_small/7278178.jpg'
 28%|██▊       | 266/967 [03:24<08:31,  1.37it/s]
cannot identify image file './poster_small/0418239.jpg'
cannot identify image file './poster_small/0040489.jpg'
cannot identify image file './poster_small/0069280.jpg'
 28%|██▊       | 269/967 [03:27<10:44,  1.08it/s]
cannot identify image file './poster_small/0049143.jpg'
 29%|██▊       | 276/967 [03:33<08:21,  1.38it/s]
cannot identify image file './poster_small/0064840.jpg'
 29%|██▉       | 285/967 [03:41<10:27,  1.09it/s]
cannot identify image file './poster_small/0070723.jpg'
 30%|██▉       | 287/967 [03:43<09:32,  1.19it/s]
cannot identify image file './poster_small/0057997.jpg'
 30%|██▉       | 289/967 [03:44<08:37,  1.31it/s]
cannot identify image file './poster_small/0056072.jpg'
 31%|███       | 295/967 [03:50<10:14,  1.09it/s]
cannot identify image file './poster_small/7446332.jpg'
 31%|███       | 297/967 [03:51<09:45,  1.14it/s]
cannot identify image file './poster_small/0076618.jpg'
 31%|███       | 300/967 [03:55<10:41,  1.04it/s]
cannot identify image file './poster_small/0290014.jpg'
 31%|███       | 302/967 [03:56<08:05,  1.37it/s]
cannot identify image file './poster_small/0347330.jpg'
 31%|███▏      | 303/967 [03:56<08:07,  1.36it/s]
cannot identify image file './poster_small/0159620.jpg'
 31%|███▏      | 304/967 [03:57<08:53,  1.24it/s]
cannot identify image file './poster_small/0044667.jpg'
 32%|███▏      | 307/967 [04:00<10:17,  1.07it/s]
cannot identify image file './poster_small/0040190.jpg'
cannot identify image file './poster_small/3088364.jpg'
cannot identify image file './poster_small/0230367.jpg'
 32%|███▏      | 309/967 [04:02<10:05,  1.09it/s]
cannot identify image file './poster_small/0037147.jpg'
 32%|███▏      | 310/967 [04:03<09:15,  1.18it/s]
cannot identify image file './poster_small/0033282.jpg'
cannot identify image file './poster_small/4028134.jpg'
 32%|███▏      | 312/967 [04:05<10:09,  1.07it/s]
cannot identify image file './poster_small/1352824.jpg'
 32%|███▏      | 314/967 [04:06<08:53,  1.22it/s]
cannot identify image file './poster_small/0079400.jpg'
 33%|███▎      | 318/967 [04:09<08:48,  1.23it/s]
cannot identify image file './poster_small/0449869.jpg'
cannot identify image file './poster_small/0047526.jpg'
 33%|███▎      | 320/967 [04:11<08:39,  1.25it/s]
cannot identify image file './poster_small/0095593.jpg'
 33%|███▎      | 321/967 [04:12<08:17,  1.30it/s]
cannot identify image file './poster_small/2762334.jpg'
 33%|███▎      | 322/967 [04:12<08:30,  1.26it/s]
cannot identify image file './poster_small/0023293.jpg'
 34%|███▎      | 325/967 [04:15<08:01,  1.33it/s]
cannot identify image file './poster_small/0024593.jpg'
 34%|███▍      | 327/967 [04:16<08:30,  1.25it/s]
cannot identify image file './poster_small/1116182.jpg'
 34%|███▍      | 328/967 [04:17<08:58,  1.19it/s]
cannot identify image file './poster_small/0063462.jpg'
 34%|███▍      | 329/967 [04:18<09:14,  1.15it/s]
cannot identify image file './poster_small/0119577.jpg'
 34%|███▍      | 331/967 [04:19<07:48,  1.36it/s]
cannot identify image file './poster_small/0106727.jpg'
cannot identify image file './poster_small/0053884.jpg'
 35%|███▍      | 337/967 [04:25<10:45,  1.03s/it]
cannot identify image file './poster_small/0037077.jpg'
 35%|███▌      | 341/967 [04:29<10:09,  1.03it/s]
cannot identify image file './poster_small/0040064.jpg'
 36%|███▌      | 345/967 [04:32<08:07,  1.28it/s]
cannot identify image file './poster_small/0089108.jpg'
 36%|███▌      | 346/967 [04:33<08:30,  1.22it/s]
cannot identify image file './poster_small/0023129.jpg'
 36%|███▌      | 347/967 [04:34<09:10,  1.13it/s]
cannot identify image file './poster_small/0044827.jpg'
 37%|███▋      | 353/967 [04:39<09:09,  1.12it/s]
cannot identify image file './poster_small/0067108.jpg'
 37%|███▋      | 359/967 [04:44<08:04,  1.25it/s]
cannot identify image file './poster_small/0432432.jpg'
 37%|███▋      | 360/967 [04:45<09:17,  1.09it/s]
cannot identify image file './poster_small/0202415.jpg'
 37%|███▋      | 362/967 [04:47<09:21,  1.08it/s]
cannot identify image file './poster_small/0074812.jpg'
 38%|███▊      | 363/967 [04:48<09:48,  1.03it/s]
cannot identify image file './poster_small/0059311.jpg'
 38%|███▊      | 371/967 [04:55<08:19,  1.19it/s]
cannot identify image file './poster_small/0065073.jpg'
 39%|███▊      | 373/967 [04:56<07:01,  1.41it/s]
cannot identify image file './poster_small/0052820.jpg'
 39%|███▉      | 375/967 [04:59<08:32,  1.15it/s]
cannot identify image file './poster_small/0120865.jpg'
 39%|███▉      | 377/967 [05:01<09:15,  1.06it/s]
cannot identify image file './poster_small/0064620.jpg'
cannot identify image file './poster_small/0068505.jpg'
cannot identify image file './poster_small/2934916.jpg'
 39%|███▉      | 379/967 [05:02<08:47,  1.11it/s]
cannot identify image file './poster_small/0040137.jpg'
 40%|███▉      | 384/967 [05:07<09:01,  1.08it/s]
cannot identify image file './poster_small/0071864.jpg'
 40%|███▉      | 385/967 [05:08<09:04,  1.07it/s]
cannot identify image file './poster_small/0072973.jpg'
 40%|████      | 387/967 [05:09<07:45,  1.25it/s]
cannot identify image file './poster_small/0449951.jpg'
 40%|████      | 388/967 [05:10<07:35,  1.27it/s]
cannot identify image file './poster_small/0074605.jpg'
 40%|████      | 391/967 [05:13<08:07,  1.18it/s]
cannot identify image file './poster_small/0328955.jpg'
cannot identify image file './poster_small/0077294.jpg'
 41%|████      | 393/967 [05:14<08:19,  1.15it/s]
cannot identify image file './poster_small/0987918.jpg'
 41%|████      | 394/967 [05:15<07:44,  1.23it/s]
cannot identify image file './poster_small/0067520.jpg'
 41%|████      | 395/967 [05:16<08:02,  1.19it/s]
cannot identify image file './poster_small/0220016.jpg'
 41%|████      | 396/967 [05:17<08:38,  1.10it/s]
cannot identify image file './poster_small/0067236.jpg'
 41%|████      | 397/967 [05:18<08:30,  1.12it/s]
cannot identify image file './poster_small/0085838.jpg'
 41%|████      | 398/967 [05:19<08:39,  1.09it/s]
cannot identify image file './poster_small/0047561.jpg'
cannot identify image file './poster_small/0066075.jpg'
 42%|████▏     | 407/967 [05:28<08:47,  1.06it/s]
cannot identify image file './poster_small/0123374.jpg'
 42%|████▏     | 410/967 [05:31<08:57,  1.04it/s]
cannot identify image file './poster_small/0026143.jpg'
 43%|████▎     | 411/967 [05:32<08:52,  1.04it/s]
cannot identify image file './poster_small/0064626.jpg'
 43%|████▎     | 413/967 [05:33<07:47,  1.19it/s]
cannot identify image file './poster_small/0822388.jpg'
 43%|████▎     | 420/967 [05:40<08:23,  1.09it/s]
cannot identify image file './poster_small/0101664.jpg'
 44%|████▎     | 423/967 [05:42<07:53,  1.15it/s]
cannot identify image file './poster_small/0403579.jpg'
cannot identify image file './poster_small/0070112.jpg'
cannot identify image file './poster_small/2323633.jpg'
 44%|████▍     | 427/967 [05:45<05:54,  1.52it/s]
cannot identify image file './poster_small/0203408.jpg'
 44%|████▍     | 428/967 [05:45<05:28,  1.64it/s]
cannot identify image file './poster_small/1167638.jpg'
 45%|████▍     | 432/967 [05:47<05:12,  1.71it/s]
cannot identify image file './poster_small/0144178.jpg'
 45%|████▍     | 434/967 [05:49<06:01,  1.48it/s]
cannot identify image file './poster_small/0295432.jpg'
 45%|████▍     | 435/967 [05:50<06:18,  1.41it/s]
cannot identify image file './poster_small/0123865.jpg'
 45%|████▌     | 436/967 [05:50<05:42,  1.55it/s]
cannot identify image file './poster_small/0110530.jpg'
cannot identify image file './poster_small/0082817.jpg'
 45%|████▌     | 437/967 [05:51<06:05,  1.45it/s]
cannot identify image file './poster_small/0067525.jpg'
 45%|████▌     | 438/967 [05:52<06:34,  1.34it/s]
cannot identify image file './poster_small/0046333.jpg'
 45%|████▌     | 439/967 [05:53<06:48,  1.29it/s]
cannot identify image file './poster_small/0248953.jpg'
 46%|████▌     | 441/967 [05:55<07:57,  1.10it/s]
cannot identify image file './poster_small/0000033.jpg'
cannot identify image file './poster_small/0069165.jpg'
cannot identify image file './poster_small/0000014.jpg'
cannot identify image file './poster_small/0000027.jpg'
 48%|████▊     | 460/967 [06:12<08:03,  1.05it/s]
cannot identify image file './poster_small/0063531.jpg'
 48%|████▊     | 462/967 [06:14<07:04,  1.19it/s]
cannot identify image file './poster_small/0041431.jpg'
 48%|████▊     | 463/967 [06:15<07:06,  1.18it/s]
cannot identify image file './poster_small/0831387.jpg'
 48%|████▊     | 465/967 [06:16<07:06,  1.18it/s]
cannot identify image file './poster_small/3908598.jpg'
 48%|████▊     | 467/967 [06:18<06:40,  1.25it/s]
cannot identify image file './poster_small/0056341.jpg'
 49%|████▊     | 470/967 [06:21<07:14,  1.14it/s]
cannot identify image file './poster_small/3833520.jpg'
 49%|████▉     | 472/967 [06:22<06:35,  1.25it/s]
cannot identify image file './poster_small/0058660.jpg'
 49%|████▉     | 475/967 [06:24<06:05,  1.35it/s]
cannot identify image file './poster_small/0086847.jpg'
 49%|████▉     | 476/967 [06:25<06:14,  1.31it/s]
cannot identify image file './poster_small/0074455.jpg'
 49%|████▉     | 477/967 [06:26<06:57,  1.17it/s]
cannot identify image file './poster_small/0037990.jpg'
 50%|████▉     | 481/967 [06:30<07:50,  1.03it/s]
cannot identify image file './poster_small/1764600.jpg'
 50%|████▉     | 482/967 [06:31<07:57,  1.02it/s]
cannot identify image file './poster_small/0372764.jpg'
cannot identify image file './poster_small/0368576.jpg'
cannot identify image file './poster_small/0368574.jpg'
cannot identify image file './poster_small/0366178.jpg'
 50%|█████     | 484/967 [06:33<07:24,  1.09it/s]
cannot identify image file './poster_small/0067118.jpg'
 50%|█████     | 488/967 [06:36<06:22,  1.25it/s]
cannot identify image file './poster_small/0044954.jpg'
 51%|█████▏    | 496/967 [06:42<06:30,  1.21it/s]
cannot identify image file './poster_small/0078950.jpg'
 51%|█████▏    | 498/967 [06:44<06:36,  1.18it/s]
cannot identify image file './poster_small/0050957.jpg'
cannot identify image file './poster_small/0058374.jpg'
 52%|█████▏    | 499/967 [06:45<06:23,  1.22it/s]
cannot identify image file './poster_small/0027963.jpg'
 52%|█████▏    | 507/967 [06:52<07:13,  1.06it/s]
cannot identify image file './poster_small/0362590.jpg'
 53%|█████▎    | 508/967 [06:53<06:47,  1.13it/s]
cannot identify image file './poster_small/0008309.jpg'
 53%|█████▎    | 509/967 [06:54<06:37,  1.15it/s]
cannot identify image file './poster_small/0065240.jpg'
 53%|█████▎    | 512/967 [06:57<07:17,  1.04it/s]
cannot identify image file './poster_small/0055022.jpg'
 53%|█████▎    | 514/967 [06:59<07:04,  1.07it/s]
cannot identify image file './poster_small/0418753.jpg'
 53%|█████▎    | 515/967 [07:00<06:59,  1.08it/s]
cannot identify image file './poster_small/0070768.jpg'
cannot identify image file './poster_small/1706680.jpg'
 54%|█████▎    | 518/967 [07:02<06:11,  1.21it/s]
cannot identify image file './poster_small/3836530.jpg'
cannot identify image file './poster_small/0050545.jpg'
 54%|█████▍    | 522/967 [07:04<04:37,  1.61it/s]
cannot identify image file './poster_small/8752440.jpg'
 54%|█████▍    | 523/967 [07:05<04:04,  1.81it/s]
cannot identify image file './poster_small/0019504.jpg'
 54%|█████▍    | 525/967 [07:06<05:05,  1.45it/s]
cannot identify image file './poster_small/0060117.jpg'
 54%|█████▍    | 526/967 [07:07<05:27,  1.35it/s]
cannot identify image file './poster_small/1172060.jpg'
 56%|█████▌    | 541/967 [07:19<05:28,  1.30it/s]
cannot identify image file './poster_small/3280916.jpg'
 56%|█████▌    | 542/967 [07:20<05:17,  1.34it/s]
cannot identify image file './poster_small/0039502.jpg'
 56%|█████▌    | 543/967 [07:21<06:04,  1.16it/s]
cannot identify image file './poster_small/3800796.jpg'
 56%|█████▋    | 544/967 [07:22<06:33,  1.07it/s]
cannot identify image file './poster_small/0074238.jpg'
 56%|█████▋    | 545/967 [07:23<06:10,  1.14it/s]
cannot identify image file './poster_small/0062032.jpg'
 56%|█████▋    | 546/967 [07:24<05:56,  1.18it/s]
cannot identify image file './poster_small/0053891.jpg'
 57%|█████▋    | 547/967 [07:24<05:38,  1.24it/s]
cannot identify image file './poster_small/0184115.jpg'
cannot identify image file './poster_small/0060968.jpg'
 57%|█████▋    | 548/967 [07:25<05:44,  1.22it/s]
cannot identify image file './poster_small/0075165.jpg'
 57%|█████▋    | 549/967 [07:26<05:25,  1.28it/s]
cannot identify image file './poster_small/0076998.jpg'
cannot identify image file './poster_small/0060176.jpg'
 57%|█████▋    | 550/967 [07:27<05:28,  1.27it/s]
cannot identify image file './poster_small/0092745.jpg'
cannot identify image file './poster_small/0079936.jpg'
 57%|█████▋    | 552/967 [07:28<04:52,  1.42it/s]
cannot identify image file './poster_small/0060747.jpg'
 57%|█████▋    | 553/967 [07:29<04:53,  1.41it/s]
cannot identify image file './poster_small/2523756.jpg'
 57%|█████▋    | 554/967 [07:29<05:16,  1.31it/s]
cannot identify image file './poster_small/0092217.jpg'
 57%|█████▋    | 555/967 [07:31<06:02,  1.14it/s]
cannot identify image file './poster_small/0046906.jpg'
 57%|█████▋    | 556/967 [07:31<06:00,  1.14it/s]
cannot identify image file './poster_small/0206226.jpg'
cannot identify image file './poster_small/0086484.jpg'
 58%|█████▊    | 558/967 [07:33<05:56,  1.15it/s]
cannot identify image file './poster_small/0175471.jpg'
 58%|█████▊    | 559/967 [07:34<06:12,  1.09it/s]
cannot identify image file './poster_small/0085913.jpg'
 58%|█████▊    | 560/967 [07:35<06:22,  1.06it/s]
cannot identify image file './poster_small/0233687.jpg'
cannot identify image file './poster_small/0053214.jpg'
 58%|█████▊    | 561/967 [07:36<06:37,  1.02it/s]
cannot identify image file './poster_small/0032794.jpg'
 58%|█████▊    | 562/967 [07:37<06:28,  1.04it/s]
cannot identify image file './poster_small/0040765.jpg'
cannot identify image file './poster_small/0064541.jpg'
 59%|█████▊    | 568/967 [07:42<05:06,  1.30it/s]
cannot identify image file './poster_small/0365109.jpg'
 59%|█████▉    | 569/967 [07:43<05:12,  1.27it/s]
cannot identify image file './poster_small/0337721.jpg'
 59%|█████▉    | 570/967 [07:43<05:16,  1.25it/s]
cannot identify image file './poster_small/0032234.jpg'
 59%|█████▉    | 572/967 [07:45<05:13,  1.26it/s]
cannot identify image file './poster_small/0344604.jpg'
 59%|█████▉    | 574/967 [07:47<05:47,  1.13it/s]
cannot identify image file './poster_small/0041349.jpg'
 60%|██████    | 581/967 [07:52<04:12,  1.53it/s]
cannot identify image file './poster_small/0180073.jpg'
cannot identify image file './poster_small/6926486.jpg'
 60%|██████    | 583/967 [07:54<04:51,  1.32it/s]
cannot identify image file './poster_small/0079596.jpg'
 61%|██████    | 586/967 [07:58<07:17,  1.15s/it]
cannot identify image file './poster_small/0140603.jpg'
cannot identify image file './poster_small/0069745.jpg'
 61%|██████    | 587/967 [07:59<07:07,  1.12s/it]
cannot identify image file './poster_small/0066154.jpg'
cannot identify image file './poster_small/1745787.jpg'
 61%|██████    | 590/967 [08:02<05:57,  1.06it/s]
cannot identify image file './poster_small/0045995.jpg'
cannot identify image file './poster_small/0038675.jpg'
 62%|██████▏   | 595/967 [08:06<05:36,  1.10it/s]
cannot identify image file './poster_small/0068971.jpg'
 62%|██████▏   | 596/967 [08:07<05:42,  1.08it/s]
cannot identify image file './poster_small/0050205.jpg'
 62%|██████▏   | 598/967 [08:09<05:45,  1.07it/s]
cannot identify image file './poster_small/0085175.jpg'
cannot identify image file './poster_small/0424237.jpg'
 62%|██████▏   | 603/967 [08:14<06:38,  1.09s/it]
cannot identify image file './poster_small/0190524.jpg'
cannot identify image file './poster_small/3365778.jpg'
 62%|██████▏   | 604/967 [08:15<06:19,  1.05s/it]
cannot identify image file './poster_small/8119752.jpg'
 63%|██████▎   | 608/967 [08:23<10:15,  1.71s/it]
cannot identify image file './poster_small/0031742.jpg'
 63%|██████▎   | 610/967 [08:25<09:16,  1.56s/it]
cannot identify image file './poster_small/0100465.jpg'
 63%|██████▎   | 614/967 [08:31<08:09,  1.39s/it]
cannot identify image file './poster_small/0072097.jpg'
 64%|██████▎   | 615/967 [08:32<08:29,  1.45s/it]
cannot identify image file './poster_small/0071771.jpg'
 64%|██████▍   | 617/967 [08:35<07:18,  1.25s/it]
cannot identify image file './poster_small/0174997.jpg'
 64%|██████▍   | 622/967 [08:39<05:10,  1.11it/s]
cannot identify image file './poster_small/0033676.jpg'
 64%|██████▍   | 623/967 [08:40<04:56,  1.16it/s]
cannot identify image file './poster_small/0443567.jpg'
 65%|██████▍   | 624/967 [08:41<04:51,  1.18it/s]
cannot identify image file './poster_small/0047559.jpg'
 65%|██████▍   | 627/967 [08:44<05:15,  1.08it/s]
cannot identify image file './poster_small/0260295.jpg'
 65%|██████▌   | 633/967 [08:49<05:07,  1.09it/s]
cannot identify image file './poster_small/0200768.jpg'
 66%|██████▌   | 640/967 [08:54<04:37,  1.18it/s]
cannot identify image file './poster_small/0245238.jpg'
 66%|██████▋   | 643/967 [08:57<04:31,  1.19it/s]
cannot identify image file './poster_small/0075679.jpg'
 67%|██████▋   | 644/967 [08:58<04:37,  1.16it/s]
cannot identify image file './poster_small/0042418.jpg'
 67%|██████▋   | 645/967 [09:00<07:22,  1.37s/it]
cannot identify image file './poster_small/0036814.jpg'
 67%|██████▋   | 651/967 [09:05<04:30,  1.17it/s]
cannot identify image file './poster_small/0079756.jpg'
 68%|██████▊   | 653/967 [09:07<04:54,  1.07it/s]
cannot identify image file './poster_small/0983922.jpg'
 68%|██████▊   | 658/967 [09:11<04:42,  1.09it/s]
cannot identify image file './poster_small/0058642.jpg'
 68%|██████▊   | 659/967 [09:12<05:02,  1.02it/s]
cannot identify image file './poster_small/0116016.jpg'
 69%|██████▊   | 663/967 [09:15<03:52,  1.31it/s]
cannot identify image file './poster_small/0092238.jpg'
 69%|██████▉   | 666/967 [09:18<04:22,  1.15it/s]
cannot identify image file './poster_small/2226519.jpg'
 69%|██████▉   | 668/967 [09:20<04:30,  1.10it/s]
cannot identify image file './poster_small/0414982.jpg'
cannot identify image file './poster_small/0419641.jpg'
 69%|██████▉   | 671/967 [09:23<04:19,  1.14it/s]
cannot identify image file './poster_small/0040246.jpg'
 69%|██████▉   | 672/967 [09:24<04:46,  1.03it/s]
cannot identify image file './poster_small/0217168.jpg'
 70%|██████▉   | 674/967 [09:25<04:19,  1.13it/s]
cannot identify image file './poster_small/0038452.jpg'
 70%|██████▉   | 675/967 [09:26<04:07,  1.18it/s]
cannot identify image file './poster_small/3155242.jpg'
 70%|███████   | 678/967 [09:29<04:14,  1.14it/s]
cannot identify image file './poster_small/0038255.jpg'
cannot identify image file './poster_small/0043153.jpg'
 70%|███████   | 681/967 [09:31<03:52,  1.23it/s]
cannot identify image file './poster_small/0072209.jpg'
 71%|███████   | 686/967 [09:36<04:12,  1.11it/s]
cannot identify image file './poster_small/0074797.jpg'
 71%|███████   | 688/967 [09:37<03:30,  1.32it/s]
cannot identify image file './poster_small/2720826.jpg'
 71%|███████▏  | 690/967 [09:38<03:04,  1.50it/s]
cannot identify image file './poster_small/0068227.jpg'
 72%|███████▏  | 695/967 [09:42<03:32,  1.28it/s]
cannot identify image file './poster_small/0372765.jpg'
 72%|███████▏  | 697/967 [09:44<03:39,  1.23it/s]
cannot identify image file './poster_small/0083713.jpg'
 72%|███████▏  | 699/967 [09:45<03:18,  1.35it/s]
cannot identify image file './poster_small/0252133.jpg'
 72%|███████▏  | 700/967 [09:46<03:15,  1.37it/s]
cannot identify image file './poster_small/0329913.jpg'
 73%|███████▎  | 703/967 [09:48<03:06,  1.41it/s]
cannot identify image file './poster_small/0036840.jpg'
 73%|███████▎  | 705/967 [09:49<02:47,  1.56it/s]
cannot identify image file './poster_small/0067956.jpg'
 73%|███████▎  | 707/967 [09:50<02:33,  1.69it/s]
cannot identify image file './poster_small/2195566.jpg'
 73%|███████▎  | 708/967 [09:51<02:58,  1.45it/s]
cannot identify image file './poster_small/0080549.jpg'
 74%|███████▍  | 714/967 [09:56<03:08,  1.34it/s]
cannot identify image file './poster_small/0073398.jpg'
 74%|███████▍  | 716/967 [09:58<03:08,  1.33it/s]
cannot identify image file './poster_small/0038205.jpg'
 74%|███████▍  | 718/967 [09:59<03:32,  1.17it/s]
cannot identify image file './poster_small/0117220.jpg'
 74%|███████▍  | 719/967 [10:00<03:35,  1.15it/s]
cannot identify image file './poster_small/0046198.jpg'
 75%|███████▍  | 725/967 [10:06<03:44,  1.08it/s]
cannot identify image file './poster_small/0060351.jpg'
 75%|███████▌  | 727/967 [10:07<02:57,  1.35it/s]
cannot identify image file './poster_small/0081568.jpg'
cannot identify image file './poster_small/0046921.jpg'
 75%|███████▌  | 729/967 [10:08<02:44,  1.45it/s]
cannot identify image file './poster_small/0034739.jpg'
 75%|███████▌  | 730/967 [10:09<02:35,  1.53it/s]
cannot identify image file './poster_small/0023251.jpg'
cannot identify image file './poster_small/0491764.jpg'
cannot identify image file './poster_small/0090642.jpg'
 77%|███████▋  | 741/967 [10:16<02:41,  1.40it/s]
cannot identify image file './poster_small/0037928.jpg'
 77%|███████▋  | 743/967 [10:18<02:48,  1.33it/s]
cannot identify image file './poster_small/0457430.jpg'
cannot identify image file './poster_small/0057283.jpg'
cannot identify image file './poster_small/0462519.jpg'
cannot identify image file './poster_small/0110546.jpg'
 77%|███████▋  | 747/967 [10:21<02:58,  1.23it/s]
cannot identify image file './poster_small/0045197.jpg'
 77%|███████▋  | 748/967 [10:22<02:50,  1.29it/s]
cannot identify image file './poster_small/0062523.jpg'
 78%|███████▊  | 750/967 [10:23<02:53,  1.25it/s]
cannot identify image file './poster_small/0112454.jpg'
cannot identify image file './poster_small/0065243.jpg'
 78%|███████▊  | 753/967 [10:25<02:14,  1.59it/s]
cannot identify image file './poster_small/0396171.jpg'
 79%|███████▉  | 762/967 [10:32<02:34,  1.32it/s]
cannot identify image file './poster_small/0059710.jpg'
cannot identify image file './poster_small/0080928.jpg'
cannot identify image file './poster_small/0126004.jpg'
 79%|███████▉  | 765/967 [10:34<02:34,  1.31it/s]
cannot identify image file './poster_small/1833116.jpg'
 80%|███████▉  | 770/967 [10:38<02:02,  1.61it/s]
cannot identify image file './poster_small/0075766.jpg'
cannot identify image file './poster_small/0123860.jpg'
cannot identify image file './poster_small/0123970.jpg'
cannot identify image file './poster_small/0323120.jpg'
cannot identify image file './poster_small/0035301.jpg'
 80%|███████▉  | 772/967 [10:39<02:26,  1.33it/s]
cannot identify image file './poster_small/1216520.jpg'
 80%|███████▉  | 773/967 [10:40<02:42,  1.19it/s]
cannot identify image file './poster_small/0028331.jpg'
cannot identify image file './poster_small/1330015.jpg'
cannot identify image file './poster_small/0062443.jpg'
 80%|████████  | 774/967 [10:41<02:53,  1.11it/s]
cannot identify image file './poster_small/0485241.jpg'
cannot identify image file './poster_small/0154467.jpg'
 80%|████████  | 776/967 [10:43<02:57,  1.08it/s]
cannot identify image file './poster_small/5235348.jpg'
 80%|████████  | 777/967 [10:44<02:57,  1.07it/s]
cannot identify image file './poster_small/0191074.jpg'
 80%|████████  | 778/967 [10:45<02:56,  1.07it/s]
cannot identify image file './poster_small/0060168.jpg'
 81%|████████  | 779/967 [10:46<02:45,  1.13it/s]
cannot identify image file './poster_small/0081738.jpg'
 81%|████████  | 782/967 [10:48<02:13,  1.39it/s]
cannot identify image file './poster_small/0379473.jpg'
 81%|████████▏ | 788/967 [10:53<02:33,  1.17it/s]
cannot identify image file './poster_small/0063381.jpg'
cannot identify image file './poster_small/4427076.jpg'
cannot identify image file './poster_small/0173714.jpg'
 82%|████████▏ | 791/967 [10:56<02:28,  1.19it/s]
cannot identify image file './poster_small/3794028.jpg'
 82%|████████▏ | 793/967 [10:57<02:32,  1.14it/s]
cannot identify image file './poster_small/0464106.jpg'
cannot identify image file './poster_small/0090570.jpg'
 82%|████████▏ | 794/967 [10:58<02:27,  1.18it/s]
cannot identify image file './poster_small/0087829.jpg'
 83%|████████▎ | 799/967 [11:01<01:39,  1.69it/s]
cannot identify image file './poster_small/0041866.jpg'
 83%|████████▎ | 802/967 [11:03<02:02,  1.35it/s]
cannot identify image file './poster_small/0444682.jpg'
cannot identify image file './poster_small/0058110.jpg'
 83%|████████▎ | 805/967 [11:06<02:19,  1.16it/s]
cannot identify image file './poster_small/0072392.jpg'
cannot identify image file './poster_small/0080546.jpg'
 83%|████████▎ | 806/967 [11:07<02:31,  1.06it/s]
cannot identify image file './poster_small/0064482.jpg'
 84%|████████▎ | 809/967 [11:10<02:19,  1.13it/s]
cannot identify image file './poster_small/0044599.jpg'
 84%|████████▍ | 812/967 [11:12<01:59,  1.29it/s]
cannot identify image file './poster_small/0439771.jpg'
 84%|████████▍ | 814/967 [11:13<01:36,  1.58it/s]
cannot identify image file './poster_small/0021756.jpg'
 85%|████████▍ | 820/967 [11:19<02:30,  1.02s/it]
cannot identify image file './poster_small/0039676.jpg'
cannot identify image file './poster_small/0160801.jpg'
 85%|████████▍ | 821/967 [11:20<02:19,  1.04it/s]
cannot identify image file './poster_small/0032981.jpg'
cannot identify image file './poster_small/0049854.jpg'
 85%|████████▌ | 823/967 [11:22<02:17,  1.05it/s]
cannot identify image file './poster_small/2605312.jpg'
cannot identify image file './poster_small/0367257.jpg'
 86%|████████▌ | 829/967 [11:27<02:04,  1.11it/s]
cannot identify image file './poster_small/6817944.jpg'
 87%|████████▋ | 839/967 [11:36<01:39,  1.28it/s]
cannot identify image file './poster_small/0082081.jpg'
 87%|████████▋ | 841/967 [11:37<01:19,  1.59it/s]
cannot identify image file './poster_small/1146283.jpg'
cannot identify image file './poster_small/0796335.jpg'
 87%|████████▋ | 842/967 [11:38<01:34,  1.32it/s]
cannot identify image file './poster_small/0183355.jpg'
 87%|████████▋ | 844/967 [11:40<01:45,  1.17it/s]
cannot identify image file './poster_small/0218094.jpg'
cannot identify image file './poster_small/0290820.jpg'
 87%|████████▋ | 845/967 [11:41<01:43,  1.18it/s]
cannot identify image file './poster_small/1059793.jpg'
cannot identify image file './poster_small/0025665.jpg'
 88%|████████▊ | 848/967 [11:45<02:11,  1.11s/it]
cannot identify image file './poster_small/0259786.jpg'
 88%|████████▊ | 854/967 [11:50<01:36,  1.17it/s]
cannot identify image file './poster_small/0044369.jpg'
 88%|████████▊ | 855/967 [11:51<01:36,  1.16it/s]
cannot identify image file './poster_small/0031127.jpg'
 89%|████████▊ | 857/967 [11:52<01:35,  1.16it/s]
cannot identify image file './poster_small/0283644.jpg'
 89%|████████▉ | 860/967 [11:55<01:32,  1.16it/s]
cannot identify image file './poster_small/0316599.jpg'
 90%|████████▉ | 866/967 [12:00<01:23,  1.21it/s]
cannot identify image file './poster_small/0118767.jpg'
 90%|████████▉ | 867/967 [12:01<01:11,  1.39it/s]
cannot identify image file './poster_small/0059758.jpg'
cannot identify image file './poster_small/0122194.jpg'
 90%|████████▉ | 868/967 [12:02<01:15,  1.32it/s]
cannot identify image file './poster_small/0070404.jpg'
 90%|████████▉ | 869/967 [12:02<01:15,  1.30it/s]
cannot identify image file './poster_small/0028484.jpg'
 90%|████████▉ | 870/967 [12:03<01:18,  1.24it/s]
cannot identify image file './poster_small/0166792.jpg'
cannot identify image file './poster_small/0369903.jpg'
 91%|█████████ | 880/967 [12:12<01:05,  1.33it/s]
cannot identify image file './poster_small/0073115.jpg'
 91%|█████████▏| 884/967 [12:15<01:08,  1.21it/s]
cannot identify image file './poster_small/0284655.jpg'
 92%|█████████▏| 885/967 [12:16<01:06,  1.23it/s]
cannot identify image file './poster_small/9236264.jpg'
 92%|█████████▏| 892/967 [12:22<01:03,  1.18it/s]
cannot identify image file './poster_small/0137094.jpg'
 92%|█████████▏| 893/967 [12:23<00:59,  1.25it/s]
cannot identify image file './poster_small/0064323.jpg'
 93%|█████████▎| 895/967 [12:24<00:48,  1.49it/s]
cannot identify image file './poster_small/0062741.jpg'
 93%|█████████▎| 897/967 [12:25<00:41,  1.68it/s]
cannot identify image file './poster_small/0084237.jpg'
 93%|█████████▎| 901/967 [12:28<00:48,  1.35it/s]
cannot identify image file './poster_small/0084273.jpg'
 93%|█████████▎| 903/967 [12:30<00:50,  1.27it/s]
cannot identify image file './poster_small/4193400.jpg'
 94%|█████████▎| 906/967 [12:32<00:50,  1.21it/s]
cannot identify image file './poster_small/0124307.jpg'
 94%|█████████▍| 908/967 [12:34<00:51,  1.14it/s]
cannot identify image file './poster_small/0157383.jpg'
 94%|█████████▍| 913/967 [12:37<00:35,  1.53it/s]
cannot identify image file './poster_small/0412808.jpg'
 95%|█████████▍| 915/967 [12:39<00:35,  1.48it/s]
cannot identify image file './poster_small/0161860.jpg'
 95%|█████████▍| 918/967 [12:41<00:31,  1.58it/s]
cannot identify image file './poster_small/4613254.jpg'
 95%|█████████▌| 920/967 [12:42<00:32,  1.44it/s]
cannot identify image file './poster_small/2788556.jpg'
 96%|█████████▌| 925/967 [12:46<00:34,  1.21it/s]
cannot identify image file './poster_small/1437361.jpg'
 96%|█████████▌| 926/967 [12:47<00:34,  1.19it/s]
cannot identify image file './poster_small/3037582.jpg'
 96%|█████████▌| 928/967 [12:49<00:29,  1.32it/s]
cannot identify image file './poster_small/0048211.jpg'
 97%|█████████▋| 937/967 [12:57<00:26,  1.13it/s]
cannot identify image file './poster_small/4516162.jpg'
cannot identify image file './poster_small/0033932.jpg'
 97%|█████████▋| 942/967 [13:00<00:17,  1.43it/s]
cannot identify image file './poster_small/0042871.jpg'
 98%|█████████▊| 943/967 [13:01<00:15,  1.57it/s]
cannot identify image file './poster_small/0137799.jpg'
 98%|█████████▊| 944/967 [13:01<00:14,  1.62it/s]
cannot identify image file './poster_small/1714196.jpg'
 98%|█████████▊| 945/967 [13:02<00:14,  1.53it/s]
cannot identify image file './poster_small/0025117.jpg'
 98%|█████████▊| 946/967 [13:03<00:13,  1.51it/s]
cannot identify image file './poster_small/2357144.jpg'
 98%|█████████▊| 948/967 [13:04<00:12,  1.53it/s]
cannot identify image file './poster_small/1525898.jpg'
cannot identify image file './poster_small/0098088.jpg'
 98%|█████████▊| 950/967 [13:06<00:13,  1.24it/s]
cannot identify image file './poster_small/6537238.jpg'
cannot identify image file './poster_small/0303151.jpg'
 98%|█████████▊| 951/967 [13:07<00:13,  1.22it/s]
cannot identify image file './poster_small/0315632.jpg'
 99%|█████████▊| 953/967 [13:09<00:12,  1.16it/s]
cannot identify image file './poster_small/0316352.jpg'
 99%|█████████▉| 955/967 [13:11<00:11,  1.08it/s]
cannot identify image file './poster_small/0166557.jpg'
 99%|█████████▉| 956/967 [13:12<00:10,  1.06it/s]
cannot identify image file './poster_small/0066879.jpg'
 99%|█████████▉| 957/967 [13:13<00:09,  1.04it/s]
cannot identify image file './poster_small/3736766.jpg'
 99%|█████████▉| 958/967 [13:13<00:08,  1.11it/s]
cannot identify image file './poster_small/0140340.jpg'
 99%|█████████▉| 959/967 [13:14<00:06,  1.27it/s]
cannot identify image file './poster_small/1570970.jpg'
cannot identify image file './poster_small/0075364.jpg'
100%|█████████▉| 966/967 [13:21<00:01,  1.07s/it]
cannot identify image file './poster_small/0099901.jpg'
100%|██████████| 967/967 [13:23<00:00,  1.20it/s]
Unable to extract features for 447 images

import pickle
with open('movies_poster_features.pkl', 'wb') as f:
    pickle.dump({"feature_dict": feature_dict}, f, protocol=pickle.HIGHEST_PROTOCOL)
len(feature_dict)
61504