"Automatic Feature Extraction in Images and Texts using Transfer Learning"
Project description
deepfeatx
: Deep Learning Feature Extractor of Images using Transfer Learning Models
Helper for automatic extraction of features from images (and soon text as well) from transfer learning models like ResNet, VGG16 and EfficientNet.
Install
#hide_output
!pip install deepfeatx
Why this project has been created
- Fill the gap between ML and DL thus allowing estimators beyond only neural networks for computer vision and NLP problems
- Neural network models are too painful to setup and train - data generators, optimizers, learning rates, loss functions, training loops, batch size, etc.
- State of the art results are possible thanks to pretrained models that allows feature extraction
- With this library we can handle those problems as they were traditional machine learning problems
- Possibility of using low-code APIs like
scikit-learn
for computer vision and NLP problems
Usage
Extracting features from an image
from deepfeatx.image import ImageFeatureExtractor
fe = ImageFeatureExtractor()
2021-10-06 11:27:12.595100: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
2021-10-06 11:27:12.595191: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
Metal device set to: Apple M1
im_url='https://raw.githubusercontent.com/WittmannF/deepfeatx/master/sample_data/cats_vs_dogs/valid/dog/dog.124.jpg'
fe.read_img_url(im_url)
fe.url_to_vector(im_url)
2021-10-06 11:27:13.679687: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)
2021-10-06 11:27:13.679874: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz
2021-10-06 11:27:13.846942: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
array([[0.282272 , 1.0504342 , 0.11333481, ..., 0.18499802, 0.02220213,
0.06158632]], dtype=float32)
Extracting Features from a Folder with Images
!git clone https://github.com/WittmannF/image-scraper.git
fatal: destination path 'image-scraper' already exists and is not an empty directory.
df=fe.extract_features_from_directory('image-scraper/images/pug',
classes_as_folders=False,
export_vectors_as_df=True)
df.head()
Found 4 validated image filenames.
1/1 [==============================] - 0s 412ms/step
2021-10-06 11:27:16.893822: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
filepaths | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | image-scraper/images/pug/efd08a2dc5.jpg | 0.030705 | 0.042393 | 0.422986 | 1.316509 | 0.020907 | 0.000000 | 0.081956 | 0.404423 | 0.489835 | ... | 0.013765 | 0.642072 | 1.818821 | 0.299441 | 0.000000 | 0.419997 | 0.200106 | 0.179524 | 0.026852 | 0.079208 |
1 | image-scraper/images/pug/24d0f1eee3.jpg | 0.068498 | 0.319734 | 0.081250 | 1.248270 | 0.035602 | 0.003398 | 0.000000 | 0.131528 | 0.099514 | ... | 0.258502 | 1.042543 | 0.691716 | 0.264937 | 0.112621 | 0.927995 | 0.050389 | 0.000000 | 0.087217 | 0.066992 |
2 | image-scraper/images/pug/6fb189ce56.jpg | 0.373005 | 0.102008 | 0.097662 | 0.362927 | 0.549803 | 0.118015 | 0.000000 | 0.104320 | 0.102526 | ... | 0.210635 | 0.213147 | 0.013510 | 0.574433 | 0.017234 | 0.628009 | 0.000000 | 0.184550 | 0.000000 | 0.248099 |
3 | image-scraper/images/pug/ee815ebc87.jpg | 0.263904 | 0.430294 | 0.391808 | 0.033076 | 0.200174 | 0.019310 | 0.002792 | 0.129120 | 0.050257 | ... | 0.048244 | 0.147806 | 1.430154 | 0.266686 | 0.005126 | 0.158225 | 0.097526 | 0.005045 | 0.060016 | 1.109626 |
4 rows × 2049 columns
Extracting Features from a directory having one sub-folder per class
If the directory structure is the following:
main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg
We can enter main_directory
as input by changing classes_as_folders
as True:
df=fe.extract_features_from_directory('image-scraper/images/',
classes_as_folders=True,
export_vectors_as_df=True,
export_class_names=True)
df.head()
Found 504 images belonging to 6 classes.
2021-10-06 11:27:22.669056: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
16/16 [==============================] - 6s 358ms/step
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
filepaths | classes | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ... | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | image-scraper/images/chihuahua/00dcf98689.jpg | chihuahua | 0.640897 | 0.887126 | 0.017012 | 0.723459 | 0.164907 | 0.010150 | 0.042344 | 0.987457 | ... | 0.289271 | 0.182086 | 0.638064 | 0.092432 | 0.212789 | 0.077480 | 0.255031 | 0.006371 | 0.489620 | 0.028672 |
1 | image-scraper/images/chihuahua/01ee02c2fb.jpg | chihuahua | 0.357992 | 0.128552 | 0.227736 | 0.652588 | 0.014283 | 0.092680 | 0.049545 | 0.319637 | ... | 0.061090 | 0.526585 | 2.363337 | 0.160859 | 0.000000 | 0.008739 | 0.401081 | 1.377398 | 0.383465 | 0.434211 |
2 | image-scraper/images/chihuahua/040df01fb4.jpg | chihuahua | 0.163308 | 0.383921 | 0.029490 | 0.985443 | 0.866045 | 0.098337 | 0.000000 | 0.634062 | ... | 0.188044 | 0.000000 | 0.056569 | 1.115319 | 0.000000 | 0.005084 | 0.072280 | 0.555855 | 0.333000 | 0.413303 |
3 | image-scraper/images/chihuahua/04d8487a97.jpg | chihuahua | 0.206927 | 3.128521 | 0.147507 | 0.104669 | 0.554029 | 2.415109 | 0.009964 | 0.171642 | ... | 0.000000 | 1.297839 | 1.165449 | 0.562891 | 0.000000 | 0.395750 | 0.250796 | 0.295067 | 0.534072 | 0.051334 |
4 | image-scraper/images/chihuahua/0d9fa44dea.jpg | chihuahua | 0.233232 | 0.355028 | 0.453336 | 0.060354 | 0.479405 | 0.000000 | 0.099390 | 0.223719 | ... | 0.308505 | 0.376597 | 1.075250 | 0.416980 | 0.073678 | 0.316829 | 0.620357 | 0.125714 | 0.179848 | 0.110405 |
5 rows × 2050 columns
The usage of export_class_names=True
will add a new column to the dataframe with the classes names.
Examples
Cats vs Dogs using Keras vs deepfeatx
First let's compare the code of one of the simplest deep learning libraries (Keras) with deepfeatx
. As example, let's use a subset of Cats vs Dogs:
from deepfeatx.image import download_dataset
download_dataset('https://github.com/dl7days/datasets/raw/master/cats-dogs-data.zip', 'cats-dogs-data.zip')
Downloading Dataset...
--2021-10-06 11:26:20-- https://github.com/dl7days/datasets/raw/master/cats-dogs-data.zip
Resolving github.com (github.com)... 20.201.28.151
Connecting to github.com (github.com)|20.201.28.151|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/dl7days/datasets/master/cats-dogs-data.zip [following]
--2021-10-06 11:26:20-- https://raw.githubusercontent.com/dl7days/datasets/master/cats-dogs-data.zip
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55203029 (53M) [application/zip]
Saving to: ‘cats-dogs-data.zip’
0K .......... .......... .......... .......... .......... 0% 1,53M 34s
50K .......... .......... .......... .......... .......... 0% 3,92M 24s
100K .......... .......... .......... .......... .......... 0% 2,51M 23s
150K .......... .......... .......... .......... .......... 0% 4,11M 20s
200K .......... .......... .......... .......... .......... 0% 10,0M 17s
250K .......... .......... .......... .......... .......... 0% 3,24M 17s
300K .......... .......... .......... .......... .......... 0% 7,93M 16s
350K .......... .......... .......... .......... .......... 0% 8,54M 14s
400K .......... .......... .......... .......... .......... 0% 54,7M 13s
450K .......... .......... .......... .......... .......... 0% 9,20M 12s
500K .......... .......... .......... .......... .......... 1% 45,5M 11s
550K .......... .......... .......... .......... .......... 1% 6,86M 11s
600K .......... .......... .......... .......... .......... 1% 11,1M 10s
650K .......... .......... .......... .......... .......... 1% 8,95M 10s
700K .......... .......... .......... .......... .......... 1% 55,4M 9s
750K .......... .......... .......... .......... .......... 1% 6,09M 9s
800K .......... .......... .......... .......... .......... 1% 116M 9s
850K .......... .......... .......... .......... .......... 1% 148M 8s
900K .......... .......... .......... .......... .......... 1% 30,5M 8s
950K .......... .......... .......... .......... .......... 1% 88,6M 8s
1000K .......... .......... .......... .......... .......... 1% 31,5M 7s
1050K .......... .......... .......... .......... .......... 2% 20,6M 7s
1100K .......... .......... .......... .......... .......... 2% 57,6M 7s
1150K .......... .......... .......... .......... .......... 2% 39,6M 7s
1200K .......... .......... .......... .......... .......... 2% 50,0M 6s
1250K .......... .......... .......... .......... .......... 2% 4,18M 7s
1300K .......... .......... .......... .......... .......... 2% 3,63M 7s
1350K .......... .......... .......... .......... .......... 2% 20,8M 7s
1400K .......... .......... .......... .......... .......... 2% 97,7M 6s
1450K .......... .......... .......... .......... .......... 2% 16,5M 6s
1500K .......... .......... .......... .......... .......... 2% 108M 6s
1550K .......... .......... .......... .......... .......... 2% 19,8M 6s
1600K .......... .......... .......... .......... .......... 3% 21,6M 6s
1650K .......... .......... .......... .......... .......... 3% 38,8M 6s
1700K .......... .......... .......... .......... .......... 3% 21,7M 6s
1750K .......... .......... .......... .......... .......... 3% 48,8M 6s
1800K .......... .......... .......... .......... .......... 3% 21,4M 5s
1850K .......... .......... .......... .......... .......... 3% 108M 5s
1900K .......... .......... .......... .......... .......... 3% 22,6M 5s
1950K .......... .......... .......... .......... .......... 3% 76,9M 5s
2000K .......... .......... .......... .......... .......... 3% 18,2M 5s
2050K .......... .......... .......... .......... .......... 3% 25,6M 5s
2100K .......... .......... .......... .......... .......... 3% 41,5M 5s
2150K .......... .......... .......... .......... .......... 4% 66,6M 5s
2200K .......... .......... .......... .......... .......... 4% 11,5M 5s
2250K .......... .......... .......... .......... .......... 4% 150M 5s
2300K .......... .......... .......... .......... .......... 4% 56,8M 5s
2350K .......... .......... .......... .......... .......... 4% 40,7M 5s
2400K .......... .......... .......... .......... .......... 4% 23,7M 4s
2450K .......... .......... .......... .......... .......... 4% 110M 4s
2500K .......... .......... .......... .......... .......... 4% 16,6M 4s
2550K .......... .......... .......... .......... .......... 4% 24,0M 4s
2600K .......... .......... .......... .......... .......... 4% 48,4M 4s
2650K .......... .......... .......... .......... .......... 5% 16,5M 4s
2700K .......... .......... .......... .......... .......... 5% 119M 4s
2750K .......... .......... .......... .......... .......... 5% 19,8M 4s
2800K .......... .......... .......... .......... .......... 5% 45,4M 4s
2850K .......... .......... .......... .......... .......... 5% 18,1M 4s
2900K .......... .......... .......... .......... .......... 5% 68,1M 4s
2950K .......... .......... .......... .......... .......... 5% 44,6M 4s
3000K .......... .......... .......... .......... .......... 5% 43,5M 4s
3050K .......... .......... .......... .......... .......... 5% 20,6M 4s
3100K .......... .......... .......... .......... .......... 5% 75,4M 4s
3150K .......... .......... .......... .......... .......... 5% 20,3M 4s
3200K .......... .......... .......... .......... .......... 6% 66,6M 4s
3250K .......... .......... .......... .......... .......... 6% 23,5M 4s
3300K .......... .......... .......... .......... .......... 6% 51,1M 4s
3350K .......... .......... .......... .......... .......... 6% 20,2M 4s
3400K .......... .......... .......... .......... .......... 6% 18,2M 4s
3450K .......... .......... .......... .......... .......... 6% 85,4M 4s
3500K .......... .......... .......... .......... .......... 6% 23,9M 4s
3550K .......... .......... .......... .......... .......... 6% 26,5M 3s
3600K .......... .......... .......... .......... .......... 6% 18,7M 3s
3650K .......... .......... .......... .......... .......... 6% 66,1M 3s
3700K .......... .......... .......... .......... .......... 6% 23,7M 3s
3750K .......... .......... .......... .......... .......... 7% 24,3M 3s
3800K .......... .......... .......... .......... .......... 7% 44,8M 3s
3850K .......... .......... .......... .......... .......... 7% 36,2M 3s
3900K .......... .......... .......... .......... .......... 7% 41,0M 3s
3950K .......... .......... .......... .......... .......... 7% 57,9M 3s
4000K .......... .......... .......... .......... .......... 7% 15,1M 3s
4050K .......... .......... .......... .......... .......... 7% 153M 3s
4100K .......... .......... .......... .......... .......... 7% 22,2M 3s
4150K .......... .......... .......... .......... .......... 7% 78,6M 3s
4200K .......... .......... .......... .......... .......... 7% 21,5M 3s
4250K .......... .......... .......... .......... .......... 7% 88,6M 3s
4300K .......... .......... .......... .......... .......... 8% 17,6M 3s
4350K .......... .......... .......... .......... .......... 8% 77,3M 3s
4400K .......... .......... .......... .......... .......... 8% 16,8M 3s
4450K .......... .......... .......... .......... .......... 8% 19,9M 3s
4500K .......... .......... .......... .......... .......... 8% 48,7M 3s
4550K .......... .......... .......... .......... .......... 8% 150M 3s
4600K .......... .......... .......... .......... .......... 8% 22,7M 3s
4650K .......... .......... .......... .......... .......... 8% 49,5M 3s
4700K .......... .......... .......... .......... .......... 8% 19,3M 3s
4750K .......... .......... .......... .......... .......... 8% 171M 3s
4800K .......... .......... .......... .......... .......... 8% 20,5M 3s
4850K .......... .......... .......... .......... .......... 9% 19,9M 3s
4900K .......... .......... .......... .......... .......... 9% 52,4M 3s
4950K .......... .......... .......... .......... .......... 9% 15,2M 3s
5000K .......... .......... .......... .......... .......... 9% 58,8M 3s
5050K .......... .......... .......... .......... .......... 9% 16,6M 3s
5100K .......... .......... .......... .......... .......... 9% 110M 3s
5150K .......... .......... .......... .......... .......... 9% 43,6M 3s
5200K .......... .......... .......... .......... .......... 9% 54,6M 3s
5250K .......... .......... .......... .......... .......... 9% 22,4M 3s
5300K .......... .......... .......... .......... .......... 9% 49,3M 3s
5350K .......... .......... .......... .......... .......... 10% 13,7M 3s
5400K .......... .......... .......... .......... .......... 10% 114M 3s
5450K .......... .......... .......... .......... .......... 10% 22,9M 3s
5500K .......... .......... .......... .......... .......... 10% 85,2M 3s
5550K .......... .......... .......... .......... .......... 10% 16,4M 3s
5600K .......... .......... .......... .......... .......... 10% 118M 3s
5650K .......... .......... .......... .......... .......... 10% 34,8M 3s
5700K .......... .......... .......... .......... .......... 10% 47,6M 3s
5750K .......... .......... .......... .......... .......... 10% 15,5M 3s
5800K .......... .......... .......... .......... .......... 10% 19,1M 3s
5850K .......... .......... .......... .......... .......... 10% 58,4M 3s
5900K .......... .......... .......... .......... .......... 11% 21,1M 3s
5950K .......... .......... .......... .......... .......... 11% 92,5M 3s
6000K .......... .......... .......... .......... .......... 11% 26,6M 3s
6050K .......... .......... .......... .......... .......... 11% 58,8M 3s
6100K .......... .......... .......... .......... .......... 11% 20,3M 3s
6150K .......... .......... .......... .......... .......... 11% 49,1M 3s
6200K .......... .......... .......... .......... .......... 11% 18,3M 3s
6250K .......... .......... .......... .......... .......... 11% 53,2M 3s
6300K .......... .......... .......... .......... .......... 11% 18,2M 3s
6350K .......... .......... .......... .......... .......... 11% 79,5M 3s
6400K .......... .......... .......... .......... .......... 11% 21,9M 3s
6450K .......... .......... .......... .......... .......... 12% 29,8M 3s
6500K .......... .......... .......... .......... .......... 12% 31,8M 2s
6550K .......... .......... .......... .......... .......... 12% 54,2M 2s
6600K .......... .......... .......... .......... .......... 12% 27,2M 2s
6650K .......... .......... .......... .......... .......... 12% 70,8M 2s
6700K .......... .......... .......... .......... .......... 12% 15,6M 2s
6750K .......... .......... .......... .......... .......... 12% 18,9M 2s
6800K .......... .......... .......... .......... .......... 12% 77,5M 2s
6850K .......... .......... .......... .......... .......... 12% 22,4M 2s
6900K .......... .......... .......... .......... .......... 12% 28,4M 2s
6950K .......... .......... .......... .......... .......... 12% 23,1M 2s
7000K .......... .......... .......... .......... .......... 13% 77,4M 2s
7050K .......... .......... .......... .......... .......... 13% 25,6M 2s
7100K .......... .......... .......... .......... .......... 13% 127M 2s
7150K .......... .......... .......... .......... .......... 13% 17,2M 2s
7200K .......... .......... .......... .......... .......... 13% 82,8M 2s
7250K .......... .......... .......... .......... .......... 13% 15,9M 2s
7300K .......... .......... .......... .......... .......... 13% 134M 2s
7350K .......... .......... .......... .......... .......... 13% 29,7M 2s
7400K .......... .......... .......... .......... .......... 13% 78,1M 2s
7450K .......... .......... .......... .......... .......... 13% 16,4M 2s
7500K .......... .......... .......... .......... .......... 14% 78,5M 2s
7550K .......... .......... .......... .......... .......... 14% 21,0M 2s
7600K .......... .......... .......... .......... .......... 14% 32,6M 2s
7650K .......... .......... .......... .......... .......... 14% 27,7M 2s
7700K .......... .......... .......... .......... .......... 14% 18,3M 2s
7750K .......... .......... .......... .......... .......... 14% 41,7M 2s
7800K .......... .......... .......... .......... .......... 14% 19,2M 2s
7850K .......... .......... .......... .......... .......... 14% 114M 2s
7900K .......... .......... .......... .......... .......... 14% 18,5M 2s
7950K .......... .......... .......... .......... .......... 14% 54,0M 2s
8000K .......... .......... .......... .......... .......... 14% 25,6M 2s
8050K .......... .......... .......... .......... .......... 15% 87,3M 2s
8100K .......... .......... .......... .......... .......... 15% 21,5M 2s
8150K .......... .......... .......... .......... .......... 15% 26,4M 2s
8200K .......... .......... .......... .......... .......... 15% 20,6M 2s
8250K .......... .......... .......... .......... .......... 15% 99,2M 2s
8300K .......... .......... .......... .......... .......... 15% 20,2M 2s
8350K .......... .......... .......... .......... .......... 15% 151M 2s
8400K .......... .......... .......... .......... .......... 15% 17,1M 2s
8450K .......... .......... .......... .......... .......... 15% 59,6M 2s
8500K .......... .......... .......... .......... .......... 15% 14,7M 2s
8550K .......... .......... .......... .......... .......... 15% 87,8M 2s
8600K .......... .......... .......... .......... .......... 16% 57,2M 2s
8650K .......... .......... .......... .......... .......... 16% 70,7M 2s
8700K .......... .......... .......... .......... .......... 16% 14,3M 2s
8750K .......... .......... .......... .......... .......... 16% 169M 2s
8800K .......... .......... .......... .......... .......... 16% 20,2M 2s
8850K .......... .......... .......... .......... .......... 16% 19,2M 2s
8900K .......... .......... .......... .......... .......... 16% 57,5M 2s
8950K .......... .......... .......... .......... .......... 16% 54,4M 2s
9000K .......... .......... .......... .......... .......... 16% 26,1M 2s
9050K .......... .......... .......... .......... .......... 16% 22,6M 2s
9100K .......... .......... .......... .......... .......... 16% 78,6M 2s
9150K .......... .......... .......... .......... .......... 17% 14,3M 2s
9200K .......... .......... .......... .......... .......... 17% 79,4M 2s
9250K .......... .......... .......... .......... .......... 17% 16,2M 2s
9300K .......... .......... .......... .......... .......... 17% 68,1M 2s
9350K .......... .......... .......... .......... .......... 17% 27,8M 2s
9400K .......... .......... .......... .......... .......... 17% 43,3M 2s
9450K .......... .......... .......... .......... .......... 17% 29,3M 2s
9500K .......... .......... .......... .......... .......... 17% 45,5M 2s
9550K .......... .......... .......... .......... .......... 17% 21,6M 2s
9600K .......... .......... .......... .......... .......... 17% 13,5M 2s
9650K .......... .......... .......... .......... .......... 17% 152M 2s
9700K .......... .......... .......... .......... .......... 18% 33,2M 2s
9750K .......... .......... .......... .......... .......... 18% 94,6M 2s
9800K .......... .......... .......... .......... .......... 18% 19,4M 2s
9850K .......... .......... .......... .......... .......... 18% 67,9M 2s
9900K .......... .......... .......... .......... .......... 18% 15,5M 2s
9950K .......... .......... .......... .......... .......... 18% 52,4M 2s
10000K .......... .......... .......... .......... .......... 18% 12,6M 2s
10050K .......... .......... .......... .......... .......... 18% 168M 2s
10100K .......... .......... .......... .......... .......... 18% 21,4M 2s
10150K .......... .......... .......... .......... .......... 18% 137M 2s
10200K .......... .......... .......... .......... .......... 19% 20,5M 2s
10250K .......... .......... .......... .......... .......... 19% 5,43M 2s
10300K .......... .......... .......... .......... .......... 19% 105M 2s
10350K .......... .......... .......... .......... .......... 19% 126M 2s
10400K .......... .......... .......... .......... .......... 19% 157M 2s
10450K .......... .......... .......... .......... .......... 19% 157M 2s
10500K .......... .......... .......... .......... .......... 19% 85,2M 2s
10550K .......... .......... .......... .......... .......... 19% 87,0M 2s
10600K .......... .......... .......... .......... .......... 19% 168M 2s
10650K .......... .......... .......... .......... .......... 19% 156M 2s
10700K .......... .......... .......... .......... .......... 19% 24,3M 2s
10750K .......... .......... .......... .......... .......... 20% 80,7M 2s
10800K .......... .......... .......... .......... .......... 20% 13,7M 2s
10850K .......... .......... .......... .......... .......... 20% 17,5M 2s
10900K .......... .......... .......... .......... .......... 20% 183M 2s
10950K .......... .......... .......... .......... .......... 20% 19,8M 2s
11000K .......... .......... .......... .......... .......... 20% 39,6M 2s
11050K .......... .......... .......... .......... .......... 20% 37,5M 2s
11100K .......... .......... .......... .......... .......... 20% 19,6M 2s
11150K .......... .......... .......... .......... .......... 20% 152M 2s
11200K .......... .......... .......... .......... .......... 20% 22,8M 2s
11250K .......... .......... .......... .......... .......... 20% 44,3M 2s
11300K .......... .......... .......... .......... .......... 21% 16,1M 2s
11350K .......... .......... .......... .......... .......... 21% 55,4M 2s
11400K .......... .......... .......... .......... .......... 21% 20,7M 2s
11450K .......... .......... .......... .......... .......... 21% 103M 2s
11500K .......... .......... .......... .......... .......... 21% 23,3M 2s
11550K .......... .......... .......... .......... .......... 21% 95,4M 2s
11600K .......... .......... .......... .......... .......... 21% 11,1M 2s
11650K .......... .......... .......... .......... .......... 21% 175M 2s
11700K .......... .......... .......... .......... .......... 21% 28,4M 2s
11750K .......... .......... .......... .......... .......... 21% 103M 2s
11800K .......... .......... .......... .......... .......... 21% 23,8M 2s
11850K .......... .......... .......... .......... .......... 22% 68,7M 2s
11900K .......... .......... .......... .......... .......... 22% 20,9M 2s
11950K .......... .......... .......... .......... .......... 22% 51,0M 2s
12000K .......... .......... .......... .......... .......... 22% 5,65M 2s
12050K .......... .......... .......... .......... .......... 22% 117M 2s
12100K .......... .......... .......... .......... .......... 22% 141M 2s
12150K .......... .......... .......... .......... .......... 22% 139M 2s
12200K .......... .......... .......... .......... .......... 22% 164M 2s
12250K .......... .......... .......... .......... .......... 22% 54,0M 2s
12300K .......... .......... .......... .......... .......... 22% 75,5M 2s
12350K .......... .......... .......... .......... .......... 23% 22,6M 2s
12400K .......... .......... .......... .......... .......... 23% 8,03M 2s
12450K .......... .......... .......... .......... .......... 23% 80,7M 2s
12500K .......... .......... .......... .......... .......... 23% 147M 2s
12550K .......... .......... .......... .......... .......... 23% 121M 2s
12600K .......... .......... .......... .......... .......... 23% 143M 2s
12650K .......... .......... .......... .......... .......... 23% 33,3M 2s
12700K .......... .......... .......... .......... .......... 23% 17,4M 2s
12750K .......... .......... .......... .......... .......... 23% 62,4M 2s
12800K .......... .......... .......... .......... .......... 23% 20,1M 2s
12850K .......... .......... .......... .......... .......... 23% 82,5M 2s
12900K .......... .......... .......... .......... .......... 24% 23,9M 2s
12950K .......... .......... .......... .......... .......... 24% 40,5M 2s
13000K .......... .......... .......... .......... .......... 24% 16,8M 2s
13050K .......... .......... .......... .......... .......... 24% 139M 2s
13100K .......... .......... .......... .......... .......... 24% 22,1M 2s
13150K .......... .......... .......... .......... .......... 24% 87,8M 2s
13200K .......... .......... .......... .......... .......... 24% 13,0M 2s
13250K .......... .......... .......... .......... .......... 24% 95,2M 2s
13300K .......... .......... .......... .......... .......... 24% 20,0M 2s
13350K .......... .......... .......... .......... .......... 24% 124M 2s
13400K .......... .......... .......... .......... .......... 24% 18,1M 2s
13450K .......... .......... .......... .......... .......... 25% 148M 2s
13500K .......... .......... .......... .......... .......... 25% 19,0M 2s
13550K .......... .......... .......... .......... .......... 25% 15,6M 2s
13600K .......... .......... .......... .......... .......... 25% 131M 2s
13650K .......... .......... .......... .......... .......... 25% 180M 2s
13700K .......... .......... .......... .......... .......... 25% 19,5M 2s
13750K .......... .......... .......... .......... .......... 25% 18,3M 2s
13800K .......... .......... .......... .......... .......... 25% 70,3M 2s
13850K .......... .......... .......... .......... .......... 25% 16,2M 2s
13900K .......... .......... .......... .......... .......... 25% 18,9M 2s
13950K .......... .......... .......... .......... .......... 25% 141M 2s
14000K .......... .......... .......... .......... .......... 26% 134M 2s
14050K .......... .......... .......... .......... .......... 26% 19,0M 2s
14100K .......... .......... .......... .......... .......... 26% 90,8M 2s
14150K .......... .......... .......... .......... .......... 26% 18,6M 2s
14200K .......... .......... .......... .......... .......... 26% 83,5M 2s
14250K .......... .......... .......... .......... .......... 26% 22,4M 2s
14300K .......... .......... .......... .......... .......... 26% 48,6M 2s
14350K .......... .......... .......... .......... .......... 26% 23,4M 2s
14400K .......... .......... .......... .......... .......... 26% 68,8M 2s
14450K .......... .......... .......... .......... .......... 26% 15,3M 2s
14500K .......... .......... .......... .......... .......... 26% 167M 2s
14550K .......... .......... .......... .......... .......... 27% 15,9M 2s
14600K .......... .......... .......... .......... .......... 27% 168M 2s
14650K .......... .......... .......... .......... .......... 27% 18,0M 2s
14700K .......... .......... .......... .......... .......... 27% 160M 2s
14750K .......... .......... .......... .......... .......... 27% 15,3M 2s
14800K .......... .......... .......... .......... .......... 27% 66,4M 2s
14850K .......... .......... .......... .......... .......... 27% 24,8M 2s
14900K .......... .......... .......... .......... .......... 27% 24,3M 2s
14950K .......... .......... .......... .......... .......... 27% 115M 2s
15000K .......... .......... .......... .......... .......... 27% 19,7M 2s
15050K .......... .......... .......... .......... .......... 28% 72,0M 2s
15100K .......... .......... .......... .......... .......... 28% 13,8M 2s
15150K .......... .......... .......... .......... .......... 28% 110M 2s
15200K .......... .......... .......... .......... .......... 28% 38,9M 2s
15250K .......... .......... .......... .......... .......... 28% 54,0M 2s
15300K .......... .......... .......... .......... .......... 28% 21,5M 2s
15350K .......... .......... .......... .......... .......... 28% 63,9M 2s
15400K .......... .......... .......... .......... .......... 28% 19,8M 2s
15450K .......... .......... .......... .......... .......... 28% 77,4M 2s
15500K .......... .......... .......... .......... .......... 28% 15,9M 2s
15550K .......... .......... .......... .......... .......... 28% 107M 2s
15600K .......... .......... .......... .......... .......... 29% 11,6M 2s
15650K .......... .......... .......... .......... .......... 29% 75,1M 2s
15700K .......... .......... .......... .......... .......... 29% 163M 2s
15750K .......... .......... .......... .......... .......... 29% 16,1M 2s
15800K .......... .......... .......... .......... .......... 29% 101M 2s
15850K .......... .......... .......... .......... .......... 29% 16,7M 2s
15900K .......... .......... .......... .......... .......... 29% 84,8M 2s
15950K .......... .......... .......... .......... .......... 29% 17,9M 2s
16000K .......... .......... .......... .......... .......... 29% 84,5M 2s
16050K .......... .......... .......... .......... .......... 29% 23,1M 2s
16100K .......... .......... .......... .......... .......... 29% 79,0M 2s
16150K .......... .......... .......... .......... .......... 30% 19,3M 2s
16200K .......... .......... .......... .......... .......... 30% 60,4M 2s
16250K .......... .......... .......... .......... .......... 30% 18,9M 2s
16300K .......... .......... .......... .......... .......... 30% 99,9M 2s
16350K .......... .......... .......... .......... .......... 30% 11,8M 2s
16400K .......... .......... .......... .......... .......... 30% 85,4M 2s
16450K .......... .......... .......... .......... .......... 30% 63,2M 2s
16500K .......... .......... .......... .......... .......... 30% 19,3M 2s
16550K .......... .......... .......... .......... .......... 30% 81,8M 2s
16600K .......... .......... .......... .......... .......... 30% 12,3M 2s
16650K .......... .......... .......... .......... .......... 30% 95,4M 2s
16700K .......... .......... .......... .......... .......... 31% 24,4M 2s
16750K .......... .......... .......... .......... .......... 31% 78,4M 2s
16800K .......... .......... .......... .......... .......... 31% 20,7M 1s
16850K .......... .......... .......... .......... .......... 31% 47,2M 1s
16900K .......... .......... .......... .......... .......... 31% 172M 1s
16950K .......... .......... .......... .......... .......... 31% 19,1M 1s
17000K .......... .......... .......... .......... .......... 31% 21,4M 1s
17050K .......... .......... .......... .......... .......... 31% 44,0M 1s
17100K .......... .......... .......... .......... .......... 31% 25,4M 1s
17150K .......... .......... .......... .......... .......... 31% 74,9M 1s
17200K .......... .......... .......... .......... .......... 31% 25,1M 1s
17250K .......... .......... .......... .......... .......... 32% 86,4M 1s
17300K .......... .......... .......... .......... .......... 32% 18,2M 1s
17350K .......... .......... .......... .......... .......... 32% 57,9M 1s
17400K .......... .......... .......... .......... .......... 32% 21,1M 1s
17450K .......... .......... .......... .......... .......... 32% 101M 1s
17500K .......... .......... .......... .......... .......... 32% 16,0M 1s
17550K .......... .......... .......... .......... .......... 32% 22,5M 1s
17600K .......... .......... .......... .......... .......... 32% 54,6M 1s
17650K .......... .......... .......... .......... .......... 32% 18,2M 1s
17700K .......... .......... .......... .......... .......... 32% 95,4M 1s
17750K .......... .......... .......... .......... .......... 33% 22,4M 1s
17800K .......... .......... .......... .......... .......... 33% 60,8M 1s
17850K .......... .......... .......... .......... .......... 33% 21,5M 1s
17900K .......... .......... .......... .......... .......... 33% 82,1M 1s
17950K .......... .......... .......... .......... .......... 33% 13,0M 1s
18000K .......... .......... .......... .......... .......... 33% 109M 1s
18050K .......... .......... .......... .......... .......... 33% 20,6M 1s
18100K .......... .......... .......... .......... .......... 33% 73,2M 1s
18150K .......... .......... .......... .......... .......... 33% 24,2M 1s
18200K .......... .......... .......... .......... .......... 33% 120M 1s
18250K .......... .......... .......... .......... .......... 33% 16,9M 1s
18300K .......... .......... .......... .......... .......... 34% 15,3M 1s
18350K .......... .......... .......... .......... .......... 34% 116M 1s
18400K .......... .......... .......... .......... .......... 34% 18,3M 1s
18450K .......... .......... .......... .......... .......... 34% 51,3M 1s
18500K .......... .......... .......... .......... .......... 34% 23,1M 1s
18550K .......... .......... .......... .......... .......... 34% 125M 1s
18600K .......... .......... .......... .......... .......... 34% 17,2M 1s
18650K .......... .......... .......... .......... .......... 34% 69,0M 1s
18700K .......... .......... .......... .......... .......... 34% 20,0M 1s
18750K .......... .......... .......... .......... .......... 34% 72,9M 1s
18800K .......... .......... .......... .......... .......... 34% 22,3M 1s
18850K .......... .......... .......... .......... .......... 35% 50,0M 1s
18900K .......... .......... .......... .......... .......... 35% 19,9M 1s
18950K .......... .......... .......... .......... .......... 35% 109M 1s
19000K .......... .......... .......... .......... .......... 35% 21,1M 1s
19050K .......... .......... .......... .......... .......... 35% 45,4M 1s
19100K .......... .......... .......... .......... .......... 35% 19,2M 1s
19150K .......... .......... .......... .......... .......... 35% 66,7M 1s
19200K .......... .......... .......... .......... .......... 35% 26,6M 1s
19250K .......... .......... .......... .......... .......... 35% 72,6M 1s
19300K .......... .......... .......... .......... .......... 35% 20,8M 1s
19350K .......... .......... .......... .......... .......... 35% 49,4M 1s
19400K .......... .......... .......... .......... .......... 36% 17,1M 1s
19450K .......... .......... .......... .......... .......... 36% 37,7M 1s
19500K .......... .......... .......... .......... .......... 36% 13,4M 1s
19550K .......... .......... .......... .......... .......... 36% 151M 1s
19600K .......... .......... .......... .......... .......... 36% 43,3M 1s
19650K .......... .......... .......... .......... .......... 36% 143M 1s
19700K .......... .......... .......... .......... .......... 36% 17,6M 1s
19750K .......... .......... .......... .......... .......... 36% 55,4M 1s
19800K .......... .......... .......... .......... .......... 36% 20,7M 1s
19850K .......... .......... .......... .......... .......... 36% 58,8M 1s
19900K .......... .......... .......... .......... .......... 37% 19,4M 1s
19950K .......... .......... .......... .......... .......... 37% 86,9M 1s
20000K .......... .......... .......... .......... .......... 37% 28,1M 1s
20050K .......... .......... .......... .......... .......... 37% 13,7M 1s
20100K .......... .......... .......... .......... .......... 37% 56,4M 1s
20150K .......... .......... .......... .......... .......... 37% 17,3M 1s
20200K .......... .......... .......... .......... .......... 37% 130M 1s
20250K .......... .......... .......... .......... .......... 37% 32,8M 1s
20300K .......... .......... .......... .......... .......... 37% 51,7M 1s
20350K .......... .......... .......... .......... .......... 37% 21,0M 1s
20400K .......... .......... .......... .......... .......... 37% 85,1M 1s
20450K .......... .......... .......... .......... .......... 38% 19,2M 1s
20500K .......... .......... .......... .......... .......... 38% 97,3M 1s
20550K .......... .......... .......... .......... .......... 38% 15,5M 1s
20600K .......... .......... .......... .......... .......... 38% 59,0M 1s
20650K .......... .......... .......... .......... .......... 38% 26,7M 1s
20700K .......... .......... .......... .......... .......... 38% 52,8M 1s
20750K .......... .......... .......... .......... .......... 38% 17,9M 1s
20800K .......... .......... .......... .......... .......... 38% 15,5M 1s
20850K .......... .......... .......... .......... .......... 38% 108M 1s
20900K .......... .......... .......... .......... .......... 38% 16,3M 1s
20950K .......... .......... .......... .......... .......... 38% 67,5M 1s
21000K .......... .......... .......... .......... .......... 39% 50,0M 1s
21050K .......... .......... .......... .......... .......... 39% 49,2M 1s
21100K .......... .......... .......... .......... .......... 39% 12,9M 1s
21150K .......... .......... .......... .......... .......... 39% 64,2M 1s
21200K .......... .......... .......... .......... .......... 39% 50,2M 1s
21250K .......... .......... .......... .......... .......... 39% 85,5M 1s
21300K .......... .......... .......... .......... .......... 39% 18,0M 1s
21350K .......... .......... .......... .......... .......... 39% 27,5M 1s
21400K .......... .......... .......... .......... .......... 39% 29,2M 1s
21450K .......... .......... .......... .......... .......... 39% 144M 1s
21500K .......... .......... .......... .......... .......... 39% 16,4M 1s
21550K .......... .......... .......... .......... .......... 40% 21,8M 1s
21600K .......... .......... .......... .......... .......... 40% 68,2M 1s
21650K .......... .......... .......... .......... .......... 40% 86,3M 1s
21700K .......... .......... .......... .......... .......... 40% 22,9M 1s
21750K .......... .......... .......... .......... .......... 40% 47,5M 1s
21800K .......... .......... .......... .......... .......... 40% 18,7M 1s
21850K .......... .......... .......... .......... .......... 40% 64,8M 1s
21900K .......... .......... .......... .......... .......... 40% 21,8M 1s
21950K .......... .......... .......... .......... .......... 40% 16,8M 1s
22000K .......... .......... .......... .......... .......... 40% 85,2M 1s
22050K .......... .......... .......... .......... .......... 40% 20,3M 1s
22100K .......... .......... .......... .......... .......... 41% 126M 1s
22150K .......... .......... .......... .......... .......... 41% 17,0M 1s
22200K .......... .......... .......... .......... .......... 41% 95,4M 1s
22250K .......... .......... .......... .......... .......... 41% 25,8M 1s
22300K .......... .......... .......... .......... .......... 41% 100M 1s
22350K .......... .......... .......... .......... .......... 41% 15,5M 1s
22400K .......... .......... .......... .......... .......... 41% 146M 1s
22450K .......... .......... .......... .......... .......... 41% 28,3M 1s
22500K .......... .......... .......... .......... .......... 41% 45,5M 1s
22550K .......... .......... .......... .......... .......... 41% 21,5M 1s
22600K .......... .......... .......... .......... .......... 42% 74,3M 1s
22650K .......... .......... .......... .......... .......... 42% 10,0M 1s
22700K .......... .......... .......... .......... .......... 42% 62,5M 1s
22750K .......... .......... .......... .......... .......... 42% 68,2M 1s
22800K .......... .......... .......... .......... .......... 42% 18,1M 1s
22850K .......... .......... .......... .......... .......... 42% 93,0M 1s
22900K .......... .......... .......... .......... .......... 42% 25,5M 1s
22950K .......... .......... .......... .......... .......... 42% 93,2M 1s
23000K .......... .......... .......... .......... .......... 42% 21,4M 1s
23050K .......... .......... .......... .......... .......... 42% 61,7M 1s
23100K .......... .......... .......... .......... .......... 42% 12,4M 1s
23150K .......... .......... .......... .......... .......... 43% 101M 1s
23200K .......... .......... .......... .......... .......... 43% 43,2M 1s
23250K .......... .......... .......... .......... .......... 43% 49,3M 1s
23300K .......... .......... .......... .......... .......... 43% 17,3M 1s
23350K .......... .......... .......... .......... .......... 43% 145M 1s
23400K .......... .......... .......... .......... .......... 43% 24,3M 1s
23450K .......... .......... .......... .......... .......... 43% 50,2M 1s
23500K .......... .......... .......... .......... .......... 43% 15,9M 1s
23550K .......... .......... .......... .......... .......... 43% 19,4M 1s
23600K .......... .......... .......... .......... .......... 43% 57,4M 1s
23650K .......... .......... .......... .......... .......... 43% 17,7M 1s
23700K .......... .......... .......... .......... .......... 44% 148M 1s
23750K .......... .......... .......... .......... .......... 44% 19,6M 1s
23800K .......... .......... .......... .......... .......... 44% 59,4M 1s
23850K .......... .......... .......... .......... .......... 44% 15,7M 1s
23900K .......... .......... .......... .......... .......... 44% 146M 1s
23950K .......... .......... .......... .......... .......... 44% 29,2M 1s
24000K .......... .......... .......... .......... .......... 44% 50,4M 1s
24050K .......... .......... .......... .......... .......... 44% 21,3M 1s
24100K .......... .......... .......... .......... .......... 44% 88,1M 1s
24150K .......... .......... .......... .......... .......... 44% 18,4M 1s
24200K .......... .......... .......... .......... .......... 44% 97,3M 1s
24250K .......... .......... .......... .......... .......... 45% 11,2M 1s
24300K .......... .......... .......... .......... .......... 45% 28,8M 1s
24350K .......... .......... .......... .......... .......... 45% 85,2M 1s
24400K .......... .......... .......... .......... .......... 45% 162M 1s
24450K .......... .......... .......... .......... .......... 45% 22,5M 1s
24500K .......... .......... .......... .......... .......... 45% 79,9M 1s
24550K .......... .......... .......... .......... .......... 45% 12,2M 1s
24600K .......... .......... .......... .......... .......... 45% 123M 1s
24650K .......... .......... .......... .......... .......... 45% 25,0M 1s
24700K .......... .......... .......... .......... .......... 45% 146M 1s
24750K .......... .......... .......... .......... .......... 46% 19,8M 1s
24800K .......... .......... .......... .......... .......... 46% 40,2M 1s
24850K .......... .......... .......... .......... .......... 46% 19,5M 1s
24900K .......... .......... .......... .......... .......... 46% 124M 1s
24950K .......... .......... .......... .......... .......... 46% 21,9M 1s
25000K .......... .......... .......... .......... .......... 46% 131M 1s
25050K .......... .......... .......... .......... .......... 46% 23,3M 1s
25100K .......... .......... .......... .......... .......... 46% 14,0M 1s
25150K .......... .......... .......... .......... .......... 46% 135M 1s
25200K .......... .......... .......... .......... .......... 46% 20,1M 1s
25250K .......... .......... .......... .......... .......... 46% 62,2M 1s
25300K .......... .......... .......... .......... .......... 47% 22,6M 1s
25350K .......... .......... .......... .......... .......... 47% 77,6M 1s
25400K .......... .......... .......... .......... .......... 47% 18,4M 1s
25450K .......... .......... .......... .......... .......... 47% 9,80M 1s
25500K .......... .......... .......... .......... .......... 47% 121M 1s
25550K .......... .......... .......... .......... .......... 47% 109M 1s
25600K .......... .......... .......... .......... .......... 47% 71,4M 1s
25650K .......... .......... .......... .......... .......... 47% 47,5M 1s
25700K .......... .......... .......... .......... .......... 47% 18,4M 1s
25750K .......... .......... .......... .......... .......... 47% 46,7M 1s
25800K .......... .......... .......... .......... .......... 47% 16,3M 1s
25850K .......... .......... .......... .......... .......... 48% 110M 1s
25900K .......... .......... .......... .......... .......... 48% 19,3M 1s
25950K .......... .......... .......... .......... .......... 48% 113M 1s
26000K .......... .......... .......... .......... .......... 48% 25,9M 1s
26050K .......... .......... .......... .......... .......... 48% 64,3M 1s
26100K .......... .......... .......... .......... .......... 48% 16,2M 1s
26150K .......... .......... .......... .......... .......... 48% 65,1M 1s
26200K .......... .......... .......... .......... .......... 48% 14,7M 1s
26250K .......... .......... .......... .......... .......... 48% 129M 1s
26300K .......... .......... .......... .......... .......... 48% 26,2M 1s
26350K .......... .......... .......... .......... .......... 48% 55,3M 1s
26400K .......... .......... .......... .......... .......... 49% 19,5M 1s
26450K .......... .......... .......... .......... .......... 49% 66,1M 1s
26500K .......... .......... .......... .......... .......... 49% 17,2M 1s
26550K .......... .......... .......... .......... .......... 49% 112M 1s
26600K .......... .......... .......... .......... .......... 49% 16,4M 1s
26650K .......... .......... .......... .......... .......... 49% 235M 1s
26700K .......... .......... .......... .......... .......... 49% 13,6M 1s
26750K .......... .......... .......... .......... .......... 49% 160M 1s
26800K .......... .......... .......... .......... .......... 49% 22,7M 1s
26850K .......... .......... .......... .......... .......... 49% 110M 1s
26900K .......... .......... .......... .......... .......... 49% 22,7M 1s
26950K .......... .......... .......... .......... .......... 50% 108M 1s
27000K .......... .......... .......... .......... .......... 50% 19,6M 1s
27050K .......... .......... .......... .......... .......... 50% 128M 1s
27100K .......... .......... .......... .......... .......... 50% 17,6M 1s
27150K .......... .......... .......... .......... .......... 50% 44,7M 1s
27200K .......... .......... .......... .......... .......... 50% 17,6M 1s
27250K .......... .......... .......... .......... .......... 50% 30,6M 1s
27300K .......... .......... .......... .......... .......... 50% 20,9M 1s
27350K .......... .......... .......... .......... .......... 50% 21,1M 1s
27400K .......... .......... .......... .......... .......... 50% 129M 1s
27450K .......... .......... .......... .......... .......... 51% 143M 1s
27500K .......... .......... .......... .......... .......... 51% 23,0M 1s
27550K .......... .......... .......... .......... .......... 51% 80,3M 1s
27600K .......... .......... .......... .......... .......... 51% 15,6M 1s
27650K .......... .......... .......... .......... .......... 51% 91,6M 1s
27700K .......... .......... .......... .......... .......... 51% 17,1M 1s
27750K .......... .......... .......... .......... .......... 51% 105M 1s
27800K .......... .......... .......... .......... .......... 51% 16,0M 1s
27850K .......... .......... .......... .......... .......... 51% 265M 1s
27900K .......... .......... .......... .......... .......... 51% 19,7M 1s
27950K .......... .......... .......... .......... .......... 51% 92,1M 1s
28000K .......... .......... .......... .......... .......... 52% 16,3M 1s
28050K .......... .......... .......... .......... .......... 52% 18,3M 1s
28100K .......... .......... .......... .......... .......... 52% 167M 1s
28150K .......... .......... .......... .......... .......... 52% 20,8M 1s
28200K .......... .......... .......... .......... .......... 52% 66,3M 1s
28250K .......... .......... .......... .......... .......... 52% 20,8M 1s
28300K .......... .......... .......... .......... .......... 52% 103M 1s
28350K .......... .......... .......... .......... .......... 52% 16,3M 1s
28400K .......... .......... .......... .......... .......... 52% 54,6M 1s
28450K .......... .......... .......... .......... .......... 52% 36,1M 1s
28500K .......... .......... .......... .......... .......... 52% 44,8M 1s
28550K .......... .......... .......... .......... .......... 53% 14,7M 1s
28600K .......... .......... .......... .......... .......... 53% 114M 1s
28650K .......... .......... .......... .......... .......... 53% 15,7M 1s
28700K .......... .......... .......... .......... .......... 53% 102M 1s
28750K .......... .......... .......... .......... .......... 53% 27,3M 1s
28800K .......... .......... .......... .......... .......... 53% 56,7M 1s
28850K .......... .......... .......... .......... .......... 53% 15,2M 1s
28900K .......... .......... .......... .......... .......... 53% 81,1M 1s
28950K .......... .......... .......... .......... .......... 53% 19,9M 1s
29000K .......... .......... .......... .......... .......... 53% 182M 1s
29050K .......... .......... .......... .......... .......... 53% 29,0M 1s
29100K .......... .......... .......... .......... .......... 54% 17,0M 1s
29150K .......... .......... .......... .......... .......... 54% 90,9M 1s
29200K .......... .......... .......... .......... .......... 54% 21,1M 1s
29250K .......... .......... .......... .......... .......... 54% 52,8M 1s
29300K .......... .......... .......... .......... .......... 54% 17,2M 1s
29350K .......... .......... .......... .......... .......... 54% 72,2M 1s
29400K .......... .......... .......... .......... .......... 54% 29,3M 1s
29450K .......... .......... .......... .......... .......... 54% 83,2M 1s
29500K .......... .......... .......... .......... .......... 54% 23,9M 1s
29550K .......... .......... .......... .......... .......... 54% 53,5M 1s
29600K .......... .......... .......... .......... .......... 54% 14,4M 1s
29650K .......... .......... .......... .......... .......... 55% 242M 1s
29700K .......... .......... .......... .......... .......... 55% 22,0M 1s
29750K .......... .......... .......... .......... .......... 55% 106M 1s
29800K .......... .......... .......... .......... .......... 55% 16,3M 1s
29850K .......... .......... .......... .......... .......... 55% 68,3M 1s
29900K .......... .......... .......... .......... .......... 55% 16,2M 1s
29950K .......... .......... .......... .......... .......... 55% 17,0M 1s
30000K .......... .......... .......... .......... .......... 55% 111M 1s
30050K .......... .......... .......... .......... .......... 55% 19,3M 1s
30100K .......... .......... .......... .......... .......... 55% 57,6M 1s
30150K .......... .......... .......... .......... .......... 56% 24,2M 1s
30200K .......... .......... .......... .......... .......... 56% 254M 1s
30250K .......... .......... .......... .......... .......... 56% 22,7M 1s
30300K .......... .......... .......... .......... .......... 56% 55,9M 1s
30350K .......... .......... .......... .......... .......... 56% 15,1M 1s
30400K .......... .......... .......... .......... .......... 56% 93,2M 1s
30450K .......... .......... .......... .......... .......... 56% 13,6M 1s
30500K .......... .......... .......... .......... .......... 56% 59,6M 1s
30550K .......... .......... .......... .......... .......... 56% 32,4M 1s
30600K .......... .......... .......... .......... .......... 56% 82,6M 1s
30650K .......... .......... .......... .......... .......... 56% 17,1M 1s
30700K .......... .......... .......... .......... .......... 57% 74,8M 1s
30750K .......... .......... .......... .......... .......... 57% 28,9M 1s
30800K .......... .......... .......... .......... .......... 57% 108M 1s
30850K .......... .......... .......... .......... .......... 57% 16,3M 1s
30900K .......... .......... .......... .......... .......... 57% 127M 1s
30950K .......... .......... .......... .......... .......... 57% 21,0M 1s
31000K .......... .......... .......... .......... .......... 57% 13,1M 1s
31050K .......... .......... .......... .......... .......... 57% 155M 1s
31100K .......... .......... .......... .......... .......... 57% 26,2M 1s
31150K .......... .......... .......... .......... .......... 57% 131M 1s
31200K .......... .......... .......... .......... .......... 57% 16,1M 1s
31250K .......... .......... .......... .......... .......... 58% 69,2M 1s
31300K .......... .......... .......... .......... .......... 58% 20,9M 1s
31350K .......... .......... .......... .......... .......... 58% 29,0M 1s
31400K .......... .......... .......... .......... .......... 58% 27,1M 1s
31450K .......... .......... .......... .......... .......... 58% 185M 1s
31500K .......... .......... .......... .......... .......... 58% 14,9M 1s
31550K .......... .......... .......... .......... .......... 58% 170M 1s
31600K .......... .......... .......... .......... .......... 58% 23,9M 1s
31650K .......... .......... .......... .......... .......... 58% 94,6M 1s
31700K .......... .......... .......... .......... .......... 58% 17,9M 1s
31750K .......... .......... .......... .......... .......... 58% 98,8M 1s
31800K .......... .......... .......... .......... .......... 59% 18,2M 1s
31850K .......... .......... .......... .......... .......... 59% 23,1M 1s
31900K .......... .......... .......... .......... .......... 59% 52,7M 1s
31950K .......... .......... .......... .......... .......... 59% 14,8M 1s
32000K .......... .......... .......... .......... .......... 59% 158M 1s
32050K .......... .......... .......... .......... .......... 59% 25,1M 1s
32100K .......... .......... .......... .......... .......... 59% 70,6M 1s
32150K .......... .......... .......... .......... .......... 59% 23,3M 1s
32200K .......... .......... .......... .......... .......... 59% 49,8M 1s
32250K .......... .......... .......... .......... .......... 59% 19,2M 1s
32300K .......... .......... .......... .......... .......... 60% 75,4M 1s
32350K .......... .......... .......... .......... .......... 60% 14,5M 1s
32400K .......... .......... .......... .......... .......... 60% 185M 1s
32450K .......... .......... .......... .......... .......... 60% 24,8M 1s
32500K .......... .......... .......... .......... .......... 60% 150M 1s
32550K .......... .......... .......... .......... .......... 60% 15,6M 1s
32600K .......... .......... .......... .......... .......... 60% 168M 1s
32650K .......... .......... .......... .......... .......... 60% 17,0M 1s
32700K .......... .......... .......... .......... .......... 60% 90,1M 1s
32750K .......... .......... .......... .......... .......... 60% 7,01M 1s
32800K .......... .......... .......... .......... .......... 60% 30,7M 1s
32850K .......... .......... .......... .......... .......... 61% 208M 1s
32900K .......... .......... .......... .......... .......... 61% 135M 1s
32950K .......... .......... .......... .......... .......... 61% 191M 1s
33000K .......... .......... .......... .......... .......... 61% 86,7M 1s
33050K .......... .......... .......... .......... .......... 61% 16,6M 1s
33100K .......... .......... .......... .......... .......... 61% 135M 1s
33150K .......... .......... .......... .......... .......... 61% 16,7M 1s
33200K .......... .......... .......... .......... .......... 61% 19,8M 1s
33250K .......... .......... .......... .......... .......... 61% 92,8M 1s
33300K .......... .......... .......... .......... .......... 61% 19,6M 1s
33350K .......... .......... .......... .......... .......... 61% 76,5M 1s
33400K .......... .......... .......... .......... .......... 62% 31,8M 1s
33450K .......... .......... .......... .......... .......... 62% 53,1M 1s
33500K .......... .......... .......... .......... .......... 62% 18,5M 1s
33550K .......... .......... .......... .......... .......... 62% 67,1M 1s
33600K .......... .......... .......... .......... .......... 62% 18,4M 1s
33650K .......... .......... .......... .......... .......... 62% 73,0M 1s
33700K .......... .......... .......... .......... .......... 62% 25,7M 1s
33750K .......... .......... .......... .......... .......... 62% 53,6M 1s
33800K .......... .......... .......... .......... .......... 62% 16,8M 1s
33850K .......... .......... .......... .......... .......... 62% 20,7M 1s
33900K .......... .......... .......... .......... .......... 62% 132M 1s
33950K .......... .......... .......... .......... .......... 63% 13,8M 1s
34000K .......... .......... .......... .......... .......... 63% 152M 1s
34050K .......... .......... .......... .......... .......... 63% 29,3M 1s
34100K .......... .......... .......... .......... .......... 63% 64,8M 1s
34150K .......... .......... .......... .......... .......... 63% 21,5M 1s
34200K .......... .......... .......... .......... .......... 63% 53,9M 1s
34250K .......... .......... .......... .......... .......... 63% 24,4M 1s
34300K .......... .......... .......... .......... .......... 63% 43,2M 1s
34350K .......... .......... .......... .......... .......... 63% 24,5M 1s
34400K .......... .......... .......... .......... .......... 63% 105M 1s
34450K .......... .......... .......... .......... .......... 63% 14,4M 1s
34500K .......... .......... .......... .......... .......... 64% 20,0M 1s
34550K .......... .......... .......... .......... .......... 64% 115M 1s
34600K .......... .......... .......... .......... .......... 64% 22,3M 1s
34650K .......... .......... .......... .......... .......... 64% 103M 1s
34700K .......... .......... .......... .......... .......... 64% 17,4M 1s
34750K .......... .......... .......... .......... .......... 64% 59,4M 1s
34800K .......... .......... .......... .......... .......... 64% 20,2M 1s
34850K .......... .......... .......... .......... .......... 64% 80,3M 1s
34900K .......... .......... .......... .......... .......... 64% 19,6M 1s
34950K .......... .......... .......... .......... .......... 64% 66,3M 1s
35000K .......... .......... .......... .......... .......... 65% 15,3M 1s
35050K .......... .......... .......... .......... .......... 65% 178M 1s
35100K .......... .......... .......... .......... .......... 65% 25,0M 1s
35150K .......... .......... .......... .......... .......... 65% 129M 1s
35200K .......... .......... .......... .......... .......... 65% 12,6M 1s
35250K .......... .......... .......... .......... .......... 65% 25,8M 1s
35300K .......... .......... .......... .......... .......... 65% 75,2M 1s
35350K .......... .......... .......... .......... .......... 65% 171M 1s
35400K .......... .......... .......... .......... .......... 65% 13,8M 1s
35450K .......... .......... .......... .......... .......... 65% 24,9M 1s
35500K .......... .......... .......... .......... .......... 65% 96,5M 1s
35550K .......... .......... .......... .......... .......... 66% 20,0M 1s
35600K .......... .......... .......... .......... .......... 66% 88,9M 1s
35650K .......... .......... .......... .......... .......... 66% 16,8M 1s
35700K .......... .......... .......... .......... .......... 66% 22,7M 1s
35750K .......... .......... .......... .......... .......... 66% 243M 1s
35800K .......... .......... .......... .......... .......... 66% 37,2M 1s
35850K .......... .......... .......... .......... .......... 66% 24,2M 1s
35900K .......... .......... .......... .......... .......... 66% 51,5M 1s
35950K .......... .......... .......... .......... .......... 66% 16,7M 1s
36000K .......... .......... .......... .......... .......... 66% 183M 1s
36050K .......... .......... .......... .......... .......... 66% 21,4M 1s
36100K .......... .......... .......... .......... .......... 67% 56,3M 1s
36150K .......... .......... .......... .......... .......... 67% 14,1M 1s
36200K .......... .......... .......... .......... .......... 67% 107M 1s
36250K .......... .......... .......... .......... .......... 67% 30,7M 1s
36300K .......... .......... .......... .......... .......... 67% 51,1M 1s
36350K .......... .......... .......... .......... .......... 67% 38,3M 1s
36400K .......... .......... .......... .......... .......... 67% 14,8M 1s
36450K .......... .......... .......... .......... .......... 67% 75,6M 1s
36500K .......... .......... .......... .......... .......... 67% 13,6M 1s
36550K .......... .......... .......... .......... .......... 67% 156M 1s
36600K .......... .......... .......... .......... .......... 67% 17,8M 1s
36650K .......... .......... .......... .......... .......... 68% 148M 1s
36700K .......... .......... .......... .......... .......... 68% 23,0M 1s
36750K .......... .......... .......... .......... .......... 68% 91,4M 1s
36800K .......... .......... .......... .......... .......... 68% 9,21M 1s
36850K .......... .......... .......... .......... .......... 68% 48,7M 1s
36900K .......... .......... .......... .......... .......... 68% 93,5M 1s
36950K .......... .......... .......... .......... .......... 68% 111M 1s
37000K .......... .......... .......... .......... .......... 68% 39,8M 1s
37050K .......... .......... .......... .......... .......... 68% 51,8M 1s
37100K .......... .......... .......... .......... .......... 68% 17,0M 1s
37150K .......... .......... .......... .......... .......... 69% 26,7M 1s
37200K .......... .......... .......... .......... .......... 69% 135M 1s
37250K .......... .......... .......... .......... .......... 69% 21,6M 1s
37300K .......... .......... .......... .......... .......... 69% 38,3M 1s
37350K .......... .......... .......... .......... .......... 69% 15,5M 1s
37400K .......... .......... .......... .......... .......... 69% 72,6M 1s
37450K .......... .......... .......... .......... .......... 69% 212M 1s
37500K .......... .......... .......... .......... .......... 69% 18,3M 1s
37550K .......... .......... .......... .......... .......... 69% 19,1M 1s
37600K .......... .......... .......... .......... .......... 69% 55,5M 1s
37650K .......... .......... .......... .......... .......... 69% 20,1M 1s
37700K .......... .......... .......... .......... .......... 70% 60,5M 1s
37750K .......... .......... .......... .......... .......... 70% 22,2M 1s
37800K .......... .......... .......... .......... .......... 70% 36,2M 1s
37850K .......... .......... .......... .......... .......... 70% 20,6M 1s
37900K .......... .......... .......... .......... .......... 70% 125M 1s
37950K .......... .......... .......... .......... .......... 70% 29,5M 1s
38000K .......... .......... .......... .......... .......... 70% 80,7M 1s
38050K .......... .......... .......... .......... .......... 70% 17,1M 1s
38100K .......... .......... .......... .......... .......... 70% 58,7M 1s
38150K .......... .......... .......... .......... .......... 70% 27,5M 1s
38200K .......... .......... .......... .......... .......... 70% 43,1M 1s
38250K .......... .......... .......... .......... .......... 71% 13,0M 1s
38300K .......... .......... .......... .......... .......... 71% 25,0M 1s
38350K .......... .......... .......... .......... .......... 71% 25,7M 1s
38400K .......... .......... .......... .......... .......... 71% 58,8M 1s
38450K .......... .......... .......... .......... .......... 71% 136M 1s
38500K .......... .......... .......... .......... .......... 71% 18,6M 1s
38550K .......... .......... .......... .......... .......... 71% 52,3M 1s
38600K .......... .......... .......... .......... .......... 71% 14,9M 1s
38650K .......... .......... .......... .......... .......... 71% 147M 1s
38700K .......... .......... .......... .......... .......... 71% 18,8M 1s
38750K .......... .......... .......... .......... .......... 71% 61,9M 1s
38800K .......... .......... .......... .......... .......... 72% 21,1M 1s
38850K .......... .......... .......... .......... .......... 72% 59,4M 1s
38900K .......... .......... .......... .......... .......... 72% 20,1M 1s
38950K .......... .......... .......... .......... .......... 72% 61,4M 1s
39000K .......... .......... .......... .......... .......... 72% 15,6M 1s
39050K .......... .......... .......... .......... .......... 72% 135M 1s
39100K .......... .......... .......... .......... .......... 72% 29,2M 1s
39150K .......... .......... .......... .......... .......... 72% 63,7M 1s
39200K .......... .......... .......... .......... .......... 72% 16,3M 1s
39250K .......... .......... .......... .......... .......... 72% 126M 1s
39300K .......... .......... .......... .......... .......... 72% 24,4M 1s
39350K .......... .......... .......... .......... .......... 73% 37,5M 1s
39400K .......... .......... .......... .......... .......... 73% 17,5M 1s
39450K .......... .......... .......... .......... .......... 73% 198M 1s
39500K .......... .......... .......... .......... .......... 73% 20,4M 1s
39550K .......... .......... .......... .......... .......... 73% 148M 1s
39600K .......... .......... .......... .......... .......... 73% 16,9M 1s
39650K .......... .......... .......... .......... .......... 73% 76,8M 1s
39700K .......... .......... .......... .......... .......... 73% 17,8M 1s
39750K .......... .......... .......... .......... .......... 73% 164M 1s
39800K .......... .......... .......... .......... .......... 73% 23,1M 1s
39850K .......... .......... .......... .......... .......... 74% 92,3M 1s
39900K .......... .......... .......... .......... .......... 74% 12,9M 1s
39950K .......... .......... .......... .......... .......... 74% 22,9M 0s
40000K .......... .......... .......... .......... .......... 74% 220M 0s
40050K .......... .......... .......... .......... .......... 74% 16,1M 0s
40100K .......... .......... .......... .......... .......... 74% 76,5M 0s
40150K .......... .......... .......... .......... .......... 74% 27,7M 0s
40200K .......... .......... .......... .......... .......... 74% 55,9M 0s
40250K .......... .......... .......... .......... .......... 74% 17,6M 0s
40300K .......... .......... .......... .......... .......... 74% 225M 0s
40350K .......... .......... .......... .......... .......... 74% 24,7M 0s
40400K .......... .......... .......... .......... .......... 75% 61,7M 0s
40450K .......... .......... .......... .......... .......... 75% 21,9M 0s
40500K .......... .......... .......... .......... .......... 75% 49,2M 0s
40550K .......... .......... .......... .......... .......... 75% 20,0M 0s
40600K .......... .......... .......... .......... .......... 75% 75,8M 0s
40650K .......... .......... .......... .......... .......... 75% 17,0M 0s
40700K .......... .......... .......... .......... .......... 75% 187M 0s
40750K .......... .......... .......... .......... .......... 75% 16,3M 0s
40800K .......... .......... .......... .......... .......... 75% 25,0M 0s
40850K .......... .......... .......... .......... .......... 75% 48,8M 0s
40900K .......... .......... .......... .......... .......... 75% 22,2M 0s
40950K .......... .......... .......... .......... .......... 76% 56,1M 0s
41000K .......... .......... .......... .......... .......... 76% 20,0M 0s
41050K .......... .......... .......... .......... .......... 76% 15,9M 0s
41100K .......... .......... .......... .......... .......... 76% 81,5M 0s
41150K .......... .......... .......... .......... .......... 76% 35,8M 0s
41200K .......... .......... .......... .......... .......... 76% 20,9M 0s
41250K .......... .......... .......... .......... .......... 76% 167M 0s
41300K .......... .......... .......... .......... .......... 76% 18,7M 0s
41350K .......... .......... .......... .......... .......... 76% 155M 0s
41400K .......... .......... .......... .......... .......... 76% 26,0M 0s
41450K .......... .......... .......... .......... .......... 76% 81,5M 0s
41500K .......... .......... .......... .......... .......... 77% 13,4M 0s
41550K .......... .......... .......... .......... .......... 77% 20,1M 0s
41600K .......... .......... .......... .......... .......... 77% 114M 0s
41650K .......... .......... .......... .......... .......... 77% 14,7M 0s
41700K .......... .......... .......... .......... .......... 77% 146M 0s
41750K .......... .......... .......... .......... .......... 77% 32,8M 0s
41800K .......... .......... .......... .......... .......... 77% 98,6M 0s
41850K .......... .......... .......... .......... .......... 77% 15,9M 0s
41900K .......... .......... .......... .......... .......... 77% 144M 0s
41950K .......... .......... .......... .......... .......... 77% 20,5M 0s
42000K .......... .......... .......... .......... .......... 78% 70,1M 0s
42050K .......... .......... .......... .......... .......... 78% 15,9M 0s
42100K .......... .......... .......... .......... .......... 78% 227M 0s
42150K .......... .......... .......... .......... .......... 78% 28,2M 0s
42200K .......... .......... .......... .......... .......... 78% 62,4M 0s
42250K .......... .......... .......... .......... .......... 78% 19,4M 0s
42300K .......... .......... .......... .......... .......... 78% 93,9M 0s
42350K .......... .......... .......... .......... .......... 78% 13,6M 0s
42400K .......... .......... .......... .......... .......... 78% 103M 0s
42450K .......... .......... .......... .......... .......... 78% 21,0M 0s
42500K .......... .......... .......... .......... .......... 78% 43,2M 0s
42550K .......... .......... .......... .......... .......... 79% 17,7M 0s
42600K .......... .......... .......... .......... .......... 79% 102M 0s
42650K .......... .......... .......... .......... .......... 79% 22,3M 0s
42700K .......... .......... .......... .......... .......... 79% 116M 0s
42750K .......... .......... .......... .......... .......... 79% 18,3M 0s
42800K .......... .......... .......... .......... .......... 79% 15,8M 0s
42850K .......... .......... .......... .......... .......... 79% 103M 0s
42900K .......... .......... .......... .......... .......... 79% 16,4M 0s
42950K .......... .......... .......... .......... .......... 79% 93,7M 0s
43000K .......... .......... .......... .......... .......... 79% 15,4M 0s
43050K .......... .......... .......... .......... .......... 79% 263M 0s
43100K .......... .......... .......... .......... .......... 80% 26,9M 0s
43150K .......... .......... .......... .......... .......... 80% 55,4M 0s
43200K .......... .......... .......... .......... .......... 80% 20,0M 0s
43250K .......... .......... .......... .......... .......... 80% 98,8M 0s
43300K .......... .......... .......... .......... .......... 80% 14,8M 0s
43350K .......... .......... .......... .......... .......... 80% 208M 0s
43400K .......... .......... .......... .......... .......... 80% 21,0M 0s
43450K .......... .......... .......... .......... .......... 80% 19,0M 0s
43500K .......... .......... .......... .......... .......... 80% 103M 0s
43550K .......... .......... .......... .......... .......... 80% 23,5M 0s
43600K .......... .......... .......... .......... .......... 80% 108M 0s
43650K .......... .......... .......... .......... .......... 81% 14,8M 0s
43700K .......... .......... .......... .......... .......... 81% 93,0M 0s
43750K .......... .......... .......... .......... .......... 81% 29,8M 0s
43800K .......... .......... .......... .......... .......... 81% 63,2M 0s
43850K .......... .......... .......... .......... .......... 81% 17,4M 0s
43900K .......... .......... .......... .......... .......... 81% 160M 0s
43950K .......... .......... .......... .......... .......... 81% 23,4M 0s
44000K .......... .......... .......... .......... .......... 81% 38,0M 0s
44050K .......... .......... .......... .......... .......... 81% 25,3M 0s
44100K .......... .......... .......... .......... .......... 81% 13,4M 0s
44150K .......... .......... .......... .......... .......... 81% 57,2M 0s
44200K .......... .......... .......... .......... .......... 82% 26,6M 0s
44250K .......... .......... .......... .......... .......... 82% 26,0M 0s
44300K .......... .......... .......... .......... .......... 82% 36,7M 0s
44350K .......... .......... .......... .......... .......... 82% 37,9M 0s
44400K .......... .......... .......... .......... .......... 82% 28,9M 0s
44450K .......... .......... .......... .......... .......... 82% 74,3M 0s
44500K .......... .......... .......... .......... .......... 82% 18,1M 0s
44550K .......... .......... .......... .......... .......... 82% 151M 0s
44600K .......... .......... .......... .......... .......... 82% 13,0M 0s
44650K .......... .......... .......... .......... .......... 82% 47,4M 0s
44700K .......... .......... .......... .......... .......... 83% 21,9M 0s
44750K .......... .......... .......... .......... .......... 83% 221M 0s
44800K .......... .......... .......... .......... .......... 83% 37,9M 0s
44850K .......... .......... .......... .......... .......... 83% 99,6M 0s
44900K .......... .......... .......... .......... .......... 83% 20,3M 0s
44950K .......... .......... .......... .......... .......... 83% 63,9M 0s
45000K .......... .......... .......... .......... .......... 83% 19,5M 0s
45050K .......... .......... .......... .......... .......... 83% 41,4M 0s
45100K .......... .......... .......... .......... .......... 83% 19,6M 0s
45150K .......... .......... .......... .......... .......... 83% 17,8M 0s
45200K .......... .......... .......... .......... .......... 83% 198M 0s
45250K .......... .......... .......... .......... .......... 84% 17,7M 0s
45300K .......... .......... .......... .......... .......... 84% 88,9M 0s
45350K .......... .......... .......... .......... .......... 84% 22,8M 0s
45400K .......... .......... .......... .......... .......... 84% 60,4M 0s
45450K .......... .......... .......... .......... .......... 84% 13,8M 0s
45500K .......... .......... .......... .......... .......... 84% 250M 0s
45550K .......... .......... .......... .......... .......... 84% 20,1M 0s
45600K .......... .......... .......... .......... .......... 84% 18,7M 0s
45650K .......... .......... .......... .......... .......... 84% 122M 0s
45700K .......... .......... .......... .......... .......... 84% 21,5M 0s
45750K .......... .......... .......... .......... .......... 84% 61,3M 0s
45800K .......... .......... .......... .......... .......... 85% 22,3M 0s
45850K .......... .......... .......... .......... .......... 85% 55,5M 0s
45900K .......... .......... .......... .......... .......... 85% 17,8M 0s
45950K .......... .......... .......... .......... .......... 85% 30,5M 0s
46000K .......... .......... .......... .......... .......... 85% 24,0M 0s
46050K .......... .......... .......... .......... .......... 85% 73,4M 0s
46100K .......... .......... .......... .......... .......... 85% 21,0M 0s
46150K .......... .......... .......... .......... .......... 85% 57,5M 0s
46200K .......... .......... .......... .......... .......... 85% 14,6M 0s
46250K .......... .......... .......... .......... .......... 85% 154M 0s
46300K .......... .......... .......... .......... .......... 85% 25,7M 0s
46350K .......... .......... .......... .......... .......... 86% 78,1M 0s
46400K .......... .......... .......... .......... .......... 86% 22,1M 0s
46450K .......... .......... .......... .......... .......... 86% 72,0M 0s
46500K .......... .......... .......... .......... .......... 86% 18,2M 0s
46550K .......... .......... .......... .......... .......... 86% 138M 0s
46600K .......... .......... .......... .......... .......... 86% 26,0M 0s
46650K .......... .......... .......... .......... .......... 86% 57,0M 0s
46700K .......... .......... .......... .......... .......... 86% 16,6M 0s
46750K .......... .......... .......... .......... .......... 86% 64,2M 0s
46800K .......... .......... .......... .......... .......... 86% 21,5M 0s
46850K .......... .......... .......... .......... .......... 86% 14,1M 0s
46900K .......... .......... .......... .......... .......... 87% 82,8M 0s
46950K .......... .......... .......... .......... .......... 87% 41,9M 0s
47000K .......... .......... .......... .......... .......... 87% 75,5M 0s
47050K .......... .......... .......... .......... .......... 87% 16,9M 0s
47100K .......... .......... .......... .......... .......... 87% 61,7M 0s
47150K .......... .......... .......... .......... .......... 87% 26,2M 0s
47200K .......... .......... .......... .......... .......... 87% 39,4M 0s
47250K .......... .......... .......... .......... .......... 87% 25,9M 0s
47300K .......... .......... .......... .......... .......... 87% 95,6M 0s
47350K .......... .......... .......... .......... .......... 87% 19,4M 0s
47400K .......... .......... .......... .......... .......... 88% 80,3M 0s
47450K .......... .......... .......... .......... .......... 88% 16,3M 0s
47500K .......... .......... .......... .......... .......... 88% 59,4M 0s
47550K .......... .......... .......... .......... .......... 88% 15,0M 0s
47600K .......... .......... .......... .......... .......... 88% 201M 0s
47650K .......... .......... .......... .......... .......... 88% 17,0M 0s
47700K .......... .......... .......... .......... .......... 88% 242M 0s
47750K .......... .......... .......... .......... .......... 88% 20,6M 0s
47800K .......... .......... .......... .......... .......... 88% 29,5M 0s
47850K .......... .......... .......... .......... .......... 88% 22,1M 0s
47900K .......... .......... .......... .......... .......... 88% 279M 0s
47950K .......... .......... .......... .......... .......... 89% 24,6M 0s
48000K .......... .......... .......... .......... .......... 89% 16,6M 0s
48050K .......... .......... .......... .......... .......... 89% 286M 0s
48100K .......... .......... .......... .......... .......... 89% 63,4M 0s
48150K .......... .......... .......... .......... .......... 89% 19,3M 0s
48200K .......... .......... .......... .......... .......... 89% 21,8M 0s
48250K .......... .......... .......... .......... .......... 89% 57,7M 0s
48300K .......... .......... .......... .......... .......... 89% 14,3M 0s
48350K .......... .......... .......... .......... .......... 89% 98,2M 0s
48400K .......... .......... .......... .......... .......... 89% 11,7M 0s
48450K .......... .......... .......... .......... .......... 89% 151M 0s
48500K .......... .......... .......... .......... .......... 90% 32,9M 0s
48550K .......... .......... .......... .......... .......... 90% 159M 0s
48600K .......... .......... .......... .......... .......... 90% 18,9M 0s
48650K .......... .......... .......... .......... .......... 90% 118M 0s
48700K .......... .......... .......... .......... .......... 90% 18,7M 0s
48750K .......... .......... .......... .......... .......... 90% 60,3M 0s
48800K .......... .......... .......... .......... .......... 90% 19,8M 0s
48850K .......... .......... .......... .......... .......... 90% 55,0M 0s
48900K .......... .......... .......... .......... .......... 90% 20,4M 0s
48950K .......... .......... .......... .......... .......... 90% 128M 0s
49000K .......... .......... .......... .......... .......... 90% 14,7M 0s
49050K .......... .......... .......... .......... .......... 91% 107M 0s
49100K .......... .......... .......... .......... .......... 91% 21,0M 0s
49150K .......... .......... .......... .......... .......... 91% 103M 0s
49200K .......... .......... .......... .......... .......... 91% 25,1M 0s
49250K .......... .......... .......... .......... .......... 91% 130M 0s
49300K .......... .......... .......... .......... .......... 91% 16,2M 0s
49350K .......... .......... .......... .......... .......... 91% 99,2M 0s
49400K .......... .......... .......... .......... .......... 91% 13,1M 0s
49450K .......... .......... .......... .......... .......... 91% 38,3M 0s
49500K .......... .......... .......... .......... .......... 91% 66,3M 0s
49550K .......... .......... .......... .......... .......... 92% 16,6M 0s
49600K .......... .......... .......... .......... .......... 92% 121M 0s
49650K .......... .......... .......... .......... .......... 92% 25,9M 0s
49700K .......... .......... .......... .......... .......... 92% 53,1M 0s
49750K .......... .......... .......... .......... .......... 92% 20,4M 0s
49800K .......... .......... .......... .......... .......... 92% 65,1M 0s
49850K .......... .......... .......... .......... .......... 92% 17,1M 0s
49900K .......... .......... .......... .......... .......... 92% 229M 0s
49950K .......... .......... .......... .......... .......... 92% 20,1M 0s
50000K .......... .......... .......... .......... .......... 92% 79,5M 0s
50050K .......... .......... .......... .......... .......... 92% 14,0M 0s
50100K .......... .......... .......... .......... .......... 93% 16,5M 0s
50150K .......... .......... .......... .......... .......... 93% 62,6M 0s
50200K .......... .......... .......... .......... .......... 93% 29,8M 0s
50250K .......... .......... .......... .......... .......... 93% 53,4M 0s
50300K .......... .......... .......... .......... .......... 93% 19,2M 0s
50350K .......... .......... .......... .......... .......... 93% 80,8M 0s
50400K .......... .......... .......... .......... .......... 93% 18,2M 0s
50450K .......... .......... .......... .......... .......... 93% 37,3M 0s
50500K .......... .......... .......... .......... .......... 93% 25,5M 0s
50550K .......... .......... .......... .......... .......... 93% 159M 0s
50600K .......... .......... .......... .......... .......... 93% 18,6M 0s
50650K .......... .......... .......... .......... .......... 94% 156M 0s
50700K .......... .......... .......... .......... .......... 94% 20,1M 0s
50750K .......... .......... .......... .......... .......... 94% 19,6M 0s
50800K .......... .......... .......... .......... .......... 94% 180M 0s
50850K .......... .......... .......... .......... .......... 94% 193M 0s
50900K .......... .......... .......... .......... .......... 94% 16,5M 0s
50950K .......... .......... .......... .......... .......... 94% 13,9M 0s
51000K .......... .......... .......... .......... .......... 94% 87,7M 0s
51050K .......... .......... .......... .......... .......... 94% 34,2M 0s
51100K .......... .......... .......... .......... .......... 94% 55,4M 0s
51150K .......... .......... .......... .......... .......... 94% 17,1M 0s
51200K .......... .......... .......... .......... .......... 95% 45,1M 0s
51250K .......... .......... .......... .......... .......... 95% 17,1M 0s
51300K .......... .......... .......... .......... .......... 95% 119M 0s
51350K .......... .......... .......... .......... .......... 95% 26,2M 0s
51400K .......... .......... .......... .......... .......... 95% 80,2M 0s
51450K .......... .......... .......... .......... .......... 95% 18,6M 0s
51500K .......... .......... .......... .......... .......... 95% 69,3M 0s
51550K .......... .......... .......... .......... .......... 95% 19,2M 0s
51600K .......... .......... .......... .......... .......... 95% 53,2M 0s
51650K .......... .......... .......... .......... .......... 95% 25,9M 0s
51700K .......... .......... .......... .......... .......... 95% 24,2M 0s
51750K .......... .......... .......... .......... .......... 96% 53,8M 0s
51800K .......... .......... .......... .......... .......... 96% 49,7M 0s
51850K .......... .......... .......... .......... .......... 96% 23,2M 0s
51900K .......... .......... .......... .......... .......... 96% 61,0M 0s
51950K .......... .......... .......... .......... .......... 96% 15,9M 0s
52000K .......... .......... .......... .......... .......... 96% 19,0M 0s
52050K .......... .......... .......... .......... .......... 96% 69,9M 0s
52100K .......... .......... .......... .......... .......... 96% 146M 0s
52150K .......... .......... .......... .......... .......... 96% 16,1M 0s
52200K .......... .......... .......... .......... .......... 96% 92,5M 0s
52250K .......... .......... .......... .......... .......... 97% 22,3M 0s
52300K .......... .......... .......... .......... .......... 97% 46,5M 0s
52350K .......... .......... .......... .......... .......... 97% 18,3M 0s
52400K .......... .......... .......... .......... .......... 97% 25,9M 0s
52450K .......... .......... .......... .......... .......... 97% 69,9M 0s
52500K .......... .......... .......... .......... .......... 97% 13,4M 0s
52550K .......... .......... .......... .......... .......... 97% 86,4M 0s
52600K .......... .......... .......... .......... .......... 97% 27,6M 0s
52650K .......... .......... .......... .......... .......... 97% 84,5M 0s
52700K .......... .......... .......... .......... .......... 97% 19,4M 0s
52750K .......... .......... .......... .......... .......... 97% 104M 0s
52800K .......... .......... .......... .......... .......... 98% 22,4M 0s
52850K .......... .......... .......... .......... .......... 98% 74,7M 0s
52900K .......... .......... .......... .......... .......... 98% 20,3M 0s
52950K .......... .......... .......... .......... .......... 98% 66,6M 0s
53000K .......... .......... .......... .......... .......... 98% 17,5M 0s
53050K .......... .......... .......... .......... .......... 98% 149M 0s
53100K .......... .......... .......... .......... .......... 98% 14,0M 0s
53150K .......... .......... .......... .......... .......... 98% 97,7M 0s
53200K .......... .......... .......... .......... .......... 98% 15,1M 0s
53250K .......... .......... .......... .......... .......... 98% 226M 0s
53300K .......... .......... .......... .......... .......... 98% 24,2M 0s
53350K .......... .......... .......... .......... .......... 99% 12,8M 0s
53400K .......... .......... .......... .......... .......... 99% 231M 0s
53450K .......... .......... .......... .......... .......... 99% 23,0M 0s
53500K .......... .......... .......... .......... .......... 99% 213M 0s
53550K .......... .......... .......... .......... .......... 99% 16,5M 0s
53600K .......
Unzipping Dataset
Archive: cats-dogs-data.zip
Removing .zip file
... .......... .......... .......... .......... 99% 47,1M 0s
53650K .......... .......... .......... .......... .......... 99% 20,0M 0s
53700K .......... .......... .......... .......... .......... 99% 73,2M 0s
53750K .......... .......... .......... .......... .......... 99% 26,8M 0s
53800K .......... .......... .......... .......... .......... 99% 56,3M 0s
53850K .......... .......... .......... .......... .......... 99% 6,71M 0s
53900K ......... 100% 132M=1,9s
2021-10-06 11:26:22 (27,8 MB/s) - ‘cats-dogs-data.zip’ saved [55203029/55203029]
replace cats-dogs-data/.DS_Store? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL
(EOF or read error, treating as "[N]one" ...)
Here's the keras implementation for a great performance result:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense, GlobalAveragePooling2D
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import Adam
TARGET_SHAPE = (224, 224, 3)
TRAIN_PATH = 'cats-dogs-data/train'
VALID_PATH = 'cats-dogs-data/valid'
datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
train_gen = datagen.flow_from_directory(TRAIN_PATH,
target_size=TARGET_SHAPE[:2],
class_mode='sparse')
valid_gen = datagen.flow_from_directory(VALID_PATH,
target_size=TARGET_SHAPE[:2],
class_mode='sparse',
shuffle=False)
base_model = ResNet50(include_top=False, input_shape=TARGET_SHAPE)
for layer in base_model.layers:
layer.trainable=False
model = Sequential([base_model,
GlobalAveragePooling2D(),
Dense(1024, activation='relu'),
Dense(2, activation='softmax')])
Found 2000 images belonging to 2 classes.
Found 400 images belonging to 2 classes.
model.compile(optimizer=Adam(learning_rate=1e-4), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_gen, epochs=3, validation_data=valid_gen)
Epoch 1/3
2021-10-06 11:29:26.088412: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
2021-10-06 11:29:26.256 python[95381:1139332] -[MPSGraph adamUpdateWithLearningRateTensor:beta1Tensor:beta2Tensor:epsilonTensor:beta1PowerTensor:beta2PowerTensor:valuesTensor:momentumTensor:velocityTensor:maximumVelocityTensor:gradientTensor:name:]: unrecognized selector sent to instance 0x2a93793b0
By looking at val_accuracy
we can confirm the results seems great. Let's also plot some other metrics:
from sklearn.metrics import roc_auc_score, classification_report, confusion_matrix
import seaborn as sns
y_pred = model.predict(valid_gen)
y_test = valid_gen.classes
roc = roc_auc_score(y_test, y_pred[:, 1])
print("ROC AUC Score", roc)
ROC AUC Score 0.9989
cm=confusion_matrix(y_test, y_pred.argmax(axis=1))
sns.heatmap(cm, annot=True, fmt='g')
<matplotlib.axes._subplots.AxesSubplot at 0x7fcc41c57090>
Although we got an almost perfect clssifier, there are multiple details that someone who is coming from sklearn has to be careful when using Keras, for example:
- Correctly setup the Data Generator
- Fine tune the learning rate
- Adjust the batch size
Now let's replicate the same results using deepfeatx
:
from deepfeatx.image import ImageFeatureExtractor
from sklearn.linear_model import LogisticRegression
TRAIN_PATH = 'cats-dogs-data/train'
VALID_PATH = 'cats-dogs-data/valid'
fe = ImageFeatureExtractor()
train=fe.extract_features_from_directory(TRAIN_PATH,
classes_as_folders=True,
export_class_names=True)
test=fe.extract_features_from_directory(VALID_PATH,
classes_as_folders=True,
export_class_names=True)
X_train, y_train = train.drop(['filepaths', 'classes'], axis=1), train['classes']
X_test, y_test = test.drop(['filepaths', 'classes'], axis=1), test['classes']
lr = LogisticRegression().fit(X_train, y_train)
Found 2000 images belonging to 2 classes.
2021-10-06 11:27:40.528937: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
63/63 [==============================] - 22s 350ms/step
Found 400 images belonging to 2 classes.
13/13 [==============================] - 4s 351ms/step
/Users/wittmann/miniforge3/envs/mlp/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:814: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(
roc_auc_score(y_test, lr.predict_proba(X_test)[:, 1])
0.9996
import seaborn as sns
cm=confusion_matrix(y_test, lr.predict(X_test))
sns.heatmap(cm, annot=True, fmt='g')
<AxesSubplot:>
Even though the code is smaller, is still as powerful as the keras code and also very flexible. The most important part is the feature extraction, which deepfeatx
take care for us, and the rest can be performed as any other ML problem.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for deepfeatx-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 067a2e5ee9f6db2638eb5fb7d75b577155d946e185a5b827f45a349ee4509840 |
|
MD5 | 2fc0e3bfd39d586d29be6e20ee0ad400 |
|
BLAKE2b-256 | c3de48e4de0de8f4f216422fe6db69bb8edbc482aa43dd002957c27a4e701112 |