├── .idea
├── SmoothFool.iml
├── misc.xml
├── modules.xml
├── vcs.xml
└── workspace.xml
├── README.md
├── check_tranfersmoothfool2.py
├── samples
├── ILSVRC2012_val_00000003.JPEG
├── sample_gaussian.png
├── sample_linear.png
└── samples_uniform.png
├── smoothfool.py
└── synset_words.txt
/.idea/SmoothFool.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
82 |
83 |
84 |
85 | im_01
86 | Smoothing
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 | 1547500264364
278 |
279 |
280 | 1547500264364
281 |
282 |
283 | 1547504851662
284 |
285 |
286 |
287 | 1547504851662
288 |
289 |
290 | 1547505053471
291 |
292 |
293 |
294 | 1547505053471
295 |
296 |
297 | 1568218884002
298 |
299 |
300 |
301 | 1568218884002
302 |
303 |
304 | 1568219496666
305 |
306 |
307 |
308 | 1568219496666
309 |
310 |
311 | 1568221023399
312 |
313 |
314 |
315 | 1568221023399
316 |
317 |
318 | 1568221271905
319 |
320 |
321 |
322 | 1568221271905
323 |
324 |
325 | 1568221304216
326 |
327 |
328 |
329 | 1568221304216
330 |
331 |
332 | 1568221378620
333 |
334 |
335 |
336 | 1568221378620
337 |
338 |
339 | 1568221459277
340 |
341 |
342 |
343 | 1568221459277
344 |
345 |
346 | 1568222205370
347 |
348 |
349 |
350 | 1568222205370
351 |
352 |
353 | 1568222645311
354 |
355 |
356 |
357 | 1568222645311
358 |
359 |
360 | 1568224178306
361 |
362 |
363 |
364 | 1568224178306
365 |
366 |
367 | 1568224447465
368 |
369 |
370 |
371 | 1568224447465
372 |
373 |
374 | 1568224484620
375 |
376 |
377 |
378 | 1568224484620
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SmoothFool
2 |
3 | Pytorch implementation of SmoothFool: An Efficient Framework for Computing Smooth Adversarial Perturbations.
4 |
5 | ## Setup
6 |
7 | ### Prerequisites
8 | - Pytorch > 0.4
9 | - Python 3.5
10 | - PIL
11 | - Matplotlib
12 | - Numpy
13 |
14 | ### Getting Started
15 |
16 | ```sh
17 | # clone this repo
18 | git clone https://github.com/alldbi/SmoothFool.git
19 | cd SmoothFool
20 |
21 | # Generating smooth adversarial examples:
22 | python smoothfool.py \
23 | --net resnet101 \
24 | --img "path to the input image" \
25 | --type "type of smoothing which can be gaussian, linear, or uniform." \
26 | --sigma "parameter of the smoothing function, for gaussian is the standard deviation, for linear and uniform is the size of kernel" \
27 | --smoothclip "whether using smoothclip or conventional clip" \
28 | ```
29 |
30 |
31 | ### Sample results
32 |
33 | #### Gaussian
34 |
35 | 
36 |
37 | #### Linear
38 |
39 | 
40 |
41 | #### Uniform
42 |
43 | 
44 |
45 | ## Citation
46 | If you use the code or methodology for your research, please cite the paper: SmoothFool: An Efficient Framework for Computing Smooth Adversarial Perturbations
47 |
48 | ## References
49 | - [DeepFool](https://github.com/LTS4/DeepFool)
50 |
--------------------------------------------------------------------------------
/check_tranfersmoothfool2.py:
--------------------------------------------------------------------------------
1 | import torchvision.models as models
2 | from PIL import Image
3 | from torch.autograd.gradcheck import zero_gradients
4 | from torch.autograd import Variable
5 | import numpy as np
6 | import torch
7 | import math
8 | import copy
9 | import torchvision.transforms as transforms
10 | import scipy.misc
11 | import matplotlib.pyplot as plt
12 | import os
13 | import numbers
14 | from torch.nn import functional as F
15 | import torch.nn as nn
16 | import argparse
17 |
18 | mean = [0.485, 0.456, 0.406]
19 | std = [0.229, 0.224, 0.225]
20 | t_max_r = (1. - mean[0]) / std[0] # 2.248
21 | t_max_g = (1. - mean[1]) / std[1] # 2.428
22 | t_max_b = (1. - mean[2]) / std[2] # 2.640
23 | t_min_r = (- mean[0]) / std[0] # 2.248
24 | t_min_g = (- mean[1]) / std[1] # 2.428
25 | t_min_b = (- mean[2]) / std[2] # 2.640
26 |
27 | labels = open(os.path.join('synset_words.txt'), 'r').read().split('\n')
28 |
29 | # set random seed
30 | torch.manual_seed(263)
31 | np.random.seed(274)
32 |
33 |
34 | def pred_cls(lbl):
35 | return labels[np.int(lbl)].split(',')[0]
36 |
37 |
38 | class Smoothing(nn.Module):
39 | """
40 | Apply smoothing on a tensor
41 | Arguments:
42 | channels (int, sequence): Number of channels of the input tensors. Output will
43 | have this number of channels as well.
44 | kernel_size (int, sequence): Size of the gaussian kernel.
45 | sigma (float, sequence): Standard deviation of the gaussian kernel.
46 | dim (int, optional): The number of dimensions of the data.
47 | Default value is 2 (spatial).
48 | """
49 |
50 | def __init__(self, sig, type='gaussian'):
51 |
52 | super(Smoothing, self).__init__()
53 |
54 | if type == 'gaussian':
55 | size_denom = 5.
56 | sigma = sig * size_denom
57 | kernel_size = sigma
58 | mgrid = torch.arange(kernel_size, dtype=torch.float32)
59 | mean = (kernel_size - 1.) / 2.
60 | mgrid = mgrid - mean
61 | mgrid = mgrid * size_denom
62 | kernel = 1. / (sigma * math.sqrt(2. * math.pi)) * \
63 | torch.exp(-(((mgrid - 0.) / (sigma)) ** 2) * 0.5)
64 |
65 | print("Gaussian smoothing")
66 |
67 | elif type == 'linear':
68 | kernel_size = sig
69 | kernel = torch.arange(kernel_size, dtype=torch.float32)
70 | kernel = kernel - kernel.mean()
71 | kernel = kernel.max() - kernel.abs()
72 |
73 | print("Linear smoothing")
74 |
75 | elif type == 'uniform':
76 | kernel_size = sig
77 | kernel = torch.ones([int(kernel_size)])
78 |
79 | print("Uniform smoothing")
80 | else:
81 | raise ValueError('Smoothing type is not defined!')
82 |
83 | # Make sure sum of values in gaussian kernel equals 1.
84 | kernel = kernel / torch.sum(kernel)
85 |
86 | # Reshape to depthwise convolutional weight
87 | kernelx = kernel.view(1, 1, int(kernel_size), 1).repeat(3, 1, 1, 1)
88 | kernely = kernel.view(1, 1, 1, int(kernel_size)).repeat(3, 1, 1, 1)
89 |
90 | self.register_buffer('weightx', kernelx)
91 | self.register_buffer('weighty', kernely)
92 | self.groups = 3
93 |
94 | self.conv = F.conv2d
95 | padd0 = int(kernel_size // 2)
96 | evenorodd = int(1 - kernel_size % 2)
97 | self.pad = torch.nn.ConstantPad2d((padd0 - evenorodd, padd0, padd0 - evenorodd, padd0), 0.)
98 |
99 | def forward(self, input):
100 | """
101 | Apply smoothing filter to input.
102 | Arguments:
103 | input (torch.Tensor): Input to apply gaussian filter on.
104 | Returns:
105 | filtered (torch.Tensor): Filtered output.
106 | """
107 |
108 | input = self.pad(input)
109 | input = self.conv(input, weight=self.weightx, groups=self.groups)
110 | input = self.conv(input, weight=self.weighty, groups=self.groups)
111 | return input
112 |
113 |
114 | def preprocess_channels(x, mean, std):
115 | x_r = x[0:1, 0:1, :, :]
116 | x_g = x[0:1, 1:2, :, :]
117 | x_b = x[0:1, 2:3, :, :]
118 | x_r = (x_r - mean[0]) / std[0]
119 | x_g = (x_g - mean[1]) / std[1]
120 | x_b = (x_b - mean[2]) / std[2]
121 |
122 | return torch.cat((x_r, x_g, x_b), 1)
123 |
124 |
125 | def deprocess_channels(x, mean, std):
126 | x_r = x[0:1, 0:1, :, :]
127 | x_g = x[0:1, 1:2, :, :]
128 | x_b = x[0:1, 2:3, :, :]
129 | x_r = x_r * std[0] + mean[0]
130 | x_g = x_g * std[1] + mean[1]
131 | x_b = x_b * std[2] + mean[2]
132 | return torch.cat((x_r, x_g, x_b), 1)
133 |
134 |
135 | def deepfool(im, net, lambda_fac=2., num_classes=10, overshoot=0.02, max_iter=20, device='cuda'):
136 | image = copy.deepcopy(im)
137 | input_shape = image.size()
138 |
139 | f_image = net.forward(Variable(image, requires_grad=True)).data.cpu().numpy().flatten()
140 | I = (np.array(f_image)).flatten().argsort()[::-1]
141 | I = I[0:num_classes]
142 | label = I[0]
143 |
144 | pert_image = copy.deepcopy(image)
145 | r_tot = torch.zeros(input_shape).to(device)
146 |
147 | k_i = label
148 | loop_i = 0
149 |
150 | while k_i == label and loop_i < max_iter:
151 |
152 | x = Variable(pert_image, requires_grad=True)
153 | fs = net.forward(x)
154 |
155 | pert = torch.Tensor([np.inf])[0].to(device)
156 | w = torch.zeros(input_shape).to(device)
157 |
158 | fs[0, I[0]].backward(retain_graph=True)
159 |
160 | grad_orig = copy.deepcopy(x.grad.data)
161 |
162 | for k in range(1, num_classes):
163 | zero_gradients(x)
164 |
165 | fs[0, I[k]].backward(retain_graph=True)
166 | cur_grad = copy.deepcopy(x.grad.data)
167 |
168 | w_k = cur_grad - grad_orig
169 | f_k = (fs[0, I[k]] - fs[0, I[0]]).data
170 |
171 | pert_k = torch.abs(f_k) / w_k.norm()
172 |
173 | if pert_k < pert:
174 | pert = pert_k + 0.
175 | w = w_k + 0.
176 |
177 | r_i = torch.clamp(pert, min=1e-4) * w / w.norm()
178 | r_tot = r_tot + r_i
179 |
180 | pert_image = pert_image + r_i
181 |
182 | check_fool = image + (1 + overshoot) * r_tot
183 | k_i = torch.argmax(net.forward(Variable(check_fool, requires_grad=True)).data).item()
184 |
185 | loop_i += 1
186 |
187 | x = Variable(pert_image, requires_grad=True)
188 | fs = net.forward(x)
189 | (fs[0, k_i] - fs[0, label]).backward(retain_graph=True)
190 | grad = copy.deepcopy(x.grad.data)
191 | grad = grad / grad.norm()
192 |
193 | r_tot = lambda_fac * r_tot
194 | pert_image = image + r_tot
195 |
196 | return grad, pert_image, k_i
197 |
198 |
199 | def smooth_clip(x, v, smoothing, max_iters=200):
200 | mean = [0.485, 0.456, 0.406]
201 | std = [0.229, 0.224, 0.225]
202 | epsilon = 1e-2
203 | test_x = copy.deepcopy(x)
204 | v_i = copy.deepcopy(v)
205 | iter_i = 0
206 |
207 | # deprocess x to be in [0, 1]
208 | test_x = deprocess_channels(test_x, mean=mean, std=std)
209 |
210 | # deprocess perturbation
211 | v_i = deprocess_channels(v_i, mean=[0., 0., 0.], std=std)
212 |
213 | n = 1.
214 |
215 | while n > 0 and iter_i < max_iters:
216 | result_img = test_x + v_i
217 |
218 | overshoot = ((result_img - 1.) >= 0).type(torch.float32)
219 | belowshoot = ((result_img - 0.) <= 0).type(torch.float32)
220 |
221 | ov_max = (result_img - 1.).data.cpu().numpy() * 0.1
222 | bl_max = (result_img - 0.).data.cpu().numpy() * 0.1 * -1.
223 |
224 | ov_max = np.maximum(ov_max.max(), 0.01)
225 | bl_max = np.maximum(bl_max.max(), 0.01)
226 |
227 | overshoot = smoothing(overshoot)
228 | belowshoot = smoothing(belowshoot)
229 |
230 | maxx_ov = torch.max(overshoot) + 1e-12
231 | maxx_bl = torch.max(belowshoot) + 1e-12
232 |
233 | overshoot = overshoot / maxx_ov
234 | belowshoot = belowshoot / maxx_bl
235 |
236 | v_i = v_i - overshoot * ov_max + belowshoot * bl_max
237 | result_img = test_x + v_i
238 |
239 | overshoot = ((result_img - 1.) >= 0).type(torch.float32)
240 | belowshoot = ((result_img - 0.) <= 0).type(torch.float32)
241 |
242 | n_ov = overshoot.sum().item()
243 | n_bl = belowshoot.sum().item()
244 | n = n_ov + n_bl
245 | iter_i += 1
246 | v_i = preprocess_channels(v_i, mean=[0., 0., 0.], std=std)
247 | return v_i, iter_i
248 |
249 |
250 | def clip_value(x):
251 | xx = copy.deepcopy(x)
252 | x_0 = xx[0:1, :, :]
253 | x_1 = xx[1:2, :, :]
254 | x_2 = xx[2:3, :, :]
255 | x_0 = torch.clamp(x_0, t_min_r, t_max_r)
256 | x_1 = torch.clamp(x_1, t_min_g, t_max_g)
257 | x_2 = torch.clamp(x_2, t_min_b, t_max_b)
258 | x_c = torch.cat((x_0, x_1, x_2), 0)
259 | return x_c
260 |
261 |
262 | def compute_roughness(r, smoothing):
263 | diff = r - smoothing(r)
264 | omega = torch.sum(diff ** 2)
265 | omega_normal = omega / torch.sum(r ** 2)
266 | return omega.item(), omega_normal.item()
267 |
268 |
269 | def smoothfool(net, im, alpha_fac, dp_lambda, smoothing_func, max_iters=500, smooth_clipping=True, device='cuda'):
270 | net = net.to(device)
271 | im = im.to(device)
272 | x_i = copy.deepcopy(im).to(device)
273 | loop_i = 0
274 | f_image = net.forward(Variable(im[None, :, :, :], requires_grad=True)).data.cpu().numpy().flatten()
275 | label_nat = np.argmax(f_image)
276 | k_i = label_nat
277 | labels = open(os.path.join('synset_words.txt'), 'r').read().split('\n')
278 | total_clip_iters = 0
279 | attck_mon = []
280 | while loop_i < max_iters and k_i == label_nat:
281 | normal, x_adv, adv_lbl = deepfool(x_i[None, :, :, :], net, lambda_fac=dp_lambda, num_classes=10, device=device)
282 | normal_smooth = smoothing_func(normal)
283 | normal_smooth = normal_smooth / torch.norm(normal_smooth.view(-1))
284 | dot0 = torch.dot(normal.view(-1), x_adv.view(-1) - x_i.view(-1))
285 | dot1 = torch.dot(normal.view(-1), normal_smooth.view(-1))
286 | alpha = (dot0 / dot1) * alpha_fac
287 | normal_smooth = normal_smooth * alpha
288 |
289 | clip_iters = 0
290 | # if smooth_clipping:
291 | # normal_smooth, clip_iters = smooth_clip(x_i[None, :, :, :], normal_smooth, smoothing_func)
292 | # if clip_iters > 198:
293 | # print("clip_iters>iters_max")
294 | # break
295 | # total_clip_iters += clip_iters
296 | # x_i = x_i + normal_smooth[0, :, :, :]
297 | # else:
298 | x_i = clip_value(x_i + normal_smooth[0, ...])
299 |
300 | f_image = net.forward(Variable(x_i[None, :, :, :], requires_grad=True)).data.cpu().numpy().flatten()
301 | k_i = np.argmax(f_image)
302 | loop_i += 1
303 | print(" step: %03d, predicted label: %03d, prob of pred: %.3f, n of clip iters: %03d" % (
304 | loop_i, k_i, np.max(f_image), clip_iters))
305 | attck_mon.append(np.max(f_image))
306 |
307 | # track the performance of attack
308 | if len(attck_mon) > 10:
309 | del attck_mon[0]
310 |
311 | return x_i, loop_i, total_clip_iters, label_nat, k_i
312 |
313 |
314 | def tensor2img(t):
315 | """
316 | converts the pytorch tensor to img by transposing the tensor and normalizing it
317 | :param t: input tensor
318 | :return: numpy array with last dim be the channels and all values in range [0, 1]
319 | """
320 | t_np = t.detach().cpu().numpy().transpose(1, 2, 0)
321 | t_np = (t_np - t_np.min()) / (t_np.max() - t_np.min())
322 | return t_np
323 |
324 |
325 | ############# EXP settings ##############################
326 | alpha_fac = 1.1
327 | dp_lambda = 1.1
328 | device = 'cuda' if torch.cuda.is_available() else 'cpu'
329 |
330 | net = models.vgg16(pretrained=True)
331 |
332 | # Switch to evaluation mode
333 | net.eval()
334 | net.to(device)
335 |
336 |
337 | net_target = models.resnet101(pretrained=True)
338 | net_target.eval()
339 | net_target.to(device)
340 |
341 | smoothing = Smoothing(sig=50, type='uniform').to(device)
342 |
343 | success = 0
344 | for img_iter in range(300):
345 | # read the input image
346 | im_orig = Image.open('/media/aldb/DATA1/test data/imagenet10000/' + str(img_iter) + '.JPEG')
347 |
348 | im = transforms.Compose([
349 | transforms.Scale(224),
350 | transforms.CenterCrop(224),
351 | transforms.ToTensor(), transforms.Normalize(mean=mean, std=std)])(im_orig)
352 | im = im.to(device)
353 |
354 |
355 |
356 | x_adv, loop_i, total_clip_iters, label_nat, label_adv = smoothfool(net, im, alpha_fac=alpha_fac,
357 | dp_lambda=dp_lambda,
358 | smoothing_func=smoothing,
359 | smooth_clipping=False,
360 | device=device)
361 | smooth_ap = x_adv - im
362 | smooth_ap_linf = smooth_ap.abs().max()
363 | smooth_ap *= (2.2/smooth_ap_linf)
364 | x_adv_new = im + smooth_ap
365 |
366 |
367 | # print(img_iter, nat_lbl, adv_lbl)
368 |
369 |
370 | pred_target = net_target(im[None, ...]).detach().cpu().numpy()
371 | pred_target_lbl = np.argmax(pred_target, 1)
372 |
373 | pred_target_adv = net_target(x_adv_new[None, ...]).detach().cpu().numpy()
374 | pred_target_lbl_adv = np.argmax(pred_target_adv, 1)
375 |
376 |
377 |
378 | # print(pred_target_lbl)
379 | if pred_target_lbl != pred_target_lbl_adv:
380 | success += 1
381 | # plt.subplot(1, 2, 1)
382 | # plt.imshow(tensor2img(im))
383 | # plt.subplot(1, 2, 2)
384 | # plt.imshow(tensor2img(x_adv_new))
385 | # plt.show()
386 |
387 | if img_iter % 10 == 0 and img_iter>0:
388 | print(img_iter, success, success/img_iter)
389 |
390 | print(success)
391 |
392 |
393 |
394 |
--------------------------------------------------------------------------------
/samples/ILSVRC2012_val_00000003.JPEG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alldbi/SmoothFool/c9a0346a9f1cf1967d127472079820e7f4c12c64/samples/ILSVRC2012_val_00000003.JPEG
--------------------------------------------------------------------------------
/samples/sample_gaussian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alldbi/SmoothFool/c9a0346a9f1cf1967d127472079820e7f4c12c64/samples/sample_gaussian.png
--------------------------------------------------------------------------------
/samples/sample_linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alldbi/SmoothFool/c9a0346a9f1cf1967d127472079820e7f4c12c64/samples/sample_linear.png
--------------------------------------------------------------------------------
/samples/samples_uniform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alldbi/SmoothFool/c9a0346a9f1cf1967d127472079820e7f4c12c64/samples/samples_uniform.png
--------------------------------------------------------------------------------
/smoothfool.py:
--------------------------------------------------------------------------------
1 | import torchvision.models as models
2 | from PIL import Image
3 | from torch.autograd.gradcheck import zero_gradients
4 | from torch.autograd import Variable
5 | import numpy as np
6 | import torch
7 | import math
8 | import copy
9 | import torchvision.transforms as transforms
10 | import scipy.misc
11 | import matplotlib.pyplot as plt
12 | import os
13 | import numbers
14 | from torch.nn import functional as F
15 | import torch.nn as nn
16 | import argparse
17 |
18 | mean = [0.485, 0.456, 0.406]
19 | std = [0.229, 0.224, 0.225]
20 | t_max_r = (1. - mean[0]) / std[0] # 2.248
21 | t_max_g = (1. - mean[1]) / std[1] # 2.428
22 | t_max_b = (1. - mean[2]) / std[2] # 2.640
23 | t_min_r = (- mean[0]) / std[0] # 2.248
24 | t_min_g = (- mean[1]) / std[1] # 2.428
25 | t_min_b = (- mean[2]) / std[2] # 2.640
26 |
27 | labels = open(os.path.join('synset_words.txt'), 'r').read().split('\n')
28 |
29 | # set random seed
30 | torch.manual_seed(263)
31 | np.random.seed(274)
32 |
33 |
34 | def pred_cls(lbl):
35 | return labels[np.int(lbl)].split(',')[0]
36 |
37 |
38 | ########
39 | class Smoothing(nn.Module):
40 | """
41 | Apply smoothing on a tensor
42 | Arguments:
43 | channels (int, sequence): Number of channels of the input tensors. Output will
44 | have this number of channels as well.
45 | kernel_size (int, sequence): Size of the gaussian kernel.
46 | sigma (float, sequence): Standard deviation of the gaussian kernel.
47 | dim (int, optional): The number of dimensions of the data.
48 | Default value is 2 (spatial).
49 | """
50 |
51 | def __init__(self, sig, type='gaussian'):
52 |
53 | super(Smoothing, self).__init__()
54 |
55 | if type == 'gaussian':
56 | size_denom = 5.
57 | sigma = sig * size_denom
58 | kernel_size = sigma
59 | mgrid = torch.arange(kernel_size, dtype=torch.float32)
60 | mean = (kernel_size - 1.) / 2.
61 | mgrid = mgrid - mean
62 | mgrid = mgrid * size_denom
63 | kernel = 1. / (sigma * math.sqrt(2. * math.pi)) * \
64 | torch.exp(-(((mgrid - 0.) / (sigma)) ** 2) * 0.5)
65 |
66 | print("Gaussian smoothing")
67 |
68 | elif type == 'linear':
69 | kernel_size = sig
70 | kernel = torch.arange(kernel_size, dtype=torch.float32)
71 | kernel = kernel - kernel.mean()
72 | kernel = kernel.max() - kernel.abs()
73 |
74 | print("Linear smoothing")
75 |
76 | elif type == 'uniform':
77 | kernel_size = sig
78 | kernel = torch.ones([int(kernel_size)])
79 |
80 | print("Uniform smoothing")
81 | else:
82 | raise ValueError('Smoothing type is not defined!')
83 |
84 | # Make sure sum of values in gaussian kernel equals 1.
85 | kernel = kernel / torch.sum(kernel)
86 |
87 | # Reshape to depthwise convolutional weight
88 | kernelx = kernel.view(1, 1, int(kernel_size), 1).repeat(3, 1, 1, 1)
89 | kernely = kernel.view(1, 1, 1, int(kernel_size)).repeat(3, 1, 1, 1)
90 |
91 | self.register_buffer('weightx', kernelx)
92 | self.register_buffer('weighty', kernely)
93 | self.groups = 3
94 |
95 | self.conv = F.conv2d
96 | padd0 = int(kernel_size // 2)
97 | evenorodd = int(1 - kernel_size % 2)
98 | self.pad = torch.nn.ConstantPad2d((padd0 - evenorodd, padd0, padd0 - evenorodd, padd0), 0.)
99 |
100 | def forward(self, input):
101 | """
102 | Apply smoothing filter to input.
103 | Arguments:
104 | input (torch.Tensor): Input to apply gaussian filter on.
105 | Returns:
106 | filtered (torch.Tensor): Filtered output.
107 | """
108 |
109 | input = self.pad(input)
110 | input = self.conv(input, weight=self.weightx, groups=self.groups)
111 | input = self.conv(input, weight=self.weighty, groups=self.groups)
112 | return input
113 |
114 |
115 | def preprocess_channels(x, mean, std):
116 | x_r = x[0:1, 0:1, :, :]
117 | x_g = x[0:1, 1:2, :, :]
118 | x_b = x[0:1, 2:3, :, :]
119 | x_r = (x_r - mean[0]) / std[0]
120 | x_g = (x_g - mean[1]) / std[1]
121 | x_b = (x_b - mean[2]) / std[2]
122 |
123 | return torch.cat((x_r, x_g, x_b), 1)
124 |
125 |
126 | def deprocess_channels(x, mean, std):
127 | x_r = x[0:1, 0:1, :, :]
128 | x_g = x[0:1, 1:2, :, :]
129 | x_b = x[0:1, 2:3, :, :]
130 | x_r = x_r * std[0] + mean[0]
131 | x_g = x_g * std[1] + mean[1]
132 | x_b = x_b * std[2] + mean[2]
133 | return torch.cat((x_r, x_g, x_b), 1)
134 |
135 | #######
136 |
137 |
138 | def deepfool(im, net, lambda_fac=2., num_classes=10, overshoot=0.02, max_iter=20, device='cuda'):
139 | image = copy.deepcopy(im)
140 | input_shape = image.size()
141 |
142 | f_image = net.forward(Variable(image, requires_grad=True)).data.cpu().numpy().flatten()
143 | I = (np.array(f_image)).flatten().argsort()[::-1]
144 | I = I[0:num_classes]
145 | label = I[0]
146 |
147 | pert_image = copy.deepcopy(image)
148 | r_tot = torch.zeros(input_shape).to(device)
149 |
150 | k_i = label
151 | loop_i = 0
152 |
153 | while k_i == label and loop_i < max_iter:
154 |
155 | x = Variable(pert_image, requires_grad=True)
156 | fs = net.forward(x)
157 |
158 | pert = torch.Tensor([np.inf])[0].to(device)
159 | w = torch.zeros(input_shape).to(device)
160 |
161 | fs[0, I[0]].backward(retain_graph=True)
162 |
163 | grad_orig = copy.deepcopy(x.grad.data)
164 |
165 | for k in range(1, num_classes):
166 | zero_gradients(x)
167 |
168 | fs[0, I[k]].backward(retain_graph=True)
169 | cur_grad = copy.deepcopy(x.grad.data)
170 |
171 | w_k = cur_grad - grad_orig
172 | f_k = (fs[0, I[k]] - fs[0, I[0]]).data
173 |
174 | pert_k = torch.abs(f_k) / w_k.norm()
175 |
176 | if pert_k < pert:
177 | pert = pert_k + 0.
178 | w = w_k + 0.
179 |
180 | r_i = torch.clamp(pert, min=1e-4) * w / w.norm()
181 | r_tot = r_tot + r_i
182 |
183 | pert_image = pert_image + r_i
184 |
185 | check_fool = image + (1 + overshoot) * r_tot
186 | k_i = torch.argmax(net.forward(Variable(check_fool, requires_grad=True)).data).item()
187 |
188 | loop_i += 1
189 |
190 | x = Variable(pert_image, requires_grad=True)
191 | fs = net.forward(x)
192 | (fs[0, k_i] - fs[0, label]).backward(retain_graph=True)
193 | grad = copy.deepcopy(x.grad.data)
194 | grad = grad / grad.norm()
195 |
196 | r_tot = lambda_fac * r_tot
197 | pert_image = image + r_tot
198 |
199 | return grad, pert_image, k_i
200 |
201 |
202 | def smooth_clip(x, v, smoothing, max_iters=200):
203 | mean = [0.485, 0.456, 0.406]
204 | std = [0.229, 0.224, 0.225]
205 | epsilon = 1e-2
206 | test_x = copy.deepcopy(x)
207 | v_i = copy.deepcopy(v)
208 | iter_i = 0
209 |
210 | # deprocess x to be in [0, 1]
211 | test_x = deprocess_channels(test_x, mean=mean, std=std)
212 |
213 | # deprocess perturbation
214 | v_i = deprocess_channels(v_i, mean=[0., 0., 0.], std=std)
215 |
216 | n = 1.
217 |
218 | while n > 0 and iter_i < max_iters:
219 | result_img = test_x + v_i
220 |
221 | overshoot = ((result_img - 1.) >= 0).type(torch.float32)
222 | belowshoot = ((result_img - 0.) <= 0).type(torch.float32)
223 |
224 | ov_max = (result_img - 1.).data.cpu().numpy() * 0.1
225 | bl_max = (result_img - 0.).data.cpu().numpy() * 0.1 * -1.
226 |
227 | ov_max = np.maximum(ov_max.max(), 0.01)
228 | bl_max = np.maximum(bl_max.max(), 0.01)
229 |
230 | overshoot = smoothing(overshoot)
231 | belowshoot = smoothing(belowshoot)
232 |
233 | maxx_ov = torch.max(overshoot) + 1e-12
234 | maxx_bl = torch.max(belowshoot) + 1e-12
235 |
236 | overshoot = overshoot / maxx_ov
237 | belowshoot = belowshoot / maxx_bl
238 |
239 | v_i = v_i - overshoot * ov_max + belowshoot * bl_max
240 | result_img = test_x + v_i
241 |
242 | overshoot = ((result_img - 1.) >= 0).type(torch.float32)
243 | belowshoot = ((result_img - 0.) <= 0).type(torch.float32)
244 |
245 | n_ov = overshoot.sum().item()
246 | n_bl = belowshoot.sum().item()
247 | n = n_ov + n_bl
248 | iter_i += 1
249 | v_i = preprocess_channels(v_i, mean=[0., 0., 0.], std=std)
250 | return v_i, iter_i
251 |
252 |
253 | def clip_value(x):
254 | xx = copy.deepcopy(x)
255 | x_0 = xx[0:1, :, :]
256 | x_1 = xx[1:2, :, :]
257 | x_2 = xx[2:3, :, :]
258 | x_0 = torch.clamp(x_0, t_min_r, t_max_r)
259 | x_1 = torch.clamp(x_1, t_min_g, t_max_g)
260 | x_2 = torch.clamp(x_2, t_min_b, t_max_b)
261 | x_c = torch.cat((x_0, x_1, x_2), 0)
262 | return x_c
263 |
264 |
265 | def compute_roughness(r, smoothing):
266 | diff = r - smoothing(r)
267 | omega = torch.sum(diff ** 2)
268 | omega_normal = omega / torch.sum(r ** 2)
269 | return omega.item(), omega_normal.item()
270 |
271 |
272 | def smoothfool(net, im, alpha_fac, dp_lambda, smoothing_func, max_iters=500, smooth_clipping=True, device='cuda'):
273 | net = net.to(device)
274 | im = im.to(device)
275 | x_i = copy.deepcopy(im).to(device)
276 | loop_i = 0
277 | f_image = net.forward(Variable(im[None, :, :, :], requires_grad=True)).data.cpu().numpy().flatten()
278 | label_nat = np.argmax(f_image)
279 | k_i = label_nat
280 | labels = open(os.path.join('synset_words.txt'), 'r').read().split('\n')
281 | total_clip_iters = 0
282 | attck_mon = []
283 | while loop_i < max_iters and k_i == label_nat:
284 | normal, x_adv, adv_lbl = deepfool(x_i[None, :, :, :], net, lambda_fac=dp_lambda, num_classes=10, device=device)
285 | normal_smooth = smoothing_func(normal)
286 | normal_smooth = normal_smooth / torch.norm(normal_smooth.view(-1))
287 | dot0 = torch.dot(normal.view(-1), x_adv.view(-1) - x_i.view(-1))
288 | dot1 = torch.dot(normal.view(-1), normal_smooth.view(-1))
289 | alpha = (dot0 / dot1) * alpha_fac
290 | normal_smooth = normal_smooth * alpha
291 |
292 | clip_iters = 0
293 | if smooth_clipping:
294 | normal_smooth, clip_iters = smooth_clip(x_i[None, :, :, :], normal_smooth, smoothing_func)
295 | if clip_iters > 198:
296 | print("clip_iters>iters_max")
297 | break
298 | total_clip_iters += clip_iters
299 | x_i = x_i + normal_smooth[0, :, :, :]
300 | else:
301 | x_i = clip_value(x_i + normal_smooth[0, ...])
302 |
303 | f_image = net.forward(Variable(x_i[None, :, :, :], requires_grad=True)).data.cpu().numpy().flatten()
304 | k_i = np.argmax(f_image)
305 | loop_i += 1
306 | print(" step: %03d, predicted label: %03d, prob of pred: %.3f, n of clip iters: %03d" % (
307 | loop_i, k_i, np.max(f_image), clip_iters))
308 | attck_mon.append(np.max(f_image))
309 |
310 | # track the performance of attack
311 | if len(attck_mon) > 10:
312 | del attck_mon[0]
313 |
314 | return x_i, loop_i, total_clip_iters, label_nat, k_i
315 |
316 |
317 | def tensor2img(t):
318 | """
319 | converts the pytorch tensor to img by transposing the tensor and normalizing it
320 | :param t: input tensor
321 | :return: numpy array with last dim be the channels and all values in range [0, 1]
322 | """
323 | t_np = t.detach().cpu().numpy().transpose(1, 2, 0)
324 | t_np = (t_np - t_np.min()) / (t_np.max() - t_np.min())
325 | return t_np
326 |
327 |
328 | ############# EXP settings ##############################
329 | alpha_fac = 1.1
330 | dp_lambda = 1.5
331 |
332 | if __name__ == '__main__':
333 | parser = argparse.ArgumentParser(description='PyTorch implementation of SmoothFool')
334 | parser.add_argument('--sigma', default=5, type=float, help='smoothing factor')
335 | parser.add_argument('--type', default='uniform', type=str, help='type of smoothing')
336 | parser.add_argument('--smoothclip', default=False, type=bool,
337 | help='clip adv samples using smoothclip or conventional clip')
338 | parser.add_argument('--net', default='resnet101', type=str,
339 | help='network architecture to perform attack on, could be vgg16 or resent101')
340 | parser.add_argument('--img', default='./samples/ILSVRC2012_val_00000003.JPEG', type=str,
341 | help='path to the input img')
342 | args = parser.parse_args()
343 | device = 'cuda' if torch.cuda.is_available() else 'cpu'
344 |
345 | if args.net == 'vgg16':
346 | net = models.vgg16(pretrained=True)
347 | elif args.net == 'resnet101':
348 | net = models.resnet101(pretrained=True)
349 | else:
350 | raise ValueError('Network architecture is not defined!')
351 |
352 | # Switch to evaluation mode
353 | net.eval()
354 |
355 | smoothing = Smoothing(sig=args.sigma, type=args.type).to(device)
356 |
357 | # read the input image
358 | im_orig = Image.open(args.img)
359 |
360 | im = transforms.Compose([
361 | transforms.Scale(224),
362 | transforms.CenterCrop(224),
363 | transforms.ToTensor(), transforms.Normalize(mean=mean, std=std)])(im_orig)
364 | im = im.to(device)
365 |
366 | x_adv, loop_i, total_clip_iters, label_nat, label_adv = smoothfool(net, im, alpha_fac=alpha_fac,
367 | dp_lambda=dp_lambda,
368 | smoothing_func=smoothing,
369 | smooth_clipping=args.smoothclip,
370 | device=device)
371 |
372 | print("\nPredicted label for input sample: " + pred_cls(label_nat))
373 | print("Predicted label for adv sample: " + pred_cls(label_adv))
374 |
375 | # visualize the results
376 |
377 | from scipy.misc import imsave
378 |
379 | imsave('adv' + str(args.sigma) + '.png', tensor2img(x_adv))
380 | imsave('pert' + str(args.sigma) + '.png', tensor2img(x_adv-im))
381 | imsave('orig'+ '.png', tensor2img(im))
382 |
383 |
384 | plt.subplot(1, 3, 1)
385 | plt.title('Input sample')
386 | plt.imshow(tensor2img(im))
387 | plt.subplot(1, 3, 2)
388 | plt.title('Adv sample')
389 | plt.imshow(tensor2img(x_adv))
390 | plt.subplot(1, 3, 3)
391 | plt.title('Adv perturbation')
392 | plt.imshow(tensor2img(x_adv - im))
393 | plt.show()
394 |
395 |
396 |
--------------------------------------------------------------------------------
/synset_words.txt:
--------------------------------------------------------------------------------
1 | n01440764 tench, Tinca tinca
2 | n01443537 goldfish, Carassius auratus
3 | n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
4 | n01491361 tiger shark, Galeocerdo cuvieri
5 | n01494475 hammerhead, hammerhead shark
6 | n01496331 electric ray, crampfish, numbfish, torpedo
7 | n01498041 stingray
8 | n01514668 cock
9 | n01514859 hen
10 | n01518878 ostrich, Struthio camelus
11 | n01530575 brambling, Fringilla montifringilla
12 | n01531178 goldfinch, Carduelis carduelis
13 | n01532829 house finch, linnet, Carpodacus mexicanus
14 | n01534433 junco, snowbird
15 | n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea
16 | n01558993 robin, American robin, Turdus migratorius
17 | n01560419 bulbul
18 | n01580077 jay
19 | n01582220 magpie
20 | n01592084 chickadee
21 | n01601694 water ouzel, dipper
22 | n01608432 kite
23 | n01614925 bald eagle, American eagle, Haliaeetus leucocephalus
24 | n01616318 vulture
25 | n01622779 great grey owl, great gray owl, Strix nebulosa
26 | n01629819 European fire salamander, Salamandra salamandra
27 | n01630670 common newt, Triturus vulgaris
28 | n01631663 eft
29 | n01632458 spotted salamander, Ambystoma maculatum
30 | n01632777 axolotl, mud puppy, Ambystoma mexicanum
31 | n01641577 bullfrog, Rana catesbeiana
32 | n01644373 tree frog, tree-frog
33 | n01644900 tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
34 | n01664065 loggerhead, loggerhead turtle, Caretta caretta
35 | n01665541 leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
36 | n01667114 mud turtle
37 | n01667778 terrapin
38 | n01669191 box turtle, box tortoise
39 | n01675722 banded gecko
40 | n01677366 common iguana, iguana, Iguana iguana
41 | n01682714 American chameleon, anole, Anolis carolinensis
42 | n01685808 whiptail, whiptail lizard
43 | n01687978 agama
44 | n01688243 frilled lizard, Chlamydosaurus kingi
45 | n01689811 alligator lizard
46 | n01692333 Gila monster, Heloderma suspectum
47 | n01693334 green lizard, Lacerta viridis
48 | n01694178 African chameleon, Chamaeleo chamaeleon
49 | n01695060 Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
50 | n01697457 African crocodile, Nile crocodile, Crocodylus niloticus
51 | n01698640 American alligator, Alligator mississipiensis
52 | n01704323 triceratops
53 | n01728572 thunder snake, worm snake, Carphophis amoenus
54 | n01728920 ringneck snake, ring-necked snake, ring snake
55 | n01729322 hognose snake, puff adder, sand viper
56 | n01729977 green snake, grass snake
57 | n01734418 king snake, kingsnake
58 | n01735189 garter snake, grass snake
59 | n01737021 water snake
60 | n01739381 vine snake
61 | n01740131 night snake, Hypsiglena torquata
62 | n01742172 boa constrictor, Constrictor constrictor
63 | n01744401 rock python, rock snake, Python sebae
64 | n01748264 Indian cobra, Naja naja
65 | n01749939 green mamba
66 | n01751748 sea snake
67 | n01753488 horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
68 | n01755581 diamondback, diamondback rattlesnake, Crotalus adamanteus
69 | n01756291 sidewinder, horned rattlesnake, Crotalus cerastes
70 | n01768244 trilobite
71 | n01770081 harvestman, daddy longlegs, Phalangium opilio
72 | n01770393 scorpion
73 | n01773157 black and gold garden spider, Argiope aurantia
74 | n01773549 barn spider, Araneus cavaticus
75 | n01773797 garden spider, Aranea diademata
76 | n01774384 black widow, Latrodectus mactans
77 | n01774750 tarantula
78 | n01775062 wolf spider, hunting spider
79 | n01776313 tick
80 | n01784675 centipede
81 | n01795545 black grouse
82 | n01796340 ptarmigan
83 | n01797886 ruffed grouse, partridge, Bonasa umbellus
84 | n01798484 prairie chicken, prairie grouse, prairie fowl
85 | n01806143 peacock
86 | n01806567 quail
87 | n01807496 partridge
88 | n01817953 African grey, African gray, Psittacus erithacus
89 | n01818515 macaw
90 | n01819313 sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
91 | n01820546 lorikeet
92 | n01824575 coucal
93 | n01828970 bee eater
94 | n01829413 hornbill
95 | n01833805 hummingbird
96 | n01843065 jacamar
97 | n01843383 toucan
98 | n01847000 drake
99 | n01855032 red-breasted merganser, Mergus serrator
100 | n01855672 goose
101 | n01860187 black swan, Cygnus atratus
102 | n01871265 tusker
103 | n01872401 echidna, spiny anteater, anteater
104 | n01873310 platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
105 | n01877812 wallaby, brush kangaroo
106 | n01882714 koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
107 | n01883070 wombat
108 | n01910747 jellyfish
109 | n01914609 sea anemone, anemone
110 | n01917289 brain coral
111 | n01924916 flatworm, platyhelminth
112 | n01930112 nematode, nematode worm, roundworm
113 | n01943899 conch
114 | n01944390 snail
115 | n01945685 slug
116 | n01950731 sea slug, nudibranch
117 | n01955084 chiton, coat-of-mail shell, sea cradle, polyplacophore
118 | n01968897 chambered nautilus, pearly nautilus, nautilus
119 | n01978287 Dungeness crab, Cancer magister
120 | n01978455 rock crab, Cancer irroratus
121 | n01980166 fiddler crab
122 | n01981276 king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
123 | n01983481 American lobster, Northern lobster, Maine lobster, Homarus americanus
124 | n01984695 spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
125 | n01985128 crayfish, crawfish, crawdad, crawdaddy
126 | n01986214 hermit crab
127 | n01990800 isopod
128 | n02002556 white stork, Ciconia ciconia
129 | n02002724 black stork, Ciconia nigra
130 | n02006656 spoonbill
131 | n02007558 flamingo
132 | n02009229 little blue heron, Egretta caerulea
133 | n02009912 American egret, great white heron, Egretta albus
134 | n02011460 bittern
135 | n02012849 crane
136 | n02013706 limpkin, Aramus pictus
137 | n02017213 European gallinule, Porphyrio porphyrio
138 | n02018207 American coot, marsh hen, mud hen, water hen, Fulica americana
139 | n02018795 bustard
140 | n02025239 ruddy turnstone, Arenaria interpres
141 | n02027492 red-backed sandpiper, dunlin, Erolia alpina
142 | n02028035 redshank, Tringa totanus
143 | n02033041 dowitcher
144 | n02037110 oystercatcher, oyster catcher
145 | n02051845 pelican
146 | n02056570 king penguin, Aptenodytes patagonica
147 | n02058221 albatross, mollymawk
148 | n02066245 grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
149 | n02071294 killer whale, killer, orca, grampus, sea wolf, Orcinus orca
150 | n02074367 dugong, Dugong dugon
151 | n02077923 sea lion
152 | n02085620 Chihuahua
153 | n02085782 Japanese spaniel
154 | n02085936 Maltese dog, Maltese terrier, Maltese
155 | n02086079 Pekinese, Pekingese, Peke
156 | n02086240 Shih-Tzu
157 | n02086646 Blenheim spaniel
158 | n02086910 papillon
159 | n02087046 toy terrier
160 | n02087394 Rhodesian ridgeback
161 | n02088094 Afghan hound, Afghan
162 | n02088238 basset, basset hound
163 | n02088364 beagle
164 | n02088466 bloodhound, sleuthhound
165 | n02088632 bluetick
166 | n02089078 black-and-tan coonhound
167 | n02089867 Walker hound, Walker foxhound
168 | n02089973 English foxhound
169 | n02090379 redbone
170 | n02090622 borzoi, Russian wolfhound
171 | n02090721 Irish wolfhound
172 | n02091032 Italian greyhound
173 | n02091134 whippet
174 | n02091244 Ibizan hound, Ibizan Podenco
175 | n02091467 Norwegian elkhound, elkhound
176 | n02091635 otterhound, otter hound
177 | n02091831 Saluki, gazelle hound
178 | n02092002 Scottish deerhound, deerhound
179 | n02092339 Weimaraner
180 | n02093256 Staffordshire bullterrier, Staffordshire bull terrier
181 | n02093428 American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
182 | n02093647 Bedlington terrier
183 | n02093754 Border terrier
184 | n02093859 Kerry blue terrier
185 | n02093991 Irish terrier
186 | n02094114 Norfolk terrier
187 | n02094258 Norwich terrier
188 | n02094433 Yorkshire terrier
189 | n02095314 wire-haired fox terrier
190 | n02095570 Lakeland terrier
191 | n02095889 Sealyham terrier, Sealyham
192 | n02096051 Airedale, Airedale terrier
193 | n02096177 cairn, cairn terrier
194 | n02096294 Australian terrier
195 | n02096437 Dandie Dinmont, Dandie Dinmont terrier
196 | n02096585 Boston bull, Boston terrier
197 | n02097047 miniature schnauzer
198 | n02097130 giant schnauzer
199 | n02097209 standard schnauzer
200 | n02097298 Scotch terrier, Scottish terrier, Scottie
201 | n02097474 Tibetan terrier, chrysanthemum dog
202 | n02097658 silky terrier, Sydney silky
203 | n02098105 soft-coated wheaten terrier
204 | n02098286 West Highland white terrier
205 | n02098413 Lhasa, Lhasa apso
206 | n02099267 flat-coated retriever
207 | n02099429 curly-coated retriever
208 | n02099601 golden retriever
209 | n02099712 Labrador retriever
210 | n02099849 Chesapeake Bay retriever
211 | n02100236 German short-haired pointer
212 | n02100583 vizsla, Hungarian pointer
213 | n02100735 English setter
214 | n02100877 Irish setter, red setter
215 | n02101006 Gordon setter
216 | n02101388 Brittany spaniel
217 | n02101556 clumber, clumber spaniel
218 | n02102040 English springer, English springer spaniel
219 | n02102177 Welsh springer spaniel
220 | n02102318 cocker spaniel, English cocker spaniel, cocker
221 | n02102480 Sussex spaniel
222 | n02102973 Irish water spaniel
223 | n02104029 kuvasz
224 | n02104365 schipperke
225 | n02105056 groenendael
226 | n02105162 malinois
227 | n02105251 briard
228 | n02105412 kelpie
229 | n02105505 komondor
230 | n02105641 Old English sheepdog, bobtail
231 | n02105855 Shetland sheepdog, Shetland sheep dog, Shetland
232 | n02106030 collie
233 | n02106166 Border collie
234 | n02106382 Bouvier des Flandres, Bouviers des Flandres
235 | n02106550 Rottweiler
236 | n02106662 German shepherd, German shepherd dog, German police dog, alsatian
237 | n02107142 Doberman, Doberman pinscher
238 | n02107312 miniature pinscher
239 | n02107574 Greater Swiss Mountain dog
240 | n02107683 Bernese mountain dog
241 | n02107908 Appenzeller
242 | n02108000 EntleBucher``^
243 | n02108089 boxer`
244 | n02108422 bull mastif
245 | n02108551 Tibetan mastiff
246 | n02108915 French bulldog
247 | n02109047 Great Dane
248 | n02109525 Saint Bernard, St Bernard
249 | n02109961 Eskimo dog, husky
250 | n02110063 malamute, malemute, Alaskan malamute
251 | n02110185 Siberian husky
252 | n02110341 dalmatian, coach dog, carriage dog
253 | n02110627 affenpinscher, monkey pinscher, monkey dog
254 | n02110806 basenji
255 | n02110958 pug, pug-dog
256 | n02111129 Leonberg
257 | n02111277 Newfoundland, Newfoundland dog
258 | n02111500 Great Pyrenees
259 | n02111889 Samoyed, Samoyede
260 | n02112018 Pomeranian
261 | n02112137 chow, chow chow
262 | n02112350 keeshond
263 | n02112706 Brabancon griffon
264 | n02113023 Pembroke, Pembroke Welsh corgi
265 | n02113186 Cardigan, Cardigan Welsh corgi
266 | n02113624 toy poodle
267 | n02113712 miniature poodle
268 | n02113799 standard poodle
269 | n02113978 Mexican hairless
270 | n02114367 timber wolf, grey wolf, gray wolf, Canis lupus
271 | n02114548 white wolf, Arctic wolf, Canis lupus tundrarum
272 | n02114712 red wolf, maned wolf, Canis rufus, Canis niger
273 | n02114855 coyote, prairie wolf, brush wolf, Canis latrans
274 | n02115641 dingo, warrigal, warragal, Canis dingo
275 | n02115913 dhole, Cuon alpinus
276 | n02116738 African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
277 | n02117135 hyena, hyaena
278 | n02119022 red fox, Vulpes vulpes
279 | n02119789 kit fox, Vulpes macrotis
280 | n02120079 Arctic fox, white fox, Alopex lagopus
281 | n02120505 grey fox, gray fox, Urocyon cinereoargenteus
282 | n02123045 tabby, tabby cat
283 | n02123159 tiger cat
284 | n02123394 Persian cat
285 | n02123597 Siamese cat, Siamese
286 | n02124075 Egyptian cat
287 | n02125311 cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
288 | n02127052 lynx, catamount
289 | n02128385 leopard, Panthera pardus
290 | n02128757 snow leopard, ounce, Panthera uncia
291 | n02128925 jaguar, panther, Panthera onca, Felis onca
292 | n02129165 lion, king of beasts, Panthera leo
293 | n02129604 tiger, Panthera tigris
294 | n02130308 cheetah, chetah, Acinonyx jubatus
295 | n02132136 brown bear, bruin, Ursus arctos
296 | n02133161 American black bear, black bear, Ursus americanus, Euarctos americanus
297 | n02134084 ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
298 | n02134418 sloth bear, Melursus ursinus, Ursus ursinus
299 | n02137549 mongoose
300 | n02138441 meerkat, mierkat
301 | n02165105 tiger beetle
302 | n02165456 ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
303 | n02167151 ground beetle, carabid beetle
304 | n02168699 long-horned beetle, longicorn, longicorn beetle
305 | n02169497 leaf beetle, chrysomelid
306 | n02172182 dung beetle
307 | n02174001 rhinoceros beetle
308 | n02177972 weevil
309 | n02190166 fly
310 | n02206856 bee
311 | n02219486 ant, emmet, pismire
312 | n02226429 grasshopper, hopper
313 | n02229544 cricket
314 | n02231487 walking stick, walkingstick, stick insect
315 | n02233338 cockroach, roach
316 | n02236044 mantis, mantid
317 | n02256656 cicada, cicala
318 | n02259212 leafhopper
319 | n02264363 lacewing, lacewing fly
320 | n02268443 dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
321 | n02268853 damselfly
322 | n02276258 admiral
323 | n02277742 ringlet, ringlet butterfly
324 | n02279972 monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
325 | n02280649 cabbage butterfly
326 | n02281406 sulphur butterfly, sulfur butterfly
327 | n02281787 lycaenid, lycaenid butterfly
328 | n02317335 starfish, sea star
329 | n02319095 sea urchin
330 | n02321529 sea cucumber, holothurian
331 | n02325366 wood rabbit, cottontail, cottontail rabbit
332 | n02326432 hare
333 | n02328150 Angora, Angora rabbit
334 | n02342885 hamster
335 | n02346627 porcupine, hedgehog
336 | n02356798 fox squirrel, eastern fox squirrel, Sciurus niger
337 | n02361337 marmot
338 | n02363005 beaver
339 | n02364673 guinea pig, Cavia cobaya
340 | n02389026 sorrel
341 | n02391049 zebra
342 | n02395406 hog, pig, grunter, squealer, Sus scrofa
343 | n02396427 wild boar, boar, Sus scrofa
344 | n02397096 warthog
345 | n02398521 hippopotamus, hippo, river horse, Hippopotamus amphibius
346 | n02403003 ox
347 | n02408429 water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
348 | n02410509 bison
349 | n02412080 ram, tup
350 | n02415577 bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
351 | n02417914 ibex, Capra ibex
352 | n02422106 hartebeest
353 | n02422699 impala, Aepyceros melampus
354 | n02423022 gazelle
355 | n02437312 Arabian camel, dromedary, Camelus dromedarius
356 | n02437616 llama
357 | n02441942 weasel
358 | n02442845 mink
359 | n02443114 polecat, fitch, foulmart, foumart, Mustela putorius
360 | n02443484 black-footed ferret, ferret, Mustela nigripes
361 | n02444819 otter
362 | n02445715 skunk, polecat, wood pussy
363 | n02447366 badger
364 | n02454379 armadillo
365 | n02457408 three-toed sloth, ai, Bradypus tridactylus
366 | n02480495 orangutan, orang, orangutang, Pongo pygmaeus
367 | n02480855 gorilla, Gorilla gorilla
368 | n02481823 chimpanzee, chimp, Pan troglodytes
369 | n02483362 gibbon, Hylobates lar
370 | n02483708 siamang, Hylobates syndactylus, Symphalangus syndactylus
371 | n02484975 guenon, guenon monkey
372 | n02486261 patas, hussar monkey, Erythrocebus patas
373 | n02486410 baboon
374 | n02487347 macaque
375 | n02488291 langur
376 | n02488702 colobus, colobus monkey
377 | n02489166 proboscis monkey, Nasalis larvatus
378 | n02490219 marmoset
379 | n02492035 capuchin, ringtail, Cebus capucinus
380 | n02492660 howler monkey, howler
381 | n02493509 titi, titi monkey
382 | n02493793 spider monkey, Ateles geoffroyi
383 | n02494079 squirrel monkey, Saimiri sciureus
384 | n02497673 Madagascar cat, ring-tailed lemur, Lemur catta
385 | n02500267 indri, indris, Indri indri, Indri brevicaudatus
386 | n02504013 Indian elephant, Elephas maximus
387 | n02504458 African elephant, Loxodonta africana
388 | n02509815 lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
389 | n02510455 giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
390 | n02514041 barracouta, snoek
391 | n02526121 eel
392 | n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
393 | n02606052 rock beauty, Holocanthus tricolor
394 | n02607072 anemone fish
395 | n02640242 sturgeon
396 | n02641379 gar, garfish, garpike, billfish, Lepisosteus osseus
397 | n02643566 lionfish
398 | n02655020 puffer, pufferfish, blowfish, globefish
399 | n02666196 abacus
400 | n02667093 abaya
401 | n02669723 academic gown, academic robe, judge's robe
402 | n02672831 accordion, piano accordion, squeeze box
403 | n02676566 acoustic guitar
404 | n02687172 aircraft carrier, carrier, flattop, attack aircraft carrier
405 | n02690373 airliner
406 | n02692877 airship, dirigible
407 | n02699494 altar
408 | n02701002 ambulance
409 | n02704792 amphibian, amphibious vehicle
410 | n02708093 analog clock
411 | n02727426 apiary, bee house
412 | n02730930 apron
413 | n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
414 | n02749479 assault rifle, assault gun
415 | n02769748 backpack, back pack, knapsack, packsack, rucksack, haversack
416 | n02776631 bakery, bakeshop, bakehouse
417 | n02777292 balance beam, beam
418 | n02782093 balloon
419 | n02783161 ballpoint, ballpoint pen, ballpen, Biro
420 | n02786058 Band Aid
421 | n02787622 banjo
422 | n02788148 bannister, banister, balustrade, balusters, handrail
423 | n02790996 barbell
424 | n02791124 barber chair
425 | n02791270 barbershop
426 | n02793495 barn
427 | n02794156 barometer
428 | n02795169 barrel, cask
429 | n02797295 barrow, garden cart, lawn cart, wheelbarrow
430 | n02799071 baseball
431 | n02802426 basketball
432 | n02804414 bassinet
433 | n02804610 bassoon
434 | n02807133 bathing cap, swimming cap
435 | n02808304 bath towel
436 | n02808440 bathtub, bathing tub, bath, tub
437 | n02814533 beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
438 | n02814860 beacon, lighthouse, beacon light, pharos
439 | n02815834 beaker
440 | n02817516 bearskin, busby, shako
441 | n02823428 beer bottle
442 | n02823750 beer glass
443 | n02825657 bell cote, bell cot
444 | n02834397 bib
445 | n02835271 bicycle-built-for-two, tandem bicycle, tandem
446 | n02837789 bikini, two-piece
447 | n02840245 binder, ring-binder
448 | n02841315 binoculars, field glasses, opera glasses
449 | n02843684 birdhouse
450 | n02859443 boathouse
451 | n02860847 bobsled, bobsleigh, bob
452 | n02865351 bolo tie, bolo, bola tie, bola
453 | n02869837 bonnet, poke bonnet
454 | n02870880 bookcase
455 | n02871525 bookshop, bookstore, bookstall
456 | n02877765 bottlecap
457 | n02879718 bow
458 | n02883205 bow tie, bow-tie, bowtie
459 | n02892201 brass, memorial tablet, plaque
460 | n02892767 brassiere, bra, bandeau
461 | n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty
462 | n02895154 breastplate, aegis, egis
463 | n02906734 broom
464 | n02909870 bucket, pail
465 | n02910353 buckle
466 | n02916936 bulletproof vest
467 | n02917067 bullet train, bullet
468 | n02927161 butcher shop, meat market
469 | n02930766 cab, hack, taxi, taxicab
470 | n02939185 caldron, cauldron
471 | n02948072 candle, taper, wax light
472 | n02950826 cannon
473 | n02951358 canoe
474 | n02951585 can opener, tin opener
475 | n02963159 cardigan
476 | n02965783 car mirror
477 | n02966193 carousel, carrousel, merry-go-round, roundabout, whirligig
478 | n02966687 carpenter's kit, tool kit
479 | n02971356 carton
480 | n02974003 car wheel
481 | n02977058 cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
482 | n02978881 cassette
483 | n02979186 cassette player
484 | n02980441 castle
485 | n02981792 catamaran
486 | n02988304 CD player
487 | n02992211 cello, violoncello
488 | n02992529 cellular telephone, cellular phone, cellphone, cell, mobile phone
489 | n02999410 chain
490 | n03000134 chainlink fence
491 | n03000247 chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
492 | n03000684 chain saw, chainsaw
493 | n03014705 chest
494 | n03016953 chiffonier, commode
495 | n03017168 chime, bell, gong
496 | n03018349 china cabinet, china closet
497 | n03026506 Christmas stocking
498 | n03028079 church, church building
499 | n03032252 cinema, movie theater, movie theatre, movie house, picture palace
500 | n03041632 cleaver, meat cleaver, chopper
501 | n03042490 cliff dwelling
502 | n03045698 cloak
503 | n03047690 clog, geta, patten, sabot
504 | n03062245 cocktail shaker
505 | n03063599 coffee mug
506 | n03063689 coffeepot
507 | n03065424 coil, spiral, volute, whorl, helix
508 | n03075370 combination lock
509 | n03085013 computer keyboard, keypad
510 | n03089624 confectionery, confectionary, candy store
511 | n03095699 container ship, containership, container vessel
512 | n03100240 convertible
513 | n03109150 corkscrew, bottle screw
514 | n03110669 cornet, horn, trumpet, trump
515 | n03124043 cowboy boot
516 | n03124170 cowboy hat, ten-gallon hat
517 | n03125729 cradle
518 | n03126707 crane
519 | n03127747 crash helmet
520 | n03127925 crate
521 | n03131574 crib, cot
522 | n03133878 Crock Pot
523 | n03134739 croquet ball
524 | n03141823 crutch
525 | n03146219 cuirass
526 | n03160309 dam, dike, dyke
527 | n03179701 desk
528 | n03180011 desktop computer
529 | n03187595 dial telephone, dial phone
530 | n03188531 diaper, nappy, napkin
531 | n03196217 digital clock
532 | n03197337 digital watch
533 | n03201208 dining table, board
534 | n03207743 dishrag, dishcloth
535 | n03207941 dishwasher, dish washer, dishwashing machine
536 | n03208938 disk brake, disc brake
537 | n03216828 dock, dockage, docking facility
538 | n03218198 dogsled, dog sled, dog sleigh
539 | n03220513 dome
540 | n03223299 doormat, welcome mat
541 | n03240683 drilling platform, offshore rig
542 | n03249569 drum, membranophone, tympan
543 | n03250847 drumstick
544 | n03255030 dumbbell
545 | n03259280 Dutch oven
546 | n03271574 electric fan, blower
547 | n03272010 electric guitar
548 | n03272562 electric locomotive
549 | n03290653 entertainment center
550 | n03291819 envelope
551 | n03297495 espresso maker
552 | n03314780 face powder
553 | n03325584 feather boa, boa
554 | n03337140 file, file cabinet, filing cabinet
555 | n03344393 fireboat
556 | n03345487 fire engine, fire truck
557 | n03347037 fire screen, fireguard
558 | n03355925 flagpole, flagstaff
559 | n03372029 flute, transverse flute
560 | n03376595 folding chair
561 | n03379051 football helmet
562 | n03384352 forklift
563 | n03388043 fountain
564 | n03388183 fountain pen
565 | n03388549 four-poster
566 | n03393912 freight car
567 | n03394916 French horn, horn
568 | n03400231 frying pan, frypan, skillet
569 | n03404251 fur coat
570 | n03417042 garbage truck, dustcart
571 | n03424325 gasmask, respirator, gas helmet
572 | n03425413 gas pump, gasoline pump, petrol pump, island dispenser
573 | n03443371 goblet
574 | n03444034 go-kart
575 | n03445777 golf ball
576 | n03445924 golfcart, golf cart
577 | n03447447 gondola
578 | n03447721 gong, tam-tam
579 | n03450230 gown
580 | n03452741 grand piano, grand
581 | n03457902 greenhouse, nursery, glasshouse
582 | n03459775 grille, radiator grille
583 | n03461385 grocery store, grocery, food market, market
584 | n03467068 guillotine
585 | n03476684 hair slide
586 | n03476991 hair spray
587 | n03478589 half track
588 | n03481172 hammer
589 | n03482405 hamper
590 | n03483316 hand blower, blow dryer, blow drier, hair dryer, hair drier
591 | n03485407 hand-held computer, hand-held microcomputer
592 | n03485794 handkerchief, hankie, hanky, hankey
593 | n03492542 hard disc, hard disk, fixed disk
594 | n03494278 harmonica, mouth organ, harp, mouth harp
595 | n03495258 harp
596 | n03496892 harvester, reaper
597 | n03498962 hatchet
598 | n03527444 holster
599 | n03529860 home theater, home theatre
600 | n03530642 honeycomb
601 | n03532672 hook, claw
602 | n03534580 hoopskirt, crinoline
603 | n03535780 horizontal bar, high bar
604 | n03538406 horse cart, horse-cart
605 | n03544143 hourglass
606 | n03584254 iPod
607 | n03584829 iron, smoothing iron
608 | n03590841 jack-o'-lantern
609 | n03594734 jean, blue jean, denim
610 | n03594945 jeep, landrover
611 | n03595614 jersey, T-shirt, tee shirt
612 | n03598930 jigsaw puzzle
613 | n03599486 jinrikisha, ricksha, rickshaw
614 | n03602883 joystick
615 | n03617480 kimono
616 | n03623198 knee pad
617 | n03627232 knot
618 | n03630383 lab coat, laboratory coat
619 | n03633091 ladle
620 | n03637318 lampshade, lamp shade
621 | n03642806 laptop, laptop computer
622 | n03649909 lawn mower, mower
623 | n03657121 lens cap, lens cover
624 | n03658185 letter opener, paper knife, paperknife
625 | n03661043 library
626 | n03662601 lifeboat
627 | n03666591 lighter, light, igniter, ignitor
628 | n03670208 limousine, limo
629 | n03673027 liner, ocean liner
630 | n03676483 lipstick, lip rouge
631 | n03680355 Loafer
632 | n03690938 lotion
633 | n03691459 loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
634 | n03692522 loupe, jeweler's loupe
635 | n03697007 lumbermill, sawmill
636 | n03706229 magnetic compass
637 | n03709823 mailbag, postbag
638 | n03710193 mailbox, letter box
639 | n03710637 maillot
640 | n03710721 maillot, tank suit
641 | n03717622 manhole cover
642 | n03720891 maraca
643 | n03721384 marimba, xylophone
644 | n03724870 mask
645 | n03729826 matchstick
646 | n03733131 maypole
647 | n03733281 maze, labyrinth
648 | n03733805 measuring cup
649 | n03742115 medicine chest, medicine cabinet
650 | n03743016 megalith, megalithic structure
651 | n03759954 microphone, mike
652 | n03761084 microwave, microwave oven
653 | n03763968 military uniform
654 | n03764736 milk can
655 | n03769881 minibus
656 | n03770439 miniskirt, mini
657 | n03770679 minivan
658 | n03773504 missile
659 | n03775071 mitten
660 | n03775546 mixing bowl
661 | n03776460 mobile home, manufactured home
662 | n03777568 Model T
663 | n03777754 modem
664 | n03781244 monastery
665 | n03782006 monitor
666 | n03785016 moped
667 | n03786901 mortar
668 | n03787032 mortarboard
669 | n03788195 mosque
670 | n03788365 mosquito net
671 | n03791053 motor scooter, scooter
672 | n03792782 mountain bike, all-terrain bike, off-roader
673 | n03792972 mountain tent
674 | n03793489 mouse, computer mouse
675 | n03794056 mousetrap
676 | n03796401 moving van
677 | n03803284 muzzle
678 | n03804744 nail
679 | n03814639 neck brace
680 | n03814906 necklace
681 | n03825788 nipple
682 | n03832673 notebook, notebook computer
683 | n03837869 obelisk
684 | n03838899 oboe, hautboy, hautbois
685 | n03840681 ocarina, sweet potato
686 | n03841143 odometer, hodometer, mileometer, milometer
687 | n03843555 oil filter
688 | n03854065 organ, pipe organ
689 | n03857828 oscilloscope, scope, cathode-ray oscilloscope, CRO
690 | n03866082 overskirt
691 | n03868242 oxcart
692 | n03868863 oxygen mask
693 | n03871628 packet
694 | n03873416 paddle, boat paddle
695 | n03874293 paddlewheel, paddle wheel
696 | n03874599 padlock
697 | n03876231 paintbrush
698 | n03877472 pajama, pyjama, pj's, jammies
699 | n03877845 palace
700 | n03884397 panpipe, pandean pipe, syrinx
701 | n03887697 paper towel
702 | n03888257 parachute, chute
703 | n03888605 parallel bars, bars
704 | n03891251 park bench
705 | n03891332 parking meter
706 | n03895866 passenger car, coach, carriage
707 | n03899768 patio, terrace
708 | n03902125 pay-phone, pay-station
709 | n03903868 pedestal, plinth, footstall
710 | n03908618 pencil box, pencil case
711 | n03908714 pencil sharpener
712 | n03916031 perfume, essence
713 | n03920288 Petri dish
714 | n03924679 photocopier
715 | n03929660 pick, plectrum, plectron
716 | n03929855 pickelhaube
717 | n03930313 picket fence, paling
718 | n03930630 pickup, pickup truck
719 | n03933933 pier
720 | n03935335 piggy bank, penny bank
721 | n03937543 pill bottle
722 | n03938244 pillow
723 | n03942813 ping-pong ball
724 | n03944341 pinwheel
725 | n03947888 pirate, pirate ship
726 | n03950228 pitcher, ewer
727 | n03954731 plane, carpenter's plane, woodworking plane
728 | n03956157 planetarium
729 | n03958227 plastic bag
730 | n03961711 plate rack
731 | n03967562 plow, plough
732 | n03970156 plunger, plumber's helper
733 | n03976467 Polaroid camera, Polaroid Land camera
734 | n03976657 pole
735 | n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
736 | n03980874 poncho
737 | n03982430 pool table, billiard table, snooker table
738 | n03983396 pop bottle, soda bottle
739 | n03991062 pot, flowerpot
740 | n03992509 potter's wheel
741 | n03995372 power drill
742 | n03998194 prayer rug, prayer mat
743 | n04004767 printer
744 | n04005630 prison, prison house
745 | n04008634 projectile, missile
746 | n04009552 projector
747 | n04019541 puck, hockey puck
748 | n04023962 punching bag, punch bag, punching ball, punchball
749 | n04026417 purse
750 | n04033901 quill, quill pen
751 | n04033995 quilt, comforter, comfort, puff
752 | n04037443 racer, race car, racing car
753 | n04039381 racket, racquet
754 | n04040759 radiator
755 | n04041544 radio, wireless
756 | n04044716 radio telescope, radio reflector
757 | n04049303 rain barrel
758 | n04065272 recreational vehicle, RV, R.V.
759 | n04067472 reel
760 | n04069434 reflex camera
761 | n04070727 refrigerator, icebox
762 | n04074963 remote control, remote
763 | n04081281 restaurant, eating house, eating place, eatery
764 | n04086273 revolver, six-gun, six-shooter
765 | n04090263 rifle
766 | n04099969 rocking chair, rocker
767 | n04111531 rotisserie
768 | n04116512 rubber eraser, rubber, pencil eraser
769 | n04118538 rugby ball
770 | n04118776 rule, ruler
771 | n04120489 running shoe
772 | n04125021 safe
773 | n04127249 safety pin
774 | n04131690 saltshaker, salt shaker
775 | n04133789 sandal
776 | n04136333 sarong
777 | n04141076 sax, saxophone
778 | n04141327 scabbard
779 | n04141975 scale, weighing machine
780 | n04146614 school bus
781 | n04147183 schooner
782 | n04149813 scoreboard
783 | n04152593 screen, CRT screen
784 | n04153751 screw
785 | n04154565 screwdriver
786 | n04162706 seat belt, seatbelt
787 | n04179913 sewing machine
788 | n04192698 shield, buckler
789 | n04200800 shoe shop, shoe-shop, shoe store
790 | n04201297 shoji
791 | n04204238 shopping basket
792 | n04204347 shopping cart
793 | n04208210 shovel
794 | n04209133 shower cap
795 | n04209239 shower curtain
796 | n04228054 ski
797 | n04229816 ski mask
798 | n04235860 sleeping bag
799 | n04238763 slide rule, slipstick
800 | n04239074 sliding door
801 | n04243546 slot, one-armed bandit
802 | n04251144 snorkel
803 | n04252077 snowmobile
804 | n04252225 snowplow, snowplough
805 | n04254120 soap dispenser
806 | n04254680 soccer ball
807 | n04254777 sock
808 | n04258138 solar dish, solar collector, solar furnace
809 | n04259630 sombrero
810 | n04263257 soup bowl
811 | n04264628 space bar
812 | n04265275 space heater
813 | n04266014 space shuttle
814 | n04270147 spatula
815 | n04273569 speedboat
816 | n04275548 spider web, spider's web
817 | n04277352 spindle
818 | n04285008 sports car, sport car
819 | n04286575 spotlight, spot
820 | n04296562 stage
821 | n04310018 steam locomotive
822 | n04311004 steel arch bridge
823 | n04311174 steel drum
824 | n04317175 stethoscope
825 | n04325704 stole
826 | n04326547 stone wall
827 | n04328186 stopwatch, stop watch
828 | n04330267 stove
829 | n04332243 strainer
830 | n04335435 streetcar, tram, tramcar, trolley, trolley car
831 | n04336792 stretcher
832 | n04344873 studio couch, day bed
833 | n04346328 stupa, tope
834 | n04347754 submarine, pigboat, sub, U-boat
835 | n04350905 suit, suit of clothes
836 | n04355338 sundial
837 | n04355933 sunglass
838 | n04356056 sunglasses, dark glasses, shades
839 | n04357314 sunscreen, sunblock, sun blocker
840 | n04366367 suspension bridge
841 | n04367480 swab, swob, mop
842 | n04370456 sweatshirt
843 | n04371430 swimming trunks, bathing trunks
844 | n04371774 swing
845 | n04372370 switch, electric switch, electrical switch
846 | n04376876 syringe
847 | n04380533 table lamp
848 | n04389033 tank, army tank, armored combat vehicle, armoured combat vehicle
849 | n04392985 tape player
850 | n04398044 teapot
851 | n04399382 teddy, teddy bear
852 | n04404412 television, television system
853 | n04409515 tennis ball
854 | n04417672 thatch, thatched roof
855 | n04418357 theater curtain, theatre curtain
856 | n04423845 thimble
857 | n04428191 thresher, thrasher, threshing machine
858 | n04429376 throne
859 | n04435653 tile roof
860 | n04442312 toaster
861 | n04443257 tobacco shop, tobacconist shop, tobacconist
862 | n04447861 toilet seat
863 | n04456115 torch
864 | n04458633 totem pole
865 | n04461696 tow truck, tow car, wrecker
866 | n04462240 toyshop
867 | n04465501 tractor
868 | n04467665 trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
869 | n04476259 tray
870 | n04479046 trench coat
871 | n04482393 tricycle, trike, velocipede
872 | n04483307 trimaran
873 | n04485082 tripod
874 | n04486054 triumphal arch
875 | n04487081 trolleybus, trolley coach, trackless trolley
876 | n04487394 trombone
877 | n04493381 tub, vat
878 | n04501370 turnstile
879 | n04505470 typewriter keyboard
880 | n04507155 umbrella
881 | n04509417 unicycle, monocycle
882 | n04515003 upright, upright piano
883 | n04517823 vacuum, vacuum cleaner
884 | n04522168 vase
885 | n04523525 vault
886 | n04525038 velvet
887 | n04525305 vending machine
888 | n04532106 vestment
889 | n04532670 viaduct
890 | n04536866 violin, fiddle
891 | n04540053 volleyball
892 | n04542943 waffle iron
893 | n04548280 wall clock
894 | n04548362 wallet, billfold, notecase, pocketbook
895 | n04550184 wardrobe, closet, press
896 | n04552348 warplane, military plane
897 | n04553703 washbasin, handbasin, washbowl, lavabo, wash-hand basin
898 | n04554684 washer, automatic washer, washing machine
899 | n04557648 water bottle
900 | n04560804 water jug
901 | n04562935 water tower
902 | n04579145 whiskey jug
903 | n04579432 whistle
904 | n04584207 wig
905 | n04589890 window screen
906 | n04590129 window shade
907 | n04591157 Windsor tie
908 | n04591713 wine bottle
909 | n04592741 wing
910 | n04596742 wok
911 | n04597913 wooden spoon
912 | n04599235 wool, woolen, woollen
913 | n04604644 worm fence, snake fence, snake-rail fence, Virginia fence
914 | n04606251 wreck
915 | n04612504 yawl
916 | n04613696 yurt
917 | n06359193 web site, website, internet site, site
918 | n06596364 comic book
919 | n06785654 crossword puzzle, crossword
920 | n06794110 street sign
921 | n06874185 traffic light, traffic signal, stoplight
922 | n07248320 book jacket, dust cover, dust jacket, dust wrapper
923 | n07565083 menu
924 | n07579787 plate
925 | n07583066 guacamole
926 | n07584110 consomme
927 | n07590611 hot pot, hotpot
928 | n07613480 trifle
929 | n07614500 ice cream, icecream
930 | n07615774 ice lolly, lolly, lollipop, popsicle
931 | n07684084 French loaf
932 | n07693725 bagel, beigel
933 | n07695742 pretzel
934 | n07697313 cheeseburger
935 | n07697537 hotdog, hot dog, red hot
936 | n07711569 mashed potato
937 | n07714571 head cabbage
938 | n07714990 broccoli
939 | n07715103 cauliflower
940 | n07716358 zucchini, courgette
941 | n07716906 spaghetti squash
942 | n07717410 acorn squash
943 | n07717556 butternut squash
944 | n07718472 cucumber, cuke
945 | n07718747 artichoke, globe artichoke
946 | n07720875 bell pepper
947 | n07730033 cardoon
948 | n07734744 mushroom
949 | n07742313 Granny Smith
950 | n07745940 strawberry
951 | n07747607 orange
952 | n07749582 lemon
953 | n07753113 fig
954 | n07753275 pineapple, ananas
955 | n07753592 banana
956 | n07754684 jackfruit, jak, jack
957 | n07760859 custard apple
958 | n07768694 pomegranate
959 | n07802026 hay
960 | n07831146 carbonara
961 | n07836838 chocolate sauce, chocolate syrup
962 | n07860988 dough
963 | n07871810 meat loaf, meatloaf
964 | n07873807 pizza, pizza pie
965 | n07875152 potpie
966 | n07880968 burrito
967 | n07892512 red wine
968 | n07920052 espresso
969 | n07930864 cup
970 | n07932039 eggnog
971 | n09193705 alp
972 | n09229709 bubble
973 | n09246464 cliff, drop, drop-off
974 | n09256479 coral reef
975 | n09288635 geyser
976 | n09332890 lakeside, lakeshore
977 | n09399592 promontory, headland, head, foreland
978 | n09421951 sandbar, sand bar
979 | n09428293 seashore, coast, seacoast, sea-coast
980 | n09468604 valley, vale
981 | n09472597 volcano
982 | n09835506 ballplayer, baseball player
983 | n10148035 groom, bridegroom
984 | n10565667 scuba diver
985 | n11879895 rapeseed
986 | n11939491 daisy
987 | n12057211 yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
988 | n12144580 corn
989 | n12267677 acorn
990 | n12620546 hip, rose hip, rosehip
991 | n12768682 buckeye, horse chestnut, conker
992 | n12985857 coral fungus
993 | n12998815 agaric
994 | n13037406 gyromitra
995 | n13040303 stinkhorn, carrion fungus
996 | n13044778 earthstar
997 | n13052670 hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
998 | n13054560 bolete
999 | n13133613 ear, spike, capitulum
1000 | n15075141 toilet tissue, toilet paper, bathroom tissue
1001 |
--------------------------------------------------------------------------------