Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle-js
提交
3687a96f
P
Paddle-js
项目概览
PaddlePaddle
/
Paddle-js
通知
22
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
11
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle-js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
11
Issue
11
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
3687a96f
编写于
5月 15, 2020
作者:
H
haozech
提交者:
GitHub
5月 15, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #8 from haozech/develop_chz
compataible with webgl1.0; rewrite sorting algorithm of ops; fix bugs
上级
6c40834f
63120052
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
1341 addition
and
1232 deletion
+1341
-1232
src/feed/ImageFeed.es6
src/feed/ImageFeed.es6
+2
-12
src/gpu/gpu.es6
src/gpu/gpu.es6
+59
-30
src/graph/graph.es6
src/graph/graph.es6
+46
-97
src/loader/loader.es6
src/loader/loader.es6
+6
-5
src/paddle/paddle.es6
src/paddle/paddle.es6
+3
-8
src/runtime/runtime.es6
src/runtime/runtime.es6
+9
-3
src/shader/atom/getValueFromTensorPos.es6
src/shader/atom/getValueFromTensorPos.es6
+18
-9
src/shader/atom/prefix.es6
src/shader/atom/prefix.es6
+6
-4
src/shader/atom/suffix.es6
src/shader/atom/suffix.es6
+4
-3
src/shader/atom/transferFromNHWCtoNCHW.es6
src/shader/atom/transferFromNHWCtoNCHW.es6
+4
-4
src/shader/batchnorm/main.es6
src/shader/batchnorm/main.es6
+6
-6
src/shader/bilinear_interp/conf.es6
src/shader/bilinear_interp/conf.es6
+45
-0
src/shader/bilinear_interp/main.es6
src/shader/bilinear_interp/main.es6
+34
-0
src/shader/bilinear_interp/params.es6
src/shader/bilinear_interp/params.es6
+18
-0
src/shader/concat/main.es6
src/shader/concat/main.es6
+2
-2
src/shader/concat/params.es6
src/shader/concat/params.es6
+1
-1
src/shader/conv2d_transpose/main.es6
src/shader/conv2d_transpose/main.es6
+3
-12
src/shader/elementwise_add/main.es6
src/shader/elementwise_add/main.es6
+6
-6
src/shader/mul/main.es6
src/shader/mul/main.es6
+3
-3
src/shader/split/main.es6
src/shader/split/main.es6
+1
-1
src/shader/split/params.es6
src/shader/split/params.es6
+1
-1
src/shader/transpose2/main.es6
src/shader/transpose2/main.es6
+2
-2
src/utils/opData.es6
src/utils/opData.es6
+1
-3
src/utils/utils.es6
src/utils/utils.es6
+52
-13
test/data/map.json
test/data/map.json
+1002
-1000
test/data/model.test.conv2d.json
test/data/model.test.conv2d.json
+1
-2
test/testUtils/testUtils.es6
test/testUtils/testUtils.es6
+6
-5
未找到文件。
src/feed/ImageFeed.es6
浏览文件 @
3687a96f
...
...
@@ -151,8 +151,6 @@ export default class imageFeed {
}
}
}
console.log('this is the end of reshapetorgb !!!');
console.dir(result);
return result;
};
...
...
@@ -164,7 +162,6 @@ export default class imageFeed {
* @return {Object} 缩放后的尺寸
*/
reSize(image, params) {
console.log('execute resize!!');
// 原始图片宽高
const width = this.pixelWidth;
const height = this.pixelHeight;
...
...
@@ -192,7 +189,6 @@ export default class imageFeed {
* 根据scale缩放图像并且缩放成目标尺寸并居中
*/
resizeAndFitTargetSize(image, params){
console.log('execute resizeAndFitTargetSize!!');
// 原始图片宽高
const width = this.pixelWidth;
const height = this.pixelHeight;
...
...
@@ -249,7 +245,6 @@ export default class imageFeed {
sh = Math.round(sw * this.pixelHeight / this.pixelWidth);
y = Math.floor((targetHeight - sh) / 2);
}
// console.log(x, y, sw, sh);
if (center) {
this.fromPixels2DContext.drawImage(
image, x, y, sw, sh);
...
...
@@ -327,24 +322,18 @@ export default class imageFeed {
data = this.resizeAndFitTargetSize(pixels, opt);
data2 = this.fromPixels2DContext2.getImageData(0, 0, this.pixelWidth, this.pixelHeight);
}
else if (opt.scale) { // 兼容以前的,如果有scale就是短边缩放到scale模式
else if (opt.scale) { // 直接resize到targetShape Humanseg的情况
scaleSize = this.reSize(pixels, opt);
console.dir(scaleSize);
console.dir(pixels);
data = this.getImageData(opt, 0, 0, scaleSize);
data2 = this.fromPixels2DContext2.getImageData(0, 0, this.pixelWidth, this.pixelHeight);
}
else if (opt.targetSize) { // 如果有targetSize,就是装在目标宽高里的模式 TinyYolo的情况
scaleSize = this.fitToTargetSize(pixels, opt);
data = this.getImageData(opt, 0, 0, scaleSize);
data2 = this.fromPixels2DContext2.getImageData(0, 0, this.pixelWidth, this.pixelHeight);
}
}
if (opt.gray) {
data = grayscale(data);
}
...
...
@@ -359,6 +348,7 @@ export default class imageFeed {
else if (opt.targetShape) {
data = this.allReshapeToRGB(data, opt, scaleSize);
}
return [{data: data, shape: opt.shape || opt.targetShape, name: 'image', canvas: data2}];
}
}
...
...
src/gpu/gpu.es6
浏览文件 @
3687a96f
...
...
@@ -51,6 +51,10 @@ export default class gpu {
console.log('float extension is started or not? ' + !!this.textureFloat);
}
}
this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);
this.maxTextureImageUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);
// 关闭相关功能
gl.disable(gl.DEPTH_TEST);
gl.disable(gl.STENCIL_TEST);
...
...
@@ -67,14 +71,22 @@ export default class gpu {
this.waits = 0;
console.log('WebGl版本是 ' + this.version);
console.log('MAX_TEXTURE_SIZE is ' +
gl.getParameter(gl.MAX_TEXTURE_SIZE)
);
console.log('MAX_TEXTURE_IMAGE_UNITS is ' +
gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)
);
console.log('MAX_TEXTURE_SIZE is ' +
this.maxTextureSize
);
console.log('MAX_TEXTURE_IMAGE_UNITS is ' +
this.maxTextureImageUnits
);
}
getWebglVersion() {
return this.version;
}
getWebglMaxTextureSize() {
return this.maxTextureSize;
}
getWebglMaxTextureImageUnits() {
return this.maxTextureImageUnits;
}
initCache() {
// 运行次数
this.times = 0;
...
...
@@ -145,7 +157,6 @@ export default class gpu {
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, // Target, matches bind above.
0, // Level of detail.
this.downloadInternalFormat, // Internal format.
...
...
@@ -346,6 +357,7 @@ export default class gpu {
} else {
// texture = gl.createTexture();
if (isRendered && (iLayer > 0 || (iLayer === 0 && item.tensor !== 'origin'))) {
const tData = this.cacheTextures['' + iLayer];
texture = tData[item.variable + '_' + item.tensor];
} else {
...
...
@@ -361,6 +373,7 @@ export default class gpu {
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
if (this.version == 2){
gl.texImage2D(gl.TEXTURE_2D,
0,
this.internalFormat,
...
...
@@ -369,8 +382,27 @@ export default class gpu {
0,
this.textureFormat,
gl.FLOAT,
item.data,
0);
item.data);
}
else {
let oneSize = item.width_texture * item.height_texture;
let temp = new Float32Array(item.width_texture * item.height_texture * 4);
for (let i = 0; i < item.data.length; i++){
temp[i*4] = (item.data[i]);
temp[i*4+1] = 0;
temp[i*4+2] = 0;
temp[i*4+3] = 0;
}
gl.texImage2D(gl.TEXTURE_2D,
0,
gl.RGBA,
item.width_texture,
item.height_texture,
0,
gl.RGBA,
gl.FLOAT,
temp);
}
}
}
...
...
@@ -389,7 +421,7 @@ export default class gpu {
// 生成帧缓存的texture
makeTexure(type, data, opts = {}) {
const gl = this.gl;
let index =
this.textureBufferIndex % 2
;
let index =
int(mod(float(this.textureBufferIndex), 2.0))
;
let texture = this.textureBuffer[index];
gl.bindTexture(gl.TEXTURE_2D, texture);
...
...
@@ -429,6 +461,7 @@ export default class gpu {
}
createPBO() {
if (this.version == 2){
const gl2 = this.gl;
const buffer = this.pbo;
gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer);
...
...
@@ -437,42 +470,40 @@ export default class gpu {
gl2.readPixels(0, 0, this.width_texture_out, this.height_texture_out, gl2.RGBA, gl2.FLOAT, 0);
gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null);
return buffer;
}
else {
let buffer = new Float32Array(this.width_texture_out * this.height_texture_out * 4);
const gl2 = this.gl;
gl2.readPixels(0, 0, this.width_texture_out, this.height_texture_out, gl2.RGBA, gl2.FLOAT, buffer);
return buffer;
}
}
downloadFoat32TensorFromBuffer(buffer) {
const gl2 = this.gl;
const size = 4 * this.width_texture_out * this.height_texture_out;
if (this.version == 2){
const pixels = new Float32Array(size);
gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer);
gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER, 0, pixels);
gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null);
// log.start('后处理-readloop');
// let result = [];
// let offset = 0;
// for (let h = 0; h < this.height_texture_out; h++) {
// // 纪录第1和2行数据
// let temp1 = [];
// let temp2 = [];
// for (let w = 0; w < this.width_texture_out; w++) {
// temp1.push(pixels[offset]);
// temp1.push(pixels[offset + 1]);
// temp2.push(pixels[offset + 2]);
// temp2.push(pixels[offset + 3]);
// offset += 4;
// }
// result = result.concat(temp1);
// result = result.concat(temp2);
// }
let result = [];
for (let i = 0; i < this.width_texture_out * this.height_texture_out; i++) {
result.push(pixels[4 * i]);
}
// const result = Array.prototype.slice.call(pixels);
// console.dir(['result', result]);
// log.end('后处理-readloop');
return result;
}
else {
let pixels = buffer;
let result = [];
for (let i = 0; i < this.width_texture_out * this.height_texture_out; i++) {
result.push(pixels[4 * i]);
}
return result;
}
}
getWebglError(status) {
const gl2 = this.gl;
switch (status) {
...
...
@@ -497,7 +528,7 @@ export default class gpu {
createAndWaitForFence() {
const gl2 = this.gl;
const isFenceEnabled = (gl2.fenceSync !=
=
null);
const isFenceEnabled = (gl2.fenceSync != null);
let isFencePassed = () => true;
if (isFenceEnabled) {
const sync = gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE, 0);
...
...
@@ -531,10 +562,8 @@ export default class gpu {
let pixels = new Float32Array(this.width_texture_out * this.height_texture_out * 4);
// gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);
const tt2 = +Date.now();
gl.readPixels(0, 0, this.width_texture_out, this.height_texture_out, gl.RGBA, gl.FLOAT, pixels
, 0
);
gl.readPixels(0, 0, this.width_texture_out, this.height_texture_out, gl.RGBA, gl.FLOAT, pixels);
// console.log('本次读取数据时间是' + (+Date.now() - tt2)+ ',' + (tt2 - tt));
// log.end('后处理-readinside');
// log.start('后处理-readloop');
let result = [];
for (let i = 0; i < this.width_texture_out * this.height_texture_out; i++) {
result.push(pixels[4 * i]);
...
...
src/graph/graph.es6
浏览文件 @
3687a96f
/* eslint-disable */
import GraphExecutor from '../executor/executor';
import IO from '../feed/imageFeed';
import Runtime from '../runtime/runtime';
import OpData from '../utils/opData';
import Factory from '../factory/fshader/factory';
...
...
@@ -92,9 +91,14 @@ export default class Graph {
return;
}
opindex++;
// console.log(opindex);
//if (executor.opData) console.log(executor.opData.iLayer);
executor.execute(this.inst, this.isExecuted);
if (false && executor.opData && opindex >= 184){
console.log('return!');
console.dir(executor);
console.dir(executor.type);
console.dir(this);
return;
}
if (executor.next) {
const id = executor.next;
const next = this.getTensor(id);
...
...
@@ -199,105 +203,63 @@ export default class Graph {
});
}
execute_try(temp, ops, idtoindex, executed, inline, prev){
console.log('execute_try!first look at this op');
console.log(ops[temp]);
let canrun = this.checkifcanrun(temp, ops, idtoindex, executed);
if (canrun === false) {
// console.log('canrun === false!');
var a = inline.pop();
this.execute_try(idtoindex[a.id], ops, idtoindex, executed, inline, prev);
return;
}
if (prev >=0) {
ops[prev].next = ops[temp].id;
}
ops[temp].outputsName.forEach(function(item, index) {
executed[item] = true;
})
let next = this.getNextByOp(ops, ops[temp]);
// console.log('this is its next:');
// console.dir(next);
while (next.length === 1) {
let flag = true;
for (let i = 0; i < next[0].inputsName.length; i++){
if (executed[next[0].inputsName[i]] === false) flag = false;
}
if (flag === false) {
// console.log('can not execute next now! jump to another op:');
if (inline.length === 0) return;
prev = temp;
let a = inline.pop();
// console.dir(a);
ops[temp].next = a.id;
temp = idtoindex[a.id];
this.execute_try(temp, ops, idtoindex, executed, inline, prev);
return;
}
else {
// console.log('now execute next op! it is');
ops[temp].next = next[0].id;
temp = idtoindex[next[0].id];
// console.dir(ops[temp]);
next = this.getNextByOp(ops, ops[temp]);
// console.log('its next is: ');
ops[temp].outputsName.forEach(function(item, index) {
executed[item] = true;
})
// console.dir(next);
}
}
if (next.length > 1){
// console.log('next.length > 1!!!');
for (let i = next.length - 1; i >=0 ; i--){
inline.push(next[i]);
}
var a = inline.pop();
this.execute_try(idtoindex[a.id], ops, idtoindex, executed, inline, temp);
}
return;
}
arrangeMap(ops) {
// console.log('arrangeMap!');
// console.dir(ops);
var idtoindex = {};
var executed = {};
var inline = [];
var inIndex = [];
var idtoindex = {};
let temp = 0;
// console.log('graph ops:');
// console.dir(ops);
let ops1 = ops;
ops1.forEach(function(item, index) {
idtoindex[item.id] = index;
// console.dir(item);
item.outputsName.forEach(function(i, idx){
executed[i] =
fals
e;
executed[i] =
tru
e;
})
});
//ops[0].inputsName[0] = {name : "feed"};
// ops[0].outputsName[0] = {name : "image"};
this.execute_try(temp, ops, idtoindex, executed, inline, -1);
ops1.forEach(function(item, index) {
inIndex[index] = 0;
idtoindex[item.id] = index;
if (item.inputsName.length > 1) {
item.inputsName.forEach(function(i,idx){
if (executed[i] == true) inIndex[index]++;
})
}
else inIndex[index] = item.inputsName.length;
});
this.topoSort(ops, inIndex, idtoindex);
return ops;
}
checkifcanrun(temp, ops, executed){
if (!ops[temp].inputsName) return true;
for (let i = 0; i < ops[temp].inputsName.length; i++){
if (executed[ops[temp].inputsName[i]] === false) return false;
topoSort(ops, inIndex, idtoindex){
var inline = [];
inline.push(ops[0]);
let ops_temp = ops.slice(0);
let prev = null;
let a = ops[0];
while(inline.length > 0){
if (prev != null) ops[idtoindex[prev.id]].next = a.id;
prev = a;
a = inline.pop();
for (let i = 0; i < a.outputsName.length; i++){
for (let k = 0; k < ops_temp.length; k++){
for (let j = 0; j < ops_temp[k].inputsName.length; j++){
if (ops_temp[k].inputsName[j] == a.outputsName[i]) {
inIndex[idtoindex[ops_temp[k].id]]--;
if (inIndex[idtoindex[ops_temp[k].id]] == 0){
inline.push(ops[idtoindex[ops_temp[k].id]]);
ops_temp.splice(k,1);
k--;
break;
}
}
}
}
}
}
return true;
}
/**
* Get Ops Nets Start Node
* @param ops
...
...
@@ -348,8 +310,6 @@ export default class Graph {
* @returns {*}
*/
createOpsMap(ops) {
// console.log('ops!!');
// console.dir(ops);
return ops.map((item, idx) => {
item.idx = idx;
const graphExecutor = new GraphExecutor(item);
...
...
@@ -372,17 +332,6 @@ export default class Graph {
});
}
getNextByOp(ops, op) {
return ops.filter((item, key) => {
for (let i = 0; i < item.inputsName.length; i++) {
for(let j = 0; j < op.outputsName.length; j++) {
if (item.inputsName[i] === op.outputsName[j]) {
return true;
}
}
}
});
}
/**
* dispose
*/
...
...
src/loader/loader.es6
浏览文件 @
3687a96f
...
...
@@ -109,8 +109,9 @@ export default class Loader {
const TMP_REGEX = /\-/;
let requesterArr = arr.map(item => {
if (item.name
&& item.name.match(TMP_SCHEME_REGEX) === null
&& item.name.match(TMP_REGEX) === null) {
// && item.name.match(TMP_SCHEME_REGEX) === null
// && item.name.match(TMP_REGEX) === null
) {
return this.fetchData(item.name).then(data => item.data = data);
}
return Promise.resolve();
...
...
@@ -124,9 +125,9 @@ export default class Loader {
let marker = 0; // 读到哪个位置了
let len; // 当前op长度
arr.filter(item => {
return item.name
&& item.name.match(TMP_SCHEME_REGEX) === null
&& item.name.match(TMP_REGEX) === null;
return item.name
;
//
&& item.name.match(TMP_SCHEME_REGEX) === null
//
&& item.name.match(TMP_REGEX) === null;
})
// .sort((a, b) => {
// if (a.name > b.name) {
...
...
src/paddle/paddle.es6
浏览文件 @
3687a96f
...
...
@@ -48,13 +48,9 @@ export default class Paddle {
that.graph = graph;
that.graph.data = artifacts.data;
that.graph.formatWeight(that.graph.data.vars);
const opsMap = that.graph.createOpsMap(that.graph.data.ops
, that.graph.data.vars
);
const opsMap = that.graph.createOpsMap(that.graph.data.ops);
const opsMap1 = that.graph.constructOpsMap(opsMap);
// console.log('opsMap1!');
// console.dir(opsMap1);
const opsMap2 = that.graph.arrangeMap(opsMap1);
// console.log('opsMap2!');
// console.dir(opsMap2);
that.graph.weightMap = opsMap2;
}
/**
...
...
@@ -68,10 +64,10 @@ export default class Paddle {
this.feed = this.graph.feed = inputs;
// 生成op数据
if (!this.graph.isExecuted) {
this.graph.weightMap.forEach(
op
=> {
this.graph.weightMap.forEach(
(op, index)
=> {
const type = op.type;
if (type !== 'feed' && type !== 'fetch') {
console.log(op.type);
that.graph.buildOpData(op);
}
});
...
...
@@ -81,7 +77,6 @@ export default class Paddle {
}
updateFeed() {
this.graph.feedItem.data = this.graph.feed.input[0].data;
// Utils.img2texture(this.graph.feedItem);
}
/**
* dispose
...
...
src/runtime/runtime.es6
浏览文件 @
3687a96f
...
...
@@ -2,9 +2,6 @@
import Gpu from '../gpu/gpu';
import getMaxUniforms from '../test/getMaxUniforms';
import Factory from '../factory/fshader/factory';
// import {getTextureShapeInfo} from '../utils/opData';
// 生成factory实例
// const factory = new Factory({});
/**
* @file gpu运行时
* @author wangqun@baidu.com, yangmingming@baidu.com
...
...
@@ -29,6 +26,14 @@ export default {
return this.gpu.getWebglVersion();
},
getWebglMaxTextureSize() {
return this.gpu.maxTextureSize();
},
getWebglMaxTextureImageUnits() {
return this.gpu.maxTextureImageUnits();
},
run(opName, opData, isRendered) {
// console.dir(['fscode', opData.fsCode]);
// let time = +Date.now();
...
...
@@ -64,6 +69,7 @@ export default {
this.gpu.render(opData.renderData, opData.iLayer, isRendered);
// }
});
},
/**
...
...
src/shader/atom/getValueFromTensorPos.es6
浏览文件 @
3687a96f
...
...
@@ -7,29 +7,38 @@
export default `
// 根据tensor坐标获取这个tensor位置的值
float getValueFromTensorPos_TENSOR_NAME(int r, int g, int b, int a) {
vec4 pixels = TEXTURE2D(texture_TENSOR_NAME,
vec4 pixels = TEXTURE2D(texture_TENSOR_NAME,
vec2(
(float(a * channel_TENSOR_NAME + g) + 0.5) / float(width_texture_TENSOR_NAME),
(float(a * channel_TENSOR_NAME + g) + 0.5) / float(width_texture_TENSOR_NAME),
(float(r * height_shape_TENSOR_NAME + b) + 0.5) / float(height_texture_TENSOR_NAME)
)
);
// 只用了r通道
return pixels.r;
}
// 紧凑型布局根据tensor坐标获取这个tensor位置的值
// 超限布局根据tensor坐标获取这个tensor位置的值
float getValueFromTensorPosLimit_TENSOR_NAME(int r, int g, int b, int a) {
float
halfW = ceil(float(width_shape_TENSOR_NAME) / 2
.0);
int x = int(mod(float(a),
half
W));
float
pieceW = ceil(float(width_shape_TENSOR_NAME) / 4
.0);
int x = int(mod(float(a),
piece
W));
int offsetY = 0;
if (a > x) {
if ((float(a) / pieceW) >= 3.0) {
offsetY = 3 * height_shape_TENSOR_NAME;
}
else if (float(a) / pieceW >= 2.0) {
offsetY = 2 * height_shape_TENSOR_NAME;
}
else if (float(a) >= pieceW) {
offsetY = height_shape_TENSOR_NAME;
}
vec4 pixels = TEXTURE2D(texture_TENSOR_NAME,
vec4 pixels = TEXTURE2D(texture_TENSOR_NAME,
vec2(
(float(x * channel_TENSOR_NAME + g) + 0.5) / float(width_texture_TENSOR_NAME),
(float(r *
2
* height_shape_TENSOR_NAME + b + offsetY) + 0.5) / float(height_texture_TENSOR_NAME)
(float(x * channel_TENSOR_NAME + g) + 0.5) / float(width_texture_TENSOR_NAME),
(float(r *
4
* height_shape_TENSOR_NAME + b + offsetY) + 0.5) / float(height_texture_TENSOR_NAME)
)
);
return pixels.r;
}
`;
src/shader/atom/prefix.es6
浏览文件 @
3687a96f
...
...
@@ -8,11 +8,13 @@ export default `
precision highp float;
precision highp int;
#else
precision
medium
p float;
precision
medium
p int;
precision
high
p float;
precision
high
p int;
#endif
varying vec2 vCoord;
varying vec4 outColor;
void setOutput(float result) {
gl_FragColor.r = result;
gl_FragColor.r = result;
}
`;
src/shader/atom/suffix.es6
浏览文件 @
3687a96f
...
...
@@ -15,17 +15,18 @@ ivec4 getOutputTensorPos() {
return ivec4(b, c, y, x);
}
ivec4 getOutputTensorPosLimit() {
// 获取原始长度
vec2 outCoord = vCoord.xy * _2d_shape_texture_out;
float offsetY = floor(outCoord.y / float(height_shape_out));
int x = int(outCoord.x / float(channel_out));
if (mod(offsetY,
2
.0) > 0.0) {
x += int(
ceil(float(width_shape_out) / 2
.0));
if (mod(offsetY,
4
.0) > 0.0) {
x += int(
mod(offsetY, 4.0)) * int(ceil(float(width_shape_out) / 4
.0));
}
int y = int(mod(outCoord.y, float(height_shape_out)));
int c = int(mod(outCoord.x, float(channel_out)));
int b = int(outCoord.y / float(
2
* height_shape_out));
int b = int(outCoord.y / float(
4
* height_shape_out));
return ivec4(b, c, y, x);
}
...
...
src/shader/atom/transferFromNHWCtoNCHW.es6
浏览文件 @
3687a96f
...
...
@@ -10,13 +10,13 @@ export default `
ivec4 transferFromNHWCtoNCHW( int sumVal, const int channel, const int width_shape, const int height_shape, const int total_shape) {
int n_origin = int(total_shape/(channel * width_shape * height_shape));
int new_a =
sumVal % width_shape
;
int new_a =
int(mod(float(sumVal), float(width_shape)))
;
sumVal = int((sumVal - new_a) / width_shape);
int new_b =
sumVal % height_shape
;
int new_b =
int(mod(float(sumVal), float(height_shape)))
;
sumVal = int((sumVal - new_b) / height_shape);
int new_g =
sumVal % channel
;
int new_g =
int(mod(float(sumVal), float(channel)))
;
sumVal = int((sumVal - new_g) / channel);
int new_r =
sumVal % n_origin
;
int new_r =
int(mod(float(sumVal), float(n_origin)))
;
return ivec4(new_r,new_g,new_b,new_a);
}
`;
src/shader/batchnorm/main.es6
浏览文件 @
3687a96f
...
...
@@ -7,14 +7,14 @@ export default `
// start函数
void main(void) {
// 输出数据
ivec4 oPos = getOutputTensorPos();
float o = getValueFromTensorPos_origin(oPos.r, oPos.g, oPos.b, oPos.a);
ivec4 oPos = getOutputTensorPos
LIMIT_OUT
();
float o = getValueFromTensorPos
LIMIT_ORIGIN
_origin(oPos.r, oPos.g, oPos.b, oPos.a);
// 归一化数据
vec4 scale = getPixelsFromTexturePos_texture_scale(vec2(
float(oPos.g
) / float(width_texture_scale), 0.0));
vec4 bias = getPixelsFromTexturePos_texture_bias(vec2((float(oPos.g)) / float(width_texture_bias), 0.0));
vec4 mean = getPixelsFromTexturePos_texture_mean(vec2((float(oPos.g)) / float(width_texture_mean), 0.0));
vec4 variance = getPixelsFromTexturePos_texture_variance(vec2((float(oPos.g)) / float(width_texture_variance), 0.0));
vec4 scale = getPixelsFromTexturePos_texture_scale(vec2(
(float(oPos.g) + 0.5
) / float(width_texture_scale), 0.0));
vec4 bias = getPixelsFromTexturePos_texture_bias(vec2((float(oPos.g)
+ 0.5
) / float(width_texture_bias), 0.0));
vec4 mean = getPixelsFromTexturePos_texture_mean(vec2((float(oPos.g)
+ 0.5
) / float(width_texture_mean), 0.0));
vec4 variance = getPixelsFromTexturePos_texture_variance(vec2((float(oPos.g)
+ 0.5
) / float(width_texture_variance), 0.0));
float x = (o - mean[0]) / sqrt(variance[0] + epsilon);
float res = scale[0] * x + bias[0];
...
...
src/shader/bilinear_interp/conf.es6
0 → 100644
浏览文件 @
3687a96f
/* eslint-disable */
/**
* @file bilinear_interp的配置文件
* @author chenhaoze
*/
export default {
dep: [
{
func: 'getValueFromTensorPos',
conf: {
TENSOR_NAME: 'origin'
}
},
{
func: 'transferFromNHWCtoNCHW',
conf:{
}
}
],
conf: [
'WIDTH_SHAPE_ORIGIN',
'HEIGHT_SHAPE_ORIGIN',
'LENGTH_SHAPE_ORIGIN',
'WIDTH_TEXTURE_ORIGIN',
'HEIGHT_TEXTURE_ORIGIN',
'CHANNEL_ORIGIN',
'WIDTH_SHAPE_OUT',
'HEIGHT_SHAPE_OUT',
'WIDTH_TEXTURE_OUT',
'HEIGHT_TEXTURE_OUT',
'CHANNEL_OUT',
'OFFSET_Y_OUT',
'MULTI_VALUE',
'BIAS_VALUE',
'ACTIVE_FUNCTION'
],
input: [
{
tensor: 'origin',
variable: 'texture',
setter: 'initTexture',
type: 'texture'
}
]
};
src/shader/bilinear_interp/main.es6
0 → 100644
浏览文件 @
3687a96f
/* eslint-disable */
/**
* @file bilinear_interp主函数
* @author chenhaoze
*/
export default `
// start函数
void main(void) {
// 输出数据
ivec4 oPos = getOutputTensorPos();
// 输出坐标转换为输入坐标
//int sumVal = oPos.g + oPos.a * channel_out + oPos.b * channel_out * width_shape_out + oPos.r * channel_out * width_shape_out * height_shape_out;
//oPos = transferFromNHWCtoNCHW(sumVal, channel_out, width_shape_out, height_shape_out, total_shape_out);
float o = getValueFromTensorPos_origin(oPos.r, oPos.g, oPos.b, oPos.a);
float scale_x = float(width_shape_out - 1) / float(width_shape_origin - 1);
float scale_y = float(height_shape_out - 1) / float(height_shape_origin - 1);
float x = float(oPos.a) / scale_x;
float y = float(oPos.b) / scale_y;
int x1 = int(floor(x));
int y1 = int(floor(y));
int x2 = int(ceil(x));
int y2 = int(ceil(y));
float dist_x = x - float(x1);
float dist_y = y - float(y1);
float value11 = getValueFromTensorPos_origin(oPos.r, oPos.g, y1, x1);
float value12 = getValueFromTensorPos_origin(oPos.r, oPos.g, y2, x1);
float value21 = getValueFromTensorPos_origin(oPos.r, oPos.g, y1, x2);
float value22 = getValueFromTensorPos_origin(oPos.r, oPos.g, y2, x2);
float value = (1.0 - dist_x) * (1.0 - dist_y) * value11 +
(1.0 - dist_x) * dist_y * value12 + dist_x * (1.0 - dist_y) * value21 +
dist_x * dist_y * value22;
setOutput(float(value));
}
`;
src/shader/bilinear_interp/params.es6
0 → 100644
浏览文件 @
3687a96f
/* eslint-disable */
/**
* @file bilinear_interp参数文件
* @author chenhaoze
*/
export default `
// 输入数据
const int width_shape_origin = WIDTH_SHAPE_ORIGIN;
const int height_shape_origin = HEIGHT_SHAPE_ORIGIN;
const int length_shape_origin = LENGTH_SHAPE_ORIGIN;
const int width_texture_origin = WIDTH_TEXTURE_ORIGIN;
const int height_texture_origin = HEIGHT_TEXTURE_ORIGIN;
const int channel_origin = CHANNEL_ORIGIN;
const int total_shape_origin = TOTAL_SHAPE_ORIGIN;
const int total_shape_out = TOTAL_SHAPE_OUT;
// 输入数据
uniform sampler2D texture_origin;
`;
src/shader/concat/main.es6
浏览文件 @
3687a96f
...
...
@@ -11,8 +11,8 @@ void main(void) {
// int sumVal = oPos.g + oPos.a * channel_out + oPos.b * channel_out * width_shape_out + oPos.r * channel_out * width_shape_out * height_shape_out;
// ivec4 new_oPos = transferFromNHWCtoNCHW(sumVal, channel_out, width_shape_out, height_shape_out, total_shape_out);
float o = 0.0;
if (oPos[dim] > inputs_dim
[0]
- 1) {
oPos[dim] = oPos[dim] - inputs_dim
[0]
;
if (oPos[dim] > inputs_dim - 1) {
oPos[dim] = oPos[dim] - inputs_dim;
o = getValueFromTensorPos_counter(oPos.r, oPos.g, oPos.b, oPos.a);
}
else {
...
...
src/shader/concat/params.es6
浏览文件 @
3687a96f
...
...
@@ -28,7 +28,7 @@ const int total_shape_origin = TOTAL_SHAPE_ORIGIN;
const int total_shape_out = TOTAL_SHAPE_OUT;
const int dim = DIM;
const int inputs_dim
[1] = int[](INPUTS_DIM)
;
const int inputs_dim
= INPUTS_DIM
;
// uniform变量
...
...
src/shader/conv2d_transpose/main.es6
浏览文件 @
3687a96f
...
...
@@ -16,16 +16,8 @@ export default `
int temp_y = 0;
float o = 0.0;
float f = 0.0;
if (x % 2 == 1) x = x - 2;
if (y % 2 == 1) y = y - 2;
// 重排遍历顺序
//int sumVal = oPos.g + oPos.a * channel_out + oPos.b * channel_out * width_shape_out;
//int new_a = sumVal % width_shape_out;
//int new_b = int((sumVal - new_a) / width_shape_out) % height_shape_out;
//int new_g = int((((sumVal - new_a) / width_shape_out) - new_b) / height_shape_out);
//int x = new_a;
//int c = new_g;
//int y = new_b;
if (int(mod(float(x), 2.0)) == 1) x = x - 2;
if (int(mod(float(y), 2.0)) == 1) y = y - 2;
// 获取output的坐标
int oTensorChannel = int(c * groups / channel_out) * channel_origin;
int oy = y;
...
...
@@ -43,8 +35,7 @@ export default `
}
// channel计算
for (int j = 0; j < channel_origin; j++) {
if (ox % stride_h == 0 && oy % stride_v == 0) {
if (int(mod(float(ox), float(stride_h))) == 0 && int(mod(float(oy), float(stride_v))) == 0) {
temp_x = int(floor(float(ox) / float(stride_h)));
temp_y = int(floor(float(oy) / float(stride_v)));
if (temp_x < width_shape_origin && temp_y < height_shape_origin){
...
...
src/shader/elementwise_add/main.es6
浏览文件 @
3687a96f
...
...
@@ -7,22 +7,22 @@ export default `
// start函数
void main(void) {
// 输出数据
ivec4 oPos = getOutputTensorPos();
float o = getValueFromTensorPos_origin(oPos.r, oPos.g, oPos.b, oPos.a);
ivec4 oPos = getOutputTensorPos
LIMIT_OUT
();
float o = getValueFromTensorPos
LIMIT_ORIGIN
_origin(oPos.r, oPos.g, oPos.b, oPos.a);
ivec4 pos_counter;
float c = 0.0;
if (axis == 1){
c = getValueFromTensorPos_counter(0, oPos.r, oPos.g, oPos.b);
c = getValueFromTensorPos
LIMIT_COUNTER
_counter(0, oPos.r, oPos.g, oPos.b);
}
else if (axis == 2){
c = getValueFromTensorPos_counter(0, 0, oPos.r, oPos.g);
c = getValueFromTensorPos
LIMIT_COUNTER
_counter(0, 0, oPos.r, oPos.g);
}
else if (axis == 3){
c = getValueFromTensorPos_counter(0, 0, 0, oPos.r);
c = getValueFromTensorPos
LIMIT_COUNTER
_counter(0, 0, 0, oPos.r);
}
else {
c = getValueFromTensorPos_counter(oPos.r, oPos.g, oPos.b, oPos.a);
c = getValueFromTensorPos
LIMIT_COUNTER
_counter(oPos.r, oPos.g, oPos.b, oPos.a);
}
float res = c + o;
setOutput(float(res));
...
...
src/shader/mul/main.es6
浏览文件 @
3687a96f
...
...
@@ -7,10 +7,10 @@ export default `
void main(void) {
float res = 0.0;
// 获取output的坐标
ivec4 out_pos = getOutputTensorPos();
ivec4 out_pos = getOutputTensorPos
LIMIT_OUT
();
for (int j = 0; j < width_shape_origin; j++) {
float c = getValueFromTensorPos_counter(out_pos[0], out_pos[1], j, out_pos[3]);
float o = getValueFromTensorPos_origin(out_pos[0], out_pos[1], out_pos[2], j);
float c = getValueFromTensorPos
LIMIT_COUNTER
_counter(out_pos[0], out_pos[1], j, out_pos[3]);
float o = getValueFromTensorPos
LIMIT_COUNTER
_origin(out_pos[0], out_pos[1], out_pos[2], j);
res += c * o;
}
setOutput(res);
...
...
src/shader/split/main.es6
浏览文件 @
3687a96f
...
...
@@ -6,7 +6,7 @@
export default `
// start函数
void main(void) {
int length = int(target_
value.length()
/ num);
int length = int(target_
length
/ num);
ivec4 oPos = getOutputTensorPos();
// 输出坐标转换为输入坐标
//int sumVal = oPos.g + oPos.a * channel_out + oPos.b * channel_out * width_shape_out + oPos.r * channel_out * width_shape_out * height_shape_out;
...
...
src/shader/split/params.es6
浏览文件 @
3687a96f
...
...
@@ -18,7 +18,7 @@ const int total_shape_out = TOTAL_SHAPE_OUT;
const int dim = DIM;
const int num = NUM;
const int target_
value[TARGET_LENGTH] = int[](TARGET_VALUE)
;
const int target_
length = TARGET_LENGTH
;
// 输入数据
...
...
src/shader/transpose2/main.es6
浏览文件 @
3687a96f
...
...
@@ -19,10 +19,10 @@ void main(void) {
o = getValueFromTensorPos_origin(oPos[0], oPos[1], oPos[2], oPos[3]);
}
else if (perm_size == 2) {
o = getValueFromTensorPos_origin(oPos[0], oPos[1], oPos[
min(2 + perm_0, 3)], oPos[min(2 + perm_1, 3
)]);
o = getValueFromTensorPos_origin(oPos[0], oPos[1], oPos[
(2 + perm_0)>3?3:(2 + perm_0)], oPos[(2 + perm_1)>3?3:(2 + perm_1
)]);
}
else if (perm_size == 3) {
o = getValueFromTensorPos_origin(oPos[0], oPos[
min(1 + perm_0, 3)], oPos[min(1 + perm_1, 3)], oPos[min(1 + perm_2, 3
)]);
o = getValueFromTensorPos_origin(oPos[0], oPos[
(1 + perm_0)>3?3:(1 + perm_0)], oPos[(1 + perm_1)>3?3:(1 + perm_1)], oPos[(1 + perm_2)>3?3:(1 + perm_2
)]);
}
else if (perm_size == 4) {
o = getValueFromTensorPos_origin(oPos[perm_0], oPos[perm_1], oPos[perm_2], oPos[perm_3]);
...
...
src/utils/opData.es6
浏览文件 @
3687a96f
...
...
@@ -125,7 +125,6 @@ const mergeType = 'conv2d-elementwise_add';
export default class OpData {
constructor(name, input = {}, output = {}, attrs = {}) {
// console.dir(this);
this.realName = name;
this.name = name;
this.attrs = attrs;
...
...
@@ -205,7 +204,6 @@ export default class OpData {
// 默认取第一个数据
const data = this.output[key] || [{}];
if (tensorName[key.toLowerCase()]) {
// console.dir(this);
data.forEach(item => {
item.tensorName = tensorName[key.toLowerCase()];
tensorData.push(item);
...
...
@@ -453,7 +451,7 @@ export default class OpData {
this.attrs.target_length = dim_value.length;
this.attrs.target_value = dim_value;
// 保存 输入 tensor 对应dim 的长度
this.attrs.inputs_dim =
[origin_shape[axis]
];
this.attrs.inputs_dim =
origin_shape[axis
];
this.attrs.dim = 4 - origin_shape.length + axis;
}
...
...
src/utils/utils.es6
浏览文件 @
3687a96f
...
...
@@ -119,12 +119,13 @@ export default {
let offsetY = 0;
// 安卓和ios的max texture size是4096, 改造存储空间(2bh, cw / 2)
let exceedMax = false;
// FIXME:为了让mobilenet能正常执行,这里先注释掉,待群哥修复
// if (height > MAX_TEXTURE_SIZE || width > MAX_TEXTURE_SIZE) {
// height *= 2;
// width = c * (Math.ceil(w / 2));
// exceedMax = true;
// }
// trick TEXTURE_SIZE 超限问题,后续升级更优解
if (height > 4096 || width > 4096) {
//console.error('大小超限', shape);
//height *= 4;
//width = c * (Math.ceil(w / 4));
//exceedMax = true;
}
if (isPacked) {
// 紧凑布局
height = b * c * Math.ceil(h / 2);
...
...
@@ -203,7 +204,7 @@ export default {
return fourDimShape;
},
/*
/*
* 将nhwc排布数据转为nchw排布数据
*/
nhwc2nchw(data, shape) {
...
...
@@ -226,7 +227,7 @@ export default {
return nchwData;
},
/*
/*
* 将nchw排布数据转为nhwc排布数据
*/
nchw2nhwc(data, shape) {
...
...
@@ -249,9 +250,9 @@ export default {
return nhwcData;
},
/*
/*
* 等距间隔打印数据
*/
*/
stridePrint(data, count = 20) {
let realPrintCount = count;
if (data.length <= realPrintCount) {
...
...
@@ -267,10 +268,10 @@ export default {
for (let i = 0; i < realPrintCount; i++) {
numbers.push(i * stride + ": " + data[i * stride]);
}
console.log(numbers)
console.log(numbers)
;
},
/*
/*
* 连续打印数据
*/
continuousPrint(data, count = 100) {
...
...
@@ -282,7 +283,7 @@ export default {
for (let i = 0; i < realPrintCount; i++) {
numbers.push(i + ": " + data[i]);
}
console.log(numbers)
console.log(numbers)
;
},
softmax(nchwData) {
...
...
@@ -306,6 +307,44 @@ export default {
}
return result;
},
// 针对model final texture输出超限后,inst.read读取数据不对的case
formatReadData(nchwData, nchwShape) {
if (nchwShape.length < 4) {
let batch = [];
for (let i = 0; i < (4 - nchwShape.length); i++) {
batch.push(1);
}
nchwShape = batch.concat(nchwShape);
}
const shape_b = nchwShape[0];
const shape_c = nchwShape[1];
const shape_h = nchwShape[2];
const shape_w = nchwShape[3];
const texture_height = shape_b * shape_h;
const texture_width = shape_c * shape_w;
if (texture_height <= 4096 && texture_width <= 4096) {
return nchwData;
}
let pos = 0;
const formatData = [];
const pieceW = Math.ceil(shape_w / 4); // reshape后的 shape_width
for (let bIndex = 0; bIndex < shape_b; bIndex++) {
for (let cIndex = 0; cIndex < shape_c; cIndex++) {
for (let hIndex = 0; hIndex < shape_h; hIndex++) {
for (let wIndex = 0; wIndex < shape_w; wIndex++) {
pos = Math.floor(wIndex / pieceW) * pieceW * (shape_h - 1) + wIndex + hIndex * pieceW;
pos += bIndex * shape_c * shape_h * shape_w+ cIndex * shape_h * shape_w;
formatData.push(nchwData[pos]);
}
}
}
}
return formatData;
}
};
/* eslint-enable */
test/data/map.json
浏览文件 @
3687a96f
{
0
:
'tench
,
Tinca
tinca'
,
1
:
'goldfish
,
Carassius
auratus'
,
2
:
'great
white
shark
,
white
shark
,
man-eater
,
man-eating
shark
,
Carcharodon
carcharias'
,
3
:
'tiger
shark
,
Galeocerdo
cuvieri'
,
4
:
'hammerhead
,
hammerhead
shark'
,
5
:
'electric
ray
,
crampfish
,
numbfish
,
torpedo'
,
6
:
'stingray'
,
7
:
'cock'
,
8
:
'hen'
,
9
:
'ostrich
,
Struthio
camelus'
,
10
:
'brambling
,
Fringilla
montifringilla'
,
11
:
'goldfinch
,
Carduelis
carduelis'
,
12
:
'house
finch
,
linnet
,
Carpodacus
mexicanus'
,
13
:
'junco
,
snowbird'
,
14
:
'indigo
bunting
,
indigo
finch
,
indigo
bird
,
Passerina
cyanea'
,
15
:
'robin
,
American
robin
,
Turdus
migratorius'
,
16
:
'bulbul'
,
17
:
'jay'
,
18
:
'magpie'
,
19
:
'chickadee'
,
20
:
'water
ouzel
,
dipper'
,
21
:
'kite'
,
22
:
'bald
eagle
,
American
eagle
,
Haliaeetus
leucocephalus'
,
23
:
'vulture'
,
24
:
'great
grey
owl
,
great
gray
owl
,
Strix
nebulosa'
,
25
:
'European
fire
salamander
,
Salamandra
salamandra'
,
26
:
'common
newt
,
Triturus
vulgaris'
,
27
:
'eft'
,
28
:
'spotted
salamander
,
Ambystoma
maculatum'
,
29
:
'axolotl
,
mud
puppy
,
Ambystoma
mexicanum'
,
30
:
'bullfrog
,
Rana
catesbeiana'
,
31
:
'tree
frog
,
tree-frog'
,
32
:
'tailed
frog
,
bell
toad
,
ribbed
toad
,
tailed
toad
,
Ascaphus
trui'
,
33
:
'loggerhead
,
loggerhead
turtle
,
Caretta
caretta'
,
34
:
'leatherback
turtle
,
leatherback
,
leathery
turtle
,
Dermochelys
coriacea'
,
35
:
'mud
turtle'
,
36
:
'terrapin'
,
37
:
'box
turtle
,
box
tortoise'
,
38
:
'banded
gecko'
,
39
:
'common
iguana
,
iguana
,
Iguana
iguana'
,
40
:
'American
chameleon
,
anole
,
Anolis
carolinensis'
,
41
:
'whiptail
,
whiptail
lizard'
,
42
:
'agama'
,
43
:
'frilled
lizard
,
Chlamydosaurus
kingi'
,
44
:
'alligator
lizard'
,
45
:
'Gila
monster
,
Heloderma
suspectum'
,
46
:
'green
lizard
,
Lacerta
viridis'
,
47
:
'African
chameleon
,
Chamaeleo
chamaeleon'
,
48
:
'Komodo
dragon
,
Komodo
lizard
,
dragon
lizard
,
giant
lizard
,
Varanus
komodoensis'
,
49
:
'African
crocodile
,
Nile
crocodile
,
Crocodylus
niloticus'
,
50
:
'American
alligator
,
Alligator
mississipiensis'
,
51
:
'triceratops'
,
52
:
'thunder
snake
,
worm
snake
,
Carphophis
amoenus'
,
53
:
'ringneck
snake
,
ring-necked
snake
,
ring
snake'
,
54
:
'hognose
snake
,
puff
adder
,
sand
viper'
,
55
:
'green
snake
,
grass
snake'
,
56
:
'king
snake
,
kingsnake'
,
57
:
'garter
snake
,
grass
snake'
,
58
:
'water
snake'
,
59
:
'vine
snake'
,
60
:
'night
snake
,
Hypsiglena
torquata'
,
61
:
'boa
constrictor
,
Constrictor
constrictor'
,
62
:
'rock
python
,
rock
snake
,
Python
sebae'
,
63
:
'Indian
cobra
,
Naja
naja'
,
64
:
'green
mamba'
,
65
:
'sea
snake'
,
66
:
'horned
viper
,
cerastes
,
sand
viper
,
horned
asp
,
Cerastes
cornutus'
,
67
:
'diamondback
,
diamondback
rattlesnake
,
Crotalus
adamanteus'
,
68
:
'sidewinder
,
horned
rattlesnake
,
Crotalus
cerastes'
,
69
:
'trilobite'
,
70
:
'harvestman
,
daddy
longlegs
,
Phalangium
opilio'
,
71
:
'scorpion'
,
72
:
'black
and
gold
garden
spider
,
Argiope
aurantia'
,
73
:
'barn
spider
,
Araneus
cavaticus'
,
74
:
'garden
spider
,
Aranea
diademata'
,
75
:
'black
widow
,
Latrodectus
mactans'
,
76
:
'tarantula'
,
77
:
'wolf
spider
,
hunting
spider'
,
78
:
'tick'
,
79
:
'centipede'
,
80
:
'black
grouse'
,
81
:
'ptarmigan'
,
82
:
'ruffed
grouse
,
partridge
,
Bonasa
umbellus'
,
83
:
'prairie
chicken
,
prairie
grouse
,
prairie
fowl'
,
84
:
'peacock'
,
85
:
'quail'
,
86
:
'partridge'
,
87
:
'African
grey
,
African
gray
,
Psittacus
erithacus'
,
88
:
'macaw'
,
89
:
'sulphur-crested
cockatoo
,
Kakatoe
galerita
,
Cacatua
galerita'
,
90
:
'lorikeet'
,
91
:
'coucal'
,
92
:
'bee
eater'
,
93
:
'hornbill'
,
94
:
'hummingbird'
,
95
:
'jacamar'
,
96
:
'toucan'
,
97
:
'drake'
,
98
:
'red-breasted
merganser
,
Mergus
serrator'
,
99
:
'goose'
,
100
:
'black
swan
,
Cygnus
atratus'
,
101
:
'tusker'
,
102
:
'echidna
,
spiny
anteater
,
anteater'
,
103
:
'platypus
,
duckbill
,
duckbilled
platypus
,
duck-billed
platypus
,
Ornithorhynchus
anatinus'
,
104
:
'wallaby
,
brush
kangaroo'
,
105
:
'koala
,
koala
bear
,
kangaroo
bear
,
native
bear
,
Phascolarctos
cinereus'
,
106
:
'wombat'
,
107
:
'jellyfish'
,
108
:
'sea
anemone
,
anemone'
,
109
:
'brain
coral'
,
110
:
'flatworm
,
platyhelminth'
,
111
:
'nematode
,
nematode
worm
,
roundworm'
,
112
:
'conch'
,
113
:
'snail'
,
114
:
'slug'
,
115
:
'sea
slug
,
nudibranch'
,
116
:
'chiton
,
coat-of-mail
shell
,
sea
cradle
,
polyplacophore'
,
117
:
'chambered
nautilus
,
pearly
nautilus
,
nautilus'
,
118
:
'Dungeness
crab
,
Cancer
magister'
,
119
:
'rock
crab
,
Cancer
irroratus'
,
120
:
'fiddler
crab'
,
121
:
'king
crab
,
Alaska
crab
,
Alaskan
king
crab
,
Alaska
king
crab
,
Paralithodes
camtschatica'
,
122
:
'American
lobster
,
Northern
lobster
,
Maine
lobster
,
Homarus
americanus'
,
123
:
'spiny
lobster
,
langouste
,
rock
lobster
,
crawfish
,
crayfish
,
sea
crawfish'
,
124
:
'crayfish
,
crawfish
,
crawdad
,
crawdaddy'
,
125
:
'hermit
crab'
,
126
:
'isopod'
,
127
:
'white
stork
,
Ciconia
ciconia'
,
128
:
'black
stork
,
Ciconia
nigra'
,
129
:
'spoonbill'
,
130
:
'flamingo'
,
131
:
'little
blue
heron
,
Egretta
caerulea'
,
132
:
'American
egret
,
great
white
heron
,
Egretta
albus'
,
133
:
'bittern'
,
134
:
'crane'
,
135
:
'limpkin
,
Aramus
pictus'
,
136
:
'European
gallinule
,
Porphyrio
porphyrio'
,
137
:
'American
coot
,
marsh
hen
,
mud
hen
,
water
hen
,
Fulica
americana'
,
138
:
'bustard'
,
139
:
'ruddy
turnstone
,
Arenaria
interpres'
,
140
:
'red-backed
sandpiper
,
dunlin
,
Erolia
alpina'
,
141
:
'redshank
,
Tringa
totanus'
,
142
:
'dowitcher'
,
143
:
'oystercatcher
,
oyster
catcher'
,
144
:
'pelican'
,
145
:
'king
penguin
,
Aptenodytes
patagonica'
,
146
:
'albatross
,
mollymawk'
,
147
:
'grey
whale
,
gray
whale
,
devilfish
,
Eschrichtius
gibbosus
,
Eschrichtius
robustus'
,
148
:
'killer
whale
,
killer
,
orca
,
grampus
,
sea
wolf
,
Orcinus
orca'
,
149
:
'dugong
,
Dugong
dugon'
,
150
:
'sea
lion'
,
151
:
'Chihuahua'
,
152
:
'Japanese
spaniel'
,
153
:
'Maltese
dog
,
Maltese
terrier
,
Maltese'
,
154
:
'Pekinese
,
Pekingese
,
Peke'
,
155
:
'Shih-Tzu'
,
156
:
'Blenheim
spaniel'
,
157
:
'papillon'
,
158
:
'toy
terrier'
,
159
:
'Rhodesian
ridgeback'
,
160
:
'Afghan
hound
,
Afghan'
,
161
:
'basset
,
basset
hound'
,
162
:
'beagle'
,
163
:
'bloodhound
,
sleuthhound'
,
164
:
'bluetick'
,
165
:
'black-and-tan
coonhound'
,
166
:
'Walker
hound
,
Walker
foxhound'
,
167
:
'English
foxhound'
,
168
:
'redbone'
,
169
:
'borzoi
,
Russian
wolfhound'
,
170
:
'Irish
wolfhound'
,
171
:
'Italian
greyhound'
,
172
:
'whippet'
,
173
:
'Ibizan
hound
,
Ibizan
Podenco'
,
174
:
'Norwegian
elkhound
,
elkhound'
,
175
:
'otterhound
,
otter
hound'
,
176
:
'Saluki
,
gazelle
hound'
,
177
:
'Scottish
deerhound
,
deerhound'
,
178
:
'Weimaraner'
,
179
:
'Staffordshire
bullterrier
,
Staffordshire
bull
terrier'
,
180
:
'American
Staffordshire
terrier
,
Staffordshire
terrier
,
American
pit
bull
terrier
,
pit
bull
terrier'
,
181
:
'Bedlington
terrier'
,
182
:
'Border
terrier'
,
183
:
'Kerry
blue
terrier'
,
184
:
'Irish
terrier'
,
185
:
'Norfolk
terrier'
,
186
:
'Norwich
terrier'
,
187
:
'Yorkshire
terrier'
,
188
:
'wire-haired
fox
terrier'
,
189
:
'Lakeland
terrier'
,
190
:
'Sealyham
terrier
,
Sealyham'
,
191
:
'Airedale
,
Airedale
terrier'
,
192
:
'cairn
,
cairn
terrier'
,
193
:
'Australian
terrier'
,
194
:
'Dandie
Dinmont
,
Dandie
Dinmont
terrier'
,
195
:
'Boston
bull
,
Boston
terrier'
,
196
:
'miniature
schnauzer'
,
197
:
'giant
schnauzer'
,
198
:
'standard
schnauzer'
,
199
:
'Scotch
terrier
,
Scottish
terrier
,
Scottie'
,
200
:
'Tibetan
terrier
,
chrysanthemum
dog'
,
201
:
'silky
terrier
,
Sydney
silky'
,
202
:
'soft-coated
wheaten
terrier'
,
203
:
'West
Highland
white
terrier'
,
204
:
'Lhasa
,
Lhasa
apso'
,
205
:
'flat-coated
retriever'
,
206
:
'curly-coated
retriever'
,
207
:
'golden
retriever'
,
208
:
'Labrador
retriever'
,
209
:
'Chesapeake
Bay
retriever'
,
210
:
'German
short-haired
pointer'
,
211
:
'vizsla
,
Hungarian
pointer'
,
212
:
'English
setter'
,
213
:
'Irish
setter
,
red
setter'
,
214
:
'Gordon
setter'
,
215
:
'Brittany
spaniel'
,
216
:
'clumber
,
clumber
spaniel'
,
217
:
'English
springer
,
English
springer
spaniel'
,
218
:
'Welsh
springer
spaniel'
,
219
:
'cocker
spaniel
,
English
cocker
spaniel
,
cocker'
,
220
:
'Sussex
spaniel'
,
221
:
'Irish
water
spaniel'
,
222
:
'kuvasz'
,
223
:
'schipperke'
,
224
:
'groenendael'
,
225
:
'malinois'
,
226
:
'briard'
,
227
:
'kelpie'
,
228
:
'komondor'
,
229
:
'Old
English
sheepdog
,
bobtail'
,
230
:
'Shetland
sheepdog
,
Shetland
sheep
dog
,
Shetland'
,
231
:
'collie'
,
232
:
'Border
collie'
,
233
:
'Bouvier
des
Flandres
,
Bouviers
des
Flandres'
,
234
:
'Rottweiler'
,
235
:
'German
shepherd
,
German
shepherd
dog
,
German
police
dog
,
alsatian'
,
236
:
'Doberman
,
Doberman
pinscher'
,
237
:
'miniature
pinscher'
,
238
:
'Greater
Swiss
Mountain
dog'
,
239
:
'Bernese
mountain
dog'
,
240
:
'Appenzeller'
,
241
:
'EntleBucher'
,
242
:
'boxer'
,
243
:
'bull
mastiff'
,
244
:
'Tibetan
mastiff'
,
245
:
'French
bulldog'
,
246
:
'Great
Dane'
,
247
:
'Saint
Bernard
,
St
Bernard'
,
248
:
'Eskimo
dog
,
husky'
,
249
:
'malamute
,
malemute
,
Alaskan
malamute'
,
250
:
'Siberian
husky'
,
251
:
'dalmatian
,
coach
dog
,
carriage
dog'
,
252
:
'affenpinscher
,
monkey
pinscher
,
monkey
dog'
,
253
:
'basenji'
,
254
:
'pug
,
pug-dog'
,
255
:
'Leonberg'
,
256
:
'Newfoundland
,
Newfoundland
dog'
,
257
:
'Great
Pyrenees'
,
258
:
'Samoyed
,
Samoyede'
,
259
:
'Pomeranian'
,
260
:
'chow
,
chow
chow'
,
261
:
'keeshond'
,
262
:
'Brabancon
griffon'
,
263
:
'Pembroke
,
Pembroke
Welsh
corgi'
,
264
:
'Cardigan
,
Cardigan
Welsh
corgi'
,
265
:
'toy
poodle'
,
266
:
'miniature
poodle'
,
267
:
'standard
poodle'
,
268
:
'Mexican
hairless'
,
269
:
'timber
wolf
,
grey
wolf
,
gray
wolf
,
Canis
lupus'
,
270
:
'white
wolf
,
Arctic
wolf
,
Canis
lupus
tundrarum'
,
271
:
'red
wolf
,
maned
wolf
,
Canis
rufus
,
Canis
niger'
,
272
:
'coyote
,
prairie
wolf
,
brush
wolf
,
Canis
latrans'
,
273
:
'dingo
,
warrigal
,
warragal
,
Canis
dingo'
,
274
:
'dhole
,
Cuon
alpinus'
,
275
:
'African
hunting
dog
,
hyena
dog
,
Cape
hunting
dog
,
Lycaon
pictus'
,
276
:
'hyena
,
hyaena'
,
277
:
'red
fox
,
Vulpes
vulpes'
,
278
:
'kit
fox
,
Vulpes
macrotis'
,
279
:
'Arctic
fox
,
white
fox
,
Alopex
lagopus'
,
280
:
'grey
fox
,
gray
fox
,
Urocyon
cinereoargenteus'
,
281
:
'tabby
,
tabby
cat'
,
282
:
'tiger
cat'
,
283
:
'Persian
cat'
,
284
:
'Siamese
cat
,
Siamese'
,
285
:
'Egyptian
cat'
,
286
:
'cougar
,
puma
,
catamount
,
mountain
lion
,
painter
,
panther
,
Felis
concolor'
,
287
:
'lynx
,
catamount'
,
288
:
'leopard
,
Panthera
pardus'
,
289
:
'snow
leopard
,
ounce
,
Panthera
uncia'
,
290
:
'jaguar
,
panther
,
Panthera
onca
,
Felis
onca'
,
291
:
'lion
,
king
of
beasts
,
Panthera
leo'
,
292
:
'tiger
,
Panthera
tigris'
,
293
:
'cheetah
,
chetah
,
Acinonyx
jubatus'
,
294
:
'brown
bear
,
bruin
,
Ursus
arctos'
,
295
:
'American
black
bear
,
black
bear
,
Ursus
americanus
,
Euarctos
americanus'
,
296
:
'ice
bear
,
polar
bear
,
Ursus
Maritimus
,
Thalarctos
maritimus'
,
297
:
'sloth
bear
,
Melursus
ursinus
,
Ursus
ursinus'
,
298
:
'mongoose'
,
299
:
'meerkat
,
mierkat'
,
300
:
'tiger
beetle'
,
301
:
'ladybug
,
ladybeetle
,
lady
beetle
,
ladybird
,
ladybird
beetle'
,
302
:
'ground
beetle
,
carabid
beetle'
,
303
:
'long-horned
beetle
,
longicorn
,
longicorn
beetle'
,
304
:
'leaf
beetle
,
chrysomelid'
,
305
:
'dung
beetle'
,
306
:
'rhinoceros
beetle'
,
307
:
'weevil'
,
308
:
'fly'
,
309
:
'bee'
,
310
:
'ant
,
emmet
,
pismire'
,
311
:
'grasshopper
,
hopper'
,
312
:
'cricket'
,
313
:
'walking
stick
,
walkingstick
,
stick
insect'
,
314
:
'cockroach
,
roach'
,
315
:
'mantis
,
mantid'
,
316
:
'cicada
,
cicala'
,
317
:
'leafhopper'
,
318
:
'lacewing
,
lacewing
fly'
,
319
:
"dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk"
,
320
:
'damselfly'
,
321
:
'admiral'
,
322
:
'ringlet
,
ringlet
butterfly'
,
323
:
'monarch
,
monarch
butterfly
,
milkweed
butterfly
,
Danaus
plexippus'
,
324
:
'cabbage
butterfly'
,
325
:
'sulphur
butterfly
,
sulfur
butterfly'
,
326
:
'lycaenid
,
lycaenid
butterfly'
,
327
:
'starfish
,
sea
star'
,
328
:
'sea
urchin'
,
329
:
'sea
cucumber
,
holothurian'
,
330
:
'wood
rabbit
,
cottontail
,
cottontail
rabbit'
,
331
:
'hare'
,
332
:
'Angora
,
Angora
rabbit'
,
333
:
'hamster'
,
334
:
'porcupine
,
hedgehog'
,
335
:
'fox
squirrel
,
eastern
fox
squirrel
,
Sciurus
niger'
,
336
:
'marmot'
,
337
:
'beaver'
,
338
:
'guinea
pig
,
Cavia
cobaya'
,
339
:
'sorrel'
,
340
:
'zebra'
,
341
:
'hog
,
pig
,
grunter
,
squealer
,
Sus
scrofa'
,
342
:
'wild
boar
,
boar
,
Sus
scrofa'
,
343
:
'warthog'
,
344
:
'hippopotamus
,
hippo
,
river
horse
,
Hippopotamus
amphibius'
,
345
:
'ox'
,
346
:
'water
buffalo
,
water
ox
,
Asiatic
buffalo
,
Bubalus
bubalis'
,
347
:
'bison'
,
348
:
'ram
,
tup'
,
349
:
'bighorn
,
bighorn
sheep
,
cimarron
,
Rocky
Mountain
bighorn
,
Rocky
Mountain
sheep
,
Ovis
canadensis'
,
350
:
'ibex
,
Capra
ibex'
,
351
:
'hartebeest'
,
352
:
'impala
,
Aepyceros
melampus'
,
353
:
'gazelle'
,
354
:
'Arabian
camel
,
dromedary
,
Camelus
dromedarius'
,
355
:
'llama'
,
356
:
'weasel'
,
357
:
'mink'
,
358
:
'polecat
,
fitch
,
foulmart
,
foumart
,
Mustela
putorius'
,
359
:
'black-footed
ferret
,
ferret
,
Mustela
nigripes'
,
360
:
'otter'
,
361
:
'skunk
,
polecat
,
wood
pussy'
,
362
:
'badger'
,
363
:
'armadillo'
,
364
:
'three-toed
sloth
,
ai
,
Bradypus
tridactylus'
,
365
:
'orangutan
,
orang
,
orangutang
,
Pongo
pygmaeus'
,
366
:
'gorilla
,
Gorilla
gorilla'
,
367
:
'chimpanzee
,
chimp
,
Pan
troglodytes'
,
368
:
'gibbon
,
Hylobates
lar'
,
369
:
'siamang
,
Hylobates
syndactylus
,
Symphalangus
syndactylus'
,
370
:
'guenon
,
guenon
monkey'
,
371
:
'patas
,
hussar
monkey
,
Erythrocebus
patas'
,
372
:
'baboon'
,
373
:
'macaque'
,
374
:
'langur'
,
375
:
'colobus
,
colobus
monkey'
,
376
:
'proboscis
monkey
,
Nasalis
larvatus'
,
377
:
'marmoset'
,
378
:
'capuchin
,
ringtail
,
Cebus
capucinus'
,
379
:
'howler
monkey
,
howler'
,
380
:
'titi
,
titi
monkey'
,
381
:
'spider
monkey
,
Ateles
geoffroyi'
,
382
:
'squirrel
monkey
,
Saimiri
sciureus'
,
383
:
'Madagascar
cat
,
ring-tailed
lemur
,
Lemur
catta'
,
384
:
'indri
,
indris
,
Indri
indri
,
Indri
brevicaudatus'
,
385
:
'Indian
elephant
,
Elephas
maximus'
,
386
:
'African
elephant
,
Loxodonta
africana'
,
387
:
'lesser
panda
,
red
panda
,
panda
,
bear
cat
,
cat
bear
,
Ailurus
fulgens'
,
388
:
'giant
panda
,
panda
,
panda
bear
,
coon
bear
,
Ailuropoda
melanoleuca'
,
389
:
'barracouta
,
snoek'
,
390
:
'eel'
,
391
:
'coho
,
cohoe
,
coho
salmon
,
blue
jack
,
silver
salmon
,
Oncorhynchus
kisutch'
,
392
:
'rock
beauty
,
Holocanthus
tricolor'
,
393
:
'anemone
fish'
,
394
:
'sturgeon'
,
395
:
'gar
,
garfish
,
garpike
,
billfish
,
Lepisosteus
osseus'
,
396
:
'lionfish'
,
397
:
'puffer
,
pufferfish
,
blowfish
,
globefish'
,
398
:
'abacus'
,
399
:
'abaya'
,
400
:
"academic gown, academic robe, judge's robe"
,
401
:
'accordion
,
piano
accordion
,
squeeze
box'
,
402
:
'acoustic
guitar'
,
403
:
'aircraft
carrier
,
carrier
,
flattop
,
attack
aircraft
carrier'
,
404
:
'airliner'
,
405
:
'airship
,
dirigible'
,
406
:
'altar'
,
407
:
'ambulance'
,
408
:
'amphibian
,
amphibious
vehicle'
,
409
:
'analog
clock'
,
410
:
'apiary
,
bee
house'
,
411
:
'apron'
,
412
:
'ashcan
,
trash
can
,
garbage
can
,
wastebin
,
ash
bin
,
ash-bin
,
ashbin
,
dustbin
,
trash
barrel
,
trash
bin'
,
413
:
'assault
rifle
,
assault
gun'
,
414
:
'backpack
,
back
pack
,
knapsack
,
packsack
,
rucksack
,
haversack'
,
415
:
'bakery
,
bakeshop
,
bakehouse'
,
416
:
'balance
beam
,
beam'
,
417
:
'balloon'
,
418
:
'ballpoint
,
ballpoint
pen
,
ballpen
,
Biro'
,
419
:
'Band
Aid'
,
420
:
'banjo'
,
421
:
'bannister
,
banister
,
balustrade
,
balusters
,
handrail'
,
422
:
'barbell'
,
423
:
'barber
chair'
,
424
:
'barbershop'
,
425
:
'barn'
,
426
:
'barometer'
,
427
:
'barrel
,
cask'
,
428
:
'barrow
,
garden
cart
,
lawn
cart
,
wheelbarrow'
,
429
:
'baseball'
,
430
:
'basketball'
,
431
:
'bassinet'
,
432
:
'bassoon'
,
433
:
'bathing
cap
,
swimming
cap'
,
434
:
'bath
towel'
,
435
:
'bathtub
,
bathing
tub
,
bath
,
tub'
,
436
:
'beach
wagon
,
station
wagon
,
wagon
,
estate
car
,
beach
waggon
,
station
waggon
,
waggon'
,
437
:
'beacon
,
lighthouse
,
beacon
light
,
pharos'
,
438
:
'beaker'
,
439
:
'bearskin
,
busby
,
shako'
,
440
:
'beer
bottle'
,
441
:
'beer
glass'
,
442
:
'bell
cote
,
bell
cot'
,
443
:
'bib'
,
444
:
'bicycle-built-for-two
,
tandem
bicycle
,
tandem'
,
445
:
'bikini
,
two-piece'
,
446
:
'binder
,
ring-binder'
,
447
:
'binoculars
,
field
glasses
,
opera
glasses'
,
448
:
'birdhouse'
,
449
:
'boathouse'
,
450
:
'bobsled
,
bobsleigh
,
bob'
,
451
:
'bolo
tie
,
bolo
,
bola
tie
,
bola'
,
452
:
'bonnet
,
poke
bonnet'
,
453
:
'bookcase'
,
454
:
'bookshop
,
bookstore
,
bookstall'
,
455
:
'bottlecap'
,
456
:
'bow'
,
457
:
'bow
tie
,
bow-tie
,
bowtie'
,
458
:
'brass
,
memorial
tablet
,
plaque'
,
459
:
'brassiere
,
bra
,
bandeau'
,
460
:
'breakwater
,
groin
,
groyne
,
mole
,
bulwark
,
seawall
,
jetty'
,
461
:
'breastplate
,
aegis
,
egis'
,
462
:
'broom'
,
463
:
'bucket
,
pail'
,
464
:
'buckle'
,
465
:
'bulletproof
vest'
,
466
:
'bullet
train
,
bullet'
,
467
:
'butcher
shop
,
meat
market'
,
468
:
'cab
,
hack
,
taxi
,
taxicab'
,
469
:
'caldron
,
cauldron'
,
470
:
'candle
,
taper
,
wax
light'
,
471
:
'cannon'
,
472
:
'canoe'
,
473
:
'can
opener
,
tin
opener'
,
474
:
'cardigan'
,
475
:
'car
mirror'
,
476
:
'carousel
,
carrousel
,
merry-go-round
,
roundabout
,
whirligig'
,
477
:
"carpenter's kit, tool kit"
,
478
:
'carton'
,
479
:
'car
wheel'
,
480
:
'cash
machine
,
cash
dispenser
,
automated
teller
machine
,
automatic
teller
machine
,
automated
teller
,
automatic
teller
,
ATM'
,
481
:
'cassette'
,
482
:
'cassette
player'
,
483
:
'castle'
,
484
:
'catamaran'
,
485
:
'CD
player'
,
486
:
'cello
,
violoncello'
,
487
:
'cellular
telephone
,
cellular
phone
,
cellphone
,
cell
,
mobile
phone'
,
488
:
'chain'
,
489
:
'chainlink
fence'
,
490
:
'chain
mail
,
ring
mail
,
mail
,
chain
armor
,
chain
armour
,
ring
armor
,
ring
armour'
,
491
:
'chain
saw
,
chainsaw'
,
492
:
'chest'
,
493
:
'chiffonier
,
commode'
,
494
:
'chime
,
bell
,
gong'
,
495
:
'china
cabinet
,
china
closet'
,
496
:
'Christmas
stocking'
,
497
:
'church
,
church
building'
,
498
:
'cinema
,
movie
theater
,
movie
theatre
,
movie
house
,
picture
palace'
,
499
:
'cleaver
,
meat
cleaver
,
chopper'
,
500
:
'cliff
dwelling'
,
501
:
'cloak'
,
502
:
'clog
,
geta
,
patten
,
sabot'
,
503
:
'cocktail
shaker'
,
504
:
'coffee
mug'
,
505
:
'coffeepot'
,
506
:
'coil
,
spiral
,
volute
,
whorl
,
helix'
,
507
:
'combination
lock'
,
508
:
'computer
keyboard
,
keypad'
,
509
:
'confectionery
,
confectionary
,
candy
store'
,
510
:
'container
ship
,
containership
,
container
vessel'
,
511
:
'convertible'
,
512
:
'corkscrew
,
bottle
screw'
,
513
:
'cornet
,
horn
,
trumpet
,
trump'
,
514
:
'cowboy
boot'
,
515
:
'cowboy
hat
,
ten-gallon
hat'
,
516
:
'cradle'
,
517
:
'crane'
,
518
:
'crash
helmet'
,
519
:
'crate'
,
520
:
'crib
,
cot'
,
521
:
'Crock
Pot'
,
522
:
'croquet
ball'
,
523
:
'crutch'
,
524
:
'cuirass'
,
525
:
'dam
,
dike
,
dyke'
,
526
:
'desk'
,
527
:
'desktop
computer'
,
528
:
'dial
telephone
,
dial
phone'
,
529
:
'diaper
,
nappy
,
napkin'
,
530
:
'digital
clock'
,
531
:
'digital
watch'
,
532
:
'dining
table
,
board'
,
533
:
'dishrag
,
dishcloth'
,
534
:
'dishwasher
,
dish
washer
,
dishwashing
machine'
,
535
:
'disk
brake
,
disc
brake'
,
536
:
'dock
,
dockage
,
docking
facility'
,
537
:
'dogsled
,
dog
sled
,
dog
sleigh'
,
538
:
'dome'
,
539
:
'doormat
,
welcome
mat'
,
540
:
'drilling
platform
,
offshore
rig'
,
541
:
'drum
,
membranophone
,
tympan'
,
542
:
'drumstick'
,
543
:
'dumbbell'
,
544
:
'Dutch
oven'
,
545
:
'electric
fan
,
blower'
,
546
:
'electric
guitar'
,
547
:
'electric
locomotive'
,
548
:
'entertainment
center'
,
549
:
'envelope'
,
550
:
'espresso
maker'
,
551
:
'face
powder'
,
552
:
'feather
boa
,
boa'
,
553
:
'file
,
file
cabinet
,
filing
cabinet'
,
554
:
'fireboat'
,
555
:
'fire
engine
,
fire
truck'
,
556
:
'fire
screen
,
fireguard'
,
557
:
'flagpole
,
flagstaff'
,
558
:
'flute
,
transverse
flute'
,
559
:
'folding
chair'
,
560
:
'football
helmet'
,
561
:
'forklift'
,
562
:
'fountain'
,
563
:
'fountain
pen'
,
564
:
'four-poster'
,
565
:
'freight
car'
,
566
:
'French
horn
,
horn'
,
567
:
'frying
pan
,
frypan
,
skillet'
,
568
:
'fur
coat'
,
569
:
'garbage
truck
,
dustcart'
,
570
:
'gasmask
,
respirator
,
gas
helmet'
,
571
:
'gas
pump
,
gasoline
pump
,
petrol
pump
,
island
dispenser'
,
572
:
'goblet'
,
573
:
'go-kart'
,
574
:
'golf
ball'
,
575
:
'golfcart
,
golf
cart'
,
576
:
'gondola'
,
577
:
'gong
,
tam-tam'
,
578
:
'gown'
,
579
:
'grand
piano
,
grand'
,
580
:
'greenhouse
,
nursery
,
glasshouse'
,
581
:
'grille
,
radiator
grille'
,
582
:
'grocery
store
,
grocery
,
food
market
,
market'
,
583
:
'guillotine'
,
584
:
'hair
slide'
,
585
:
'hair
spray'
,
586
:
'half
track'
,
587
:
'hammer'
,
588
:
'hamper'
,
589
:
'hand
blower
,
blow
dryer
,
blow
drier
,
hair
dryer
,
hair
drier'
,
590
:
'hand-held
computer
,
hand-held
microcomputer'
,
591
:
'handkerchief
,
hankie
,
hanky
,
hankey'
,
592
:
'hard
disc
,
hard
disk
,
fixed
disk'
,
593
:
'harmonica
,
mouth
organ
,
harp
,
mouth
harp'
,
594
:
'harp'
,
595
:
'harvester
,
reaper'
,
596
:
'hatchet'
,
597
:
'holster'
,
598
:
'home
theater
,
home
theatre'
,
599
:
'honeycomb'
,
600
:
'hook
,
claw'
,
601
:
'hoopskirt
,
crinoline'
,
602
:
'horizontal
bar
,
high
bar'
,
603
:
'horse
cart
,
horse-cart'
,
604
:
'hourglass'
,
605
:
'iPod'
,
606
:
'iron
,
smoothing
iron'
,
607
:
"jack-o'-lantern"
,
608
:
'jean
,
blue
jean
,
denim'
,
609
:
'jeep
,
landrover'
,
610
:
'jersey
,
T-shirt
,
tee
shirt'
,
611
:
'jigsaw
puzzle'
,
612
:
'jinrikisha
,
ricksha
,
rickshaw'
,
613
:
'joystick'
,
614
:
'kimono'
,
615
:
'knee
pad'
,
616
:
'knot'
,
617
:
'lab
coat
,
laboratory
coat'
,
618
:
'ladle'
,
619
:
'lampshade
,
lamp
shade'
,
620
:
'laptop
,
laptop
computer'
,
621
:
'lawn
mower
,
mower'
,
622
:
'lens
cap
,
lens
cover'
,
623
:
'letter
opener
,
paper
knife
,
paperknife'
,
624
:
'library'
,
625
:
'lifeboat'
,
626
:
'lighter
,
light
,
igniter
,
ignitor'
,
627
:
'limousine
,
limo'
,
628
:
'liner
,
ocean
liner'
,
629
:
'lipstick
,
lip
rouge'
,
630
:
'Loafer'
,
631
:
'lotion'
,
632
:
'loudspeaker
,
speaker
,
speaker
unit
,
loudspeaker
system
,
speaker
system'
,
633
:
"loupe, jeweler's loupe"
,
634
:
'lumbermill
,
sawmill'
,
635
:
'magnetic
compass'
,
636
:
'mailbag
,
postbag'
,
637
:
'mailbox
,
letter
box'
,
638
:
'maillot'
,
639
:
'maillot
,
tank
suit'
,
640
:
'manhole
cover'
,
641
:
'maraca'
,
642
:
'marimba
,
xylophone'
,
643
:
'mask'
,
644
:
'matchstick'
,
645
:
'maypole'
,
646
:
'maze
,
labyrinth'
,
647
:
'measuring
cup'
,
648
:
'medicine
chest
,
medicine
cabinet'
,
649
:
'megalith
,
megalithic
structure'
,
650
:
'microphone
,
mike'
,
651
:
'microwave
,
microwave
oven'
,
652
:
'military
uniform'
,
653
:
'milk
can'
,
654
:
'minibus'
,
655
:
'miniskirt
,
mini'
,
656
:
'minivan'
,
657
:
'missile'
,
658
:
'mitten'
,
659
:
'mixing
bowl'
,
660
:
'mobile
home
,
manufactured
home'
,
661
:
'Model
T'
,
662
:
'modem'
,
663
:
'monastery'
,
664
:
'monitor'
,
665
:
'moped'
,
666
:
'mortar'
,
667
:
'mortarboard'
,
668
:
'mosque'
,
669
:
'mosquito
net'
,
670
:
'motor
scooter
,
scooter'
,
671
:
'mountain
bike
,
all-terrain
bike
,
off-roader'
,
672
:
'mountain
tent'
,
673
:
'mouse
,
computer
mouse'
,
674
:
'mousetrap'
,
675
:
'moving
van'
,
676
:
'muzzle'
,
677
:
'nail'
,
678
:
'neck
brace'
,
679
:
'necklace'
,
680
:
'nipple'
,
681
:
'notebook
,
notebook
computer'
,
682
:
'obelisk'
,
683
:
'oboe
,
hautboy
,
hautbois'
,
684
:
'ocarina
,
sweet
potato'
,
685
:
'odometer
,
hodometer
,
mileometer
,
milometer'
,
686
:
'oil
filter'
,
687
:
'organ
,
pipe
organ'
,
688
:
'oscilloscope
,
scope
,
cathode-ray
oscilloscope
,
CRO'
,
689
:
'overskirt'
,
690
:
'oxcart'
,
691
:
'oxygen
mask'
,
692
:
'packet'
,
693
:
'paddle
,
boat
paddle'
,
694
:
'paddlewheel
,
paddle
wheel'
,
695
:
'padlock'
,
696
:
'paintbrush'
,
697
:
"pajama, pyjama, pj's, jammies"
,
698
:
'palace'
,
699
:
'panpipe
,
pandean
pipe
,
syrinx'
,
700
:
'paper
towel'
,
701
:
'parachute
,
chute'
,
702
:
'parallel
bars
,
bars'
,
703
:
'park
bench'
,
704
:
'parking
meter'
,
705
:
'passenger
car
,
coach
,
carriage'
,
706
:
'patio
,
terrace'
,
707
:
'pay-phone
,
pay-station'
,
708
:
'pedestal
,
plinth
,
footstall'
,
709
:
'pencil
box
,
pencil
case'
,
710
:
'pencil
sharpener'
,
711
:
'perfume
,
essence'
,
712
:
'Petri
dish'
,
713
:
'photocopier'
,
714
:
'pick
,
plectrum
,
plectron'
,
715
:
'pickelhaube'
,
716
:
'picket
fence
,
paling'
,
717
:
'pickup
,
pickup
truck'
,
718
:
'pier'
,
719
:
'piggy
bank
,
penny
bank'
,
720
:
'pill
bottle'
,
721
:
'pillow'
,
722
:
'ping-pong
ball'
,
723
:
'pinwheel'
,
724
:
'pirate
,
pirate
ship'
,
725
:
'pitcher
,
ewer'
,
726
:
"plane, carpenter's plane, woodworking plane"
,
727
:
'planetarium'
,
728
:
'plastic
bag'
,
729
:
'plate
rack'
,
730
:
'plow
,
plough'
,
731
:
"plunger, plumber's helper"
,
732
:
'Polaroid
camera
,
Polaroid
Land
camera'
,
733
:
'pole'
,
734
:
'police
van
,
police
wagon
,
paddy
wagon
,
patrol
wagon
,
wagon
,
black
Maria'
,
735
:
'poncho'
,
736
:
'pool
table
,
billiard
table
,
snooker
table'
,
737
:
'pop
bottle
,
soda
bottle'
,
738
:
'pot
,
flowerpot'
,
739
:
"potter's wheel"
,
740
:
'power
drill'
,
741
:
'prayer
rug
,
prayer
mat'
,
742
:
'printer'
,
743
:
'prison
,
prison
house'
,
744
:
'projectile
,
missile'
,
745
:
'projector'
,
746
:
'puck
,
hockey
puck'
,
747
:
'punching
bag
,
punch
bag
,
punching
ball
,
punchball'
,
748
:
'purse'
,
749
:
'quill
,
quill
pen'
,
750
:
'quilt
,
comforter
,
comfort
,
puff'
,
751
:
'racer
,
race
car
,
racing
car'
,
752
:
'racket
,
racquet'
,
753
:
'radiator'
,
754
:
'radio
,
wireless'
,
755
:
'radio
telescope
,
radio
reflector'
,
756
:
'rain
barrel'
,
757
:
'recreational
vehicle
,
RV
,
R.V.'
,
758
:
'reel'
,
759
:
'reflex
camera'
,
760
:
'refrigerator
,
icebox'
,
761
:
'remote
control
,
remote'
,
762
:
'restaurant
,
eating
house
,
eating
place
,
eatery'
,
763
:
'revolver
,
six-gun
,
six-shooter'
,
764
:
'rifle'
,
765
:
'rocking
chair
,
rocker'
,
766
:
'rotisserie'
,
767
:
'rubber
eraser
,
rubber
,
pencil
eraser'
,
768
:
'rugby
ball'
,
769
:
'rule
,
ruler'
,
770
:
'running
shoe'
,
771
:
'safe'
,
772
:
'safety
pin'
,
773
:
'saltshaker
,
salt
shaker'
,
774
:
'sandal'
,
775
:
'sarong'
,
776
:
'sax
,
saxophone'
,
777
:
'scabbard'
,
778
:
'scale
,
weighing
machine'
,
779
:
'school
bus'
,
780
:
'schooner'
,
781
:
'scoreboard'
,
782
:
'screen
,
CRT
screen'
,
783
:
'screw'
,
784
:
'screwdriver'
,
785
:
'seat
belt
,
seatbelt'
,
786
:
'sewing
machine'
,
787
:
'shield
,
buckler'
,
788
:
'shoe
shop
,
shoe-shop
,
shoe
store'
,
789
:
'shoji'
,
790
:
'shopping
basket'
,
791
:
'shopping
cart'
,
792
:
'shovel'
,
793
:
'shower
cap'
,
794
:
'shower
curtain'
,
795
:
'ski'
,
796
:
'ski
mask'
,
797
:
'sleeping
bag'
,
798
:
'slide
rule
,
slipstick'
,
799
:
'sliding
door'
,
800
:
'slot
,
one-armed
bandit'
,
801
:
'snorkel'
,
802
:
'snowmobile'
,
803
:
'snowplow
,
snowplough'
,
804
:
'soap
dispenser'
,
805
:
'soccer
ball'
,
806
:
'sock'
,
807
:
'solar
dish
,
solar
collector
,
solar
furnace'
,
808
:
'sombrero'
,
809
:
'soup
bowl'
,
810
:
'space
bar'
,
811
:
'space
heater'
,
812
:
'space
shuttle'
,
813
:
'spatula'
,
814
:
'speedboat'
,
815
:
"spider web, spider's web"
,
816
:
'spindle'
,
817
:
'sports
car
,
sport
car'
,
818
:
'spotlight
,
spot'
,
819
:
'stage'
,
820
:
'steam
locomotive'
,
821
:
'steel
arch
bridge'
,
822
:
'steel
drum'
,
823
:
'stethoscope'
,
824
:
'stole'
,
825
:
'stone
wall'
,
826
:
'stopwatch
,
stop
watch'
,
827
:
'stove'
,
828
:
'strainer'
,
829
:
'streetcar
,
tram
,
tramcar
,
trolley
,
trolley
car'
,
830
:
'stretcher'
,
831
:
'studio
couch
,
day
bed'
,
832
:
'stupa
,
tope'
,
833
:
'submarine
,
pigboat
,
sub
,
U-boat'
,
834
:
'suit
,
suit
of
clothes'
,
835
:
'sundial'
,
836
:
'sunglass'
,
837
:
'sunglasses
,
dark
glasses
,
shades'
,
838
:
'sunscreen
,
sunblock
,
sun
blocker'
,
839
:
'suspension
bridge'
,
840
:
'swab
,
swob
,
mop'
,
841
:
'sweatshirt'
,
842
:
'swimming
trunks
,
bathing
trunks'
,
843
:
'swing'
,
844
:
'switch
,
electric
switch
,
electrical
switch'
,
845
:
'syringe'
,
846
:
'table
lamp'
,
847
:
'tank
,
army
tank
,
armored
combat
vehicle
,
armoured
combat
vehicle'
,
848
:
'tape
player'
,
849
:
'teapot'
,
850
:
'teddy
,
teddy
bear'
,
851
:
'television
,
television
system'
,
852
:
'tennis
ball'
,
853
:
'thatch
,
thatched
roof'
,
854
:
'theater
curtain
,
theatre
curtain'
,
855
:
'thimble'
,
856
:
'thresher
,
thrasher
,
threshing
machine'
,
857
:
'throne'
,
858
:
'tile
roof'
,
859
:
'toaster'
,
860
:
'tobacco
shop
,
tobacconist
shop
,
tobacconist'
,
861
:
'toilet
seat'
,
862
:
'torch'
,
863
:
'totem
pole'
,
864
:
'tow
truck
,
tow
car
,
wrecker'
,
865
:
'toyshop'
,
866
:
'tractor'
,
867
:
'trailer
truck
,
tractor
trailer
,
trucking
rig
,
rig
,
articulated
lorry
,
semi'
,
868
:
'tray'
,
869
:
'trench
coat'
,
870
:
'tricycle
,
trike
,
velocipede'
,
871
:
'trimaran'
,
872
:
'tripod'
,
873
:
'triumphal
arch'
,
874
:
'trolleybus
,
trolley
coach
,
trackless
trolley'
,
875
:
'trombone'
,
876
:
'tub
,
vat'
,
877
:
'turnstile'
,
878
:
'typewriter
keyboard'
,
879
:
'umbrella'
,
880
:
'unicycle
,
monocycle'
,
881
:
'upright
,
upright
piano'
,
882
:
'vacuum
,
vacuum
cleaner'
,
883
:
'vase'
,
884
:
'vault'
,
885
:
'velvet'
,
886
:
'vending
machine'
,
887
:
'vestment'
,
888
:
'viaduct'
,
889
:
'violin
,
fiddle'
,
890
:
'volleyball'
,
891
:
'waffle
iron'
,
892
:
'wall
clock'
,
893
:
'wallet
,
billfold
,
notecase
,
pocketbook'
,
894
:
'wardrobe
,
closet
,
press'
,
895
:
'warplane
,
military
plane'
,
896
:
'washbasin
,
handbasin
,
washbowl
,
lavabo
,
wash-hand
basin'
,
897
:
'washer
,
automatic
washer
,
washing
machine'
,
898
:
'water
bottle'
,
899
:
'water
jug'
,
900
:
'water
tower'
,
901
:
'whiskey
jug'
,
902
:
'whistle'
,
903
:
'wig'
,
904
:
'window
screen'
,
905
:
'window
shade'
,
906
:
'Windsor
tie'
,
907
:
'wine
bottle'
,
908
:
'wing'
,
909
:
'wok'
,
910
:
'wooden
spoon'
,
911
:
'wool
,
woolen
,
woollen'
,
912
:
'worm
fence
,
snake
fence
,
snake-rail
fence
,
Virginia
fence'
,
913
:
'wreck'
,
914
:
'yawl'
,
915
:
'yurt'
,
916
:
'web
site
,
website
,
internet
site
,
site'
,
917
:
'comic
book'
,
918
:
'crossword
puzzle
,
crossword'
,
919
:
'street
sign'
,
920
:
'traffic
light
,
traffic
signal
,
stoplight'
,
921
:
'book
jacket
,
dust
cover
,
dust
jacket
,
dust
wrapper'
,
922
:
'menu'
,
923
:
'plate'
,
924
:
'guacamole'
,
925
:
'consomme'
,
926
:
'hot
pot
,
hotpot'
,
927
:
'trifle'
,
928
:
'ice
cream
,
icecream'
,
929
:
'ice
lolly
,
lolly
,
lollipop
,
popsicle'
,
930
:
'French
loaf'
,
931
:
'bagel
,
beigel'
,
932
:
'pretzel'
,
933
:
'cheeseburger'
,
934
:
'hotdog
,
hot
dog
,
red
hot'
,
935
:
'mashed
potato'
,
936
:
'head
cabbage'
,
937
:
'broccoli'
,
938
:
'cauliflower'
,
939
:
'zucchini
,
courgette'
,
940
:
'spaghetti
squash'
,
941
:
'acorn
squash'
,
942
:
'butternut
squash'
,
943
:
'cucumber
,
cuke'
,
944
:
'artichoke
,
globe
artichoke'
,
945
:
'bell
pepper'
,
946
:
'cardoon'
,
947
:
'mushroom'
,
948
:
'Granny
Smith'
,
949
:
'strawberry'
,
950
:
'orange'
,
951
:
'lemon'
,
952
:
'fig'
,
953
:
'pineapple
,
ananas'
,
954
:
'banana'
,
955
:
'jackfruit
,
jak
,
jack'
,
956
:
'custard
apple'
,
957
:
'pomegranate'
,
958
:
'hay'
,
959
:
'carbonara'
,
960
:
'chocolate
sauce
,
chocolate
syrup'
,
961
:
'dough'
,
962
:
'meat
loaf
,
meatloaf'
,
963
:
'pizza
,
pizza
pie'
,
964
:
'potpie'
,
965
:
'burrito'
,
966
:
'red
wine'
,
967
:
'espresso'
,
968
:
'cup'
,
969
:
'eggnog'
,
970
:
'alp'
,
971
:
'bubble'
,
972
:
'cliff
,
drop
,
drop-off'
,
973
:
'coral
reef'
,
974
:
'geyser'
,
975
:
'lakeside
,
lakeshore'
,
976
:
'promontory
,
headland
,
head
,
foreland'
,
977
:
'sandbar
,
sand
bar'
,
978
:
'seashore
,
coast
,
seacoast
,
sea-coast'
,
979
:
'valley
,
vale'
,
980
:
'volcano'
,
981
:
'ballplayer
,
baseball
player'
,
982
:
'groom
,
bridegroom'
,
983
:
'scuba
diver'
,
984
:
'rapeseed'
,
985
:
'daisy'
,
986
:
"yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum"
,
987
:
'corn'
,
988
:
'acorn'
,
989
:
'hip
,
rose
hip
,
rosehip'
,
990
:
'buckeye
,
horse
chestnut
,
conker'
,
991
:
'coral
fungus'
,
992
:
'agaric'
,
993
:
'gyromitra'
,
994
:
'stinkhorn
,
carrion
fungus'
,
995
:
'earthstar'
,
996
:
'hen-of-the-woods
,
hen
of
the
woods
,
Polyporus
frondosus
,
Grifola
frondosa'
,
997
:
'bolete'
,
998
:
'ear
,
spike
,
capitulum'
,
999
:
'toilet
tissue
,
toilet
paper
,
bathroom
tissue'
}
{
"0"
:
"tench, Tinca tinca"
,
"1"
:
"goldfish, Carassius auratus"
,
"2"
:
"great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias"
,
"3"
:
"tiger shark, Galeocerdo cuvieri"
,
"4"
:
"hammerhead, hammerhead shark"
,
"5"
:
"electric ray, crampfish, numbfish, torpedo"
,
"6"
:
"stingray"
,
"7"
:
"cock"
,
"8"
:
"hen"
,
"9"
:
"ostrich, Struthio camelus"
,
"10"
:
"brambling, Fringilla montifringilla"
,
"11"
:
"goldfinch, Carduelis carduelis"
,
"12"
:
"house finch, linnet, Carpodacus mexicanus"
,
"13"
:
"junco, snowbird"
,
"14"
:
"indigo bunting, indigo finch, indigo bird, Passerina cyanea"
,
"15"
:
"robin, American robin, Turdus migratorius"
,
"16"
:
"bulbul"
,
"17"
:
"jay"
,
"18"
:
"magpie"
,
"19"
:
"chickadee"
,
"20"
:
"water ouzel, dipper"
,
"21"
:
"kite"
,
"22"
:
"bald eagle, American eagle, Haliaeetus leucocephalus"
,
"23"
:
"vulture"
,
"24"
:
"great grey owl, great gray owl, Strix nebulosa"
,
"25"
:
"European fire salamander, Salamandra salamandra"
,
"26"
:
"common newt, Triturus vulgaris"
,
"27"
:
"eft"
,
"28"
:
"spotted salamander, Ambystoma maculatum"
,
"29"
:
"axolotl, mud puppy, Ambystoma mexicanum"
,
"30"
:
"bullfrog, Rana catesbeiana"
,
"31"
:
"tree frog, tree-frog"
,
"32"
:
"tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui"
,
"33"
:
"loggerhead, loggerhead turtle, Caretta caretta"
,
"34"
:
"leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea"
,
"35"
:
"mud turtle"
,
"36"
:
"terrapin"
,
"37"
:
"box turtle, box tortoise"
,
"38"
:
"banded gecko"
,
"39"
:
"common iguana, iguana, Iguana iguana"
,
"40"
:
"American chameleon, anole, Anolis carolinensis"
,
"41"
:
"whiptail, whiptail lizard"
,
"42"
:
"agama"
,
"43"
:
"frilled lizard, Chlamydosaurus kingi"
,
"44"
:
"alligator lizard"
,
"45"
:
"Gila monster, Heloderma suspectum"
,
"46"
:
"green lizard, Lacerta viridis"
,
"47"
:
"African chameleon, Chamaeleo chamaeleon"
,
"48"
:
"Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis"
,
"49"
:
"African crocodile, Nile crocodile, Crocodylus niloticus"
,
"50"
:
"American alligator, Alligator mississipiensis"
,
"51"
:
"triceratops"
,
"52"
:
"thunder snake, worm snake, Carphophis amoenus"
,
"53"
:
"ringneck snake, ring-necked snake, ring snake"
,
"54"
:
"hognose snake, puff adder, sand viper"
,
"55"
:
"green snake, grass snake"
,
"56"
:
"king snake, kingsnake"
,
"57"
:
"garter snake, grass snake"
,
"58"
:
"water snake"
,
"59"
:
"vine snake"
,
"60"
:
"night snake, Hypsiglena torquata"
,
"61"
:
"boa constrictor, Constrictor constrictor"
,
"62"
:
"rock python, rock snake, Python sebae"
,
"63"
:
"Indian cobra, Naja naja"
,
"64"
:
"green mamba"
,
"65"
:
"sea snake"
,
"66"
:
"horned viper, cerastes, sand viper, horned asp, Cerastes cornutus"
,
"67"
:
"diamondback, diamondback rattlesnake, Crotalus adamanteus"
,
"68"
:
"sidewinder, horned rattlesnake, Crotalus cerastes"
,
"69"
:
"trilobite"
,
"70"
:
"harvestman, daddy longlegs, Phalangium opilio"
,
"71"
:
"scorpion"
,
"72"
:
"black and gold garden spider, Argiope aurantia"
,
"73"
:
"barn spider, Araneus cavaticus"
,
"74"
:
"garden spider, Aranea diademata"
,
"75"
:
"black widow, Latrodectus mactans"
,
"76"
:
"tarantula"
,
"77"
:
"wolf spider, hunting spider"
,
"78"
:
"tick"
,
"79"
:
"centipede"
,
"80"
:
"black grouse"
,
"81"
:
"ptarmigan"
,
"82"
:
"ruffed grouse, partridge, Bonasa umbellus"
,
"83"
:
"prairie chicken, prairie grouse, prairie fowl"
,
"84"
:
"peacock"
,
"85"
:
"quail"
,
"86"
:
"partridge"
,
"87"
:
"African grey, African gray, Psittacus erithacus"
,
"88"
:
"macaw"
,
"89"
:
"sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita"
,
"90"
:
"lorikeet"
,
"91"
:
"coucal"
,
"92"
:
"bee eater"
,
"93"
:
"hornbill"
,
"94"
:
"hummingbird"
,
"95"
:
"jacamar"
,
"96"
:
"toucan"
,
"97"
:
"drake"
,
"98"
:
"red-breasted merganser, Mergus serrator"
,
"99"
:
"goose"
,
"100"
:
"black swan, Cygnus atratus"
,
"101"
:
"tusker"
,
"102"
:
"echidna, spiny anteater, anteater"
,
"103"
:
"platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus"
,
"104"
:
"wallaby, brush kangaroo"
,
"105"
:
"koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus"
,
"106"
:
"wombat"
,
"107"
:
"jellyfish"
,
"108"
:
"sea anemone, anemone"
,
"109"
:
"brain coral"
,
"110"
:
"flatworm, platyhelminth"
,
"111"
:
"nematode, nematode worm, roundworm"
,
"112"
:
"conch"
,
"113"
:
"snail"
,
"114"
:
"slug"
,
"115"
:
"sea slug, nudibranch"
,
"116"
:
"chiton, coat-of-mail shell, sea cradle, polyplacophore"
,
"117"
:
"chambered nautilus, pearly nautilus, nautilus"
,
"118"
:
"Dungeness crab, Cancer magister"
,
"119"
:
"rock crab, Cancer irroratus"
,
"120"
:
"fiddler crab"
,
"121"
:
"king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica"
,
"122"
:
"American lobster, Northern lobster, Maine lobster, Homarus americanus"
,
"123"
:
"spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish"
,
"124"
:
"crayfish, crawfish, crawdad, crawdaddy"
,
"125"
:
"hermit crab"
,
"126"
:
"isopod"
,
"127"
:
"white stork, Ciconia ciconia"
,
"128"
:
"black stork, Ciconia nigra"
,
"129"
:
"spoonbill"
,
"130"
:
"flamingo"
,
"131"
:
"little blue heron, Egretta caerulea"
,
"132"
:
"American egret, great white heron, Egretta albus"
,
"133"
:
"bittern"
,
"134"
:
"crane"
,
"135"
:
"limpkin, Aramus pictus"
,
"136"
:
"European gallinule, Porphyrio porphyrio"
,
"137"
:
"American coot, marsh hen, mud hen, water hen, Fulica americana"
,
"138"
:
"bustard"
,
"139"
:
"ruddy turnstone, Arenaria interpres"
,
"140"
:
"red-backed sandpiper, dunlin, Erolia alpina"
,
"141"
:
"redshank, Tringa totanus"
,
"142"
:
"dowitcher"
,
"143"
:
"oystercatcher, oyster catcher"
,
"144"
:
"pelican"
,
"145"
:
"king penguin, Aptenodytes patagonica"
,
"146"
:
"albatross, mollymawk"
,
"147"
:
"grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus"
,
"148"
:
"killer whale, killer, orca, grampus, sea wolf, Orcinus orca"
,
"149"
:
"dugong, Dugong dugon"
,
"150"
:
"sea lion"
,
"151"
:
"Chihuahua"
,
"152"
:
"Japanese spaniel"
,
"153"
:
"Maltese dog, Maltese terrier, Maltese"
,
"154"
:
"Pekinese, Pekingese, Peke"
,
"155"
:
"Shih-Tzu"
,
"156"
:
"Blenheim spaniel"
,
"157"
:
"papillon"
,
"158"
:
"toy terrier"
,
"159"
:
"Rhodesian ridgeback"
,
"160"
:
"Afghan hound, Afghan"
,
"161"
:
"basset, basset hound"
,
"162"
:
"beagle"
,
"163"
:
"bloodhound, sleuthhound"
,
"164"
:
"bluetick"
,
"165"
:
"black-and-tan coonhound"
,
"166"
:
"Walker hound, Walker foxhound"
,
"167"
:
"English foxhound"
,
"168"
:
"redbone"
,
"169"
:
"borzoi, Russian wolfhound"
,
"170"
:
"Irish wolfhound"
,
"171"
:
"Italian greyhound"
,
"172"
:
"whippet"
,
"173"
:
"Ibizan hound, Ibizan Podenco"
,
"174"
:
"Norwegian elkhound, elkhound"
,
"175"
:
"otterhound, otter hound"
,
"176"
:
"Saluki, gazelle hound"
,
"177"
:
"Scottish deerhound, deerhound"
,
"178"
:
"Weimaraner"
,
"179"
:
"Staffordshire bullterrier, Staffordshire bull terrier"
,
"180"
:
"American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier"
,
"181"
:
"Bedlington terrier"
,
"182"
:
"Border terrier"
,
"183"
:
"Kerry blue terrier"
,
"184"
:
"Irish terrier"
,
"185"
:
"Norfolk terrier"
,
"186"
:
"Norwich terrier"
,
"187"
:
"Yorkshire terrier"
,
"188"
:
"wire-haired fox terrier"
,
"189"
:
"Lakeland terrier"
,
"190"
:
"Sealyham terrier, Sealyham"
,
"191"
:
"Airedale, Airedale terrier"
,
"192"
:
"cairn, cairn terrier"
,
"193"
:
"Australian terrier"
,
"194"
:
"Dandie Dinmont, Dandie Dinmont terrier"
,
"195"
:
"Boston bull, Boston terrier"
,
"196"
:
"miniature schnauzer"
,
"197"
:
"giant schnauzer"
,
"198"
:
"standard schnauzer"
,
"199"
:
"Scotch terrier, Scottish terrier, Scottie"
,
"200"
:
"Tibetan terrier, chrysanthemum dog"
,
"201"
:
"silky terrier, Sydney silky"
,
"202"
:
"soft-coated wheaten terrier"
,
"203"
:
"West Highland white terrier"
,
"204"
:
"Lhasa, Lhasa apso"
,
"205"
:
"flat-coated retriever"
,
"206"
:
"curly-coated retriever"
,
"207"
:
"golden retriever"
,
"208"
:
"Labrador retriever"
,
"209"
:
"Chesapeake Bay retriever"
,
"210"
:
"German short-haired pointer"
,
"211"
:
"vizsla, Hungarian pointer"
,
"212"
:
"English setter"
,
"213"
:
"Irish setter, red setter"
,
"214"
:
"Gordon setter"
,
"215"
:
"Brittany spaniel"
,
"216"
:
"clumber, clumber spaniel"
,
"217"
:
"English springer, English springer spaniel"
,
"218"
:
"Welsh springer spaniel"
,
"219"
:
"cocker spaniel, English cocker spaniel, cocker"
,
"220"
:
"Sussex spaniel"
,
"221"
:
"Irish water spaniel"
,
"222"
:
"kuvasz"
,
"223"
:
"schipperke"
,
"224"
:
"groenendael"
,
"225"
:
"malinois"
,
"226"
:
"briard"
,
"227"
:
"kelpie"
,
"228"
:
"komondor"
,
"229"
:
"Old English sheepdog, bobtail"
,
"230"
:
"Shetland sheepdog, Shetland sheep dog, Shetland"
,
"231"
:
"collie"
,
"232"
:
"Border collie"
,
"233"
:
"Bouvier des Flandres, Bouviers des Flandres"
,
"234"
:
"Rottweiler"
,
"235"
:
"German shepherd, German shepherd dog, German police dog, alsatian"
,
"236"
:
"Doberman, Doberman pinscher"
,
"237"
:
"miniature pinscher"
,
"238"
:
"Greater Swiss Mountain dog"
,
"239"
:
"Bernese mountain dog"
,
"240"
:
"Appenzeller"
,
"241"
:
"EntleBucher"
,
"242"
:
"boxer"
,
"243"
:
"bull mastiff"
,
"244"
:
"Tibetan mastiff"
,
"245"
:
"French bulldog"
,
"246"
:
"Great Dane"
,
"247"
:
"Saint Bernard, St Bernard"
,
"248"
:
"Eskimo dog, husky"
,
"249"
:
"malamute, malemute, Alaskan malamute"
,
"250"
:
"Siberian husky"
,
"251"
:
"dalmatian, coach dog, carriage dog"
,
"252"
:
"affenpinscher, monkey pinscher, monkey dog"
,
"253"
:
"basenji"
,
"254"
:
"pug, pug-dog"
,
"255"
:
"Leonberg"
,
"256"
:
"Newfoundland, Newfoundland dog"
,
"257"
:
"Great Pyrenees"
,
"258"
:
"Samoyed, Samoyede"
,
"259"
:
"Pomeranian"
,
"260"
:
"chow, chow chow"
,
"261"
:
"keeshond"
,
"262"
:
"Brabancon griffon"
,
"263"
:
"Pembroke, Pembroke Welsh corgi"
,
"264"
:
"Cardigan, Cardigan Welsh corgi"
,
"265"
:
"toy poodle"
,
"266"
:
"miniature poodle"
,
"267"
:
"standard poodle"
,
"268"
:
"Mexican hairless"
,
"269"
:
"timber wolf, grey wolf, gray wolf, Canis lupus"
,
"270"
:
"white wolf, Arctic wolf, Canis lupus tundrarum"
,
"271"
:
"red wolf, maned wolf, Canis rufus, Canis niger"
,
"272"
:
"coyote, prairie wolf, brush wolf, Canis latrans"
,
"273"
:
"dingo, warrigal, warragal, Canis dingo"
,
"274"
:
"dhole, Cuon alpinus"
,
"275"
:
"African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus"
,
"276"
:
"hyena, hyaena"
,
"277"
:
"red fox, Vulpes vulpes"
,
"278"
:
"kit fox, Vulpes macrotis"
,
"279"
:
"Arctic fox, white fox, Alopex lagopus"
,
"280"
:
"grey fox, gray fox, Urocyon cinereoargenteus"
,
"281"
:
"tabby, tabby cat"
,
"282"
:
"tiger cat"
,
"283"
:
"Persian cat"
,
"284"
:
"Siamese cat, Siamese"
,
"285"
:
"Egyptian cat"
,
"286"
:
"cougar, puma, catamount, mountain lion, painter, panther, Felis concolor"
,
"287"
:
"lynx, catamount"
,
"288"
:
"leopard, Panthera pardus"
,
"289"
:
"snow leopard, ounce, Panthera uncia"
,
"290"
:
"jaguar, panther, Panthera onca, Felis onca"
,
"291"
:
"lion, king of beasts, Panthera leo"
,
"292"
:
"tiger, Panthera tigris"
,
"293"
:
"cheetah, chetah, Acinonyx jubatus"
,
"294"
:
"brown bear, bruin, Ursus arctos"
,
"295"
:
"American black bear, black bear, Ursus americanus, Euarctos americanus"
,
"296"
:
"ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus"
,
"297"
:
"sloth bear, Melursus ursinus, Ursus ursinus"
,
"298"
:
"mongoose"
,
"299"
:
"meerkat, mierkat"
,
"300"
:
"tiger beetle"
,
"301"
:
"ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle"
,
"302"
:
"ground beetle, carabid beetle"
,
"303"
:
"long-horned beetle, longicorn, longicorn beetle"
,
"304"
:
"leaf beetle, chrysomelid"
,
"305"
:
"dung beetle"
,
"306"
:
"rhinoceros beetle"
,
"307"
:
"weevil"
,
"308"
:
"fly"
,
"309"
:
"bee"
,
"310"
:
"ant, emmet, pismire"
,
"311"
:
"grasshopper, hopper"
,
"312"
:
"cricket"
,
"313"
:
"walking stick, walkingstick, stick insect"
,
"314"
:
"cockroach, roach"
,
"315"
:
"mantis, mantid"
,
"316"
:
"cicada, cicala"
,
"317"
:
"leafhopper"
,
"318"
:
"lacewing, lacewing fly"
,
"319"
:
"dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk"
,
"320"
:
"damselfly"
,
"321"
:
"admiral"
,
"322"
:
"ringlet, ringlet butterfly"
,
"323"
:
"monarch, monarch butterfly, milkweed butterfly, Danaus plexippus"
,
"324"
:
"cabbage butterfly"
,
"325"
:
"sulphur butterfly, sulfur butterfly"
,
"326"
:
"lycaenid, lycaenid butterfly"
,
"327"
:
"starfish, sea star"
,
"328"
:
"sea urchin"
,
"329"
:
"sea cucumber, holothurian"
,
"330"
:
"wood rabbit, cottontail, cottontail rabbit"
,
"331"
:
"hare"
,
"332"
:
"Angora, Angora rabbit"
,
"333"
:
"hamster"
,
"334"
:
"porcupine, hedgehog"
,
"335"
:
"fox squirrel, eastern fox squirrel, Sciurus niger"
,
"336"
:
"marmot"
,
"337"
:
"beaver"
,
"338"
:
"guinea pig, Cavia cobaya"
,
"339"
:
"sorrel"
,
"340"
:
"zebra"
,
"341"
:
"hog, pig, grunter, squealer, Sus scrofa"
,
"342"
:
"wild boar, boar, Sus scrofa"
,
"343"
:
"warthog"
,
"344"
:
"hippopotamus, hippo, river horse, Hippopotamus amphibius"
,
"345"
:
"ox"
,
"346"
:
"water buffalo, water ox, Asiatic buffalo, Bubalus bubalis"
,
"347"
:
"bison"
,
"348"
:
"ram, tup"
,
"349"
:
"bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis"
,
"350"
:
"ibex, Capra ibex"
,
"351"
:
"hartebeest"
,
"352"
:
"impala, Aepyceros melampus"
,
"353"
:
"gazelle"
,
"354"
:
"Arabian camel, dromedary, Camelus dromedarius"
,
"355"
:
"llama"
,
"356"
:
"weasel"
,
"357"
:
"mink"
,
"358"
:
"polecat, fitch, foulmart, foumart, Mustela putorius"
,
"359"
:
"black-footed ferret, ferret, Mustela nigripes"
,
"360"
:
"otter"
,
"361"
:
"skunk, polecat, wood pussy"
,
"362"
:
"badger"
,
"363"
:
"armadillo"
,
"364"
:
"three-toed sloth, ai, Bradypus tridactylus"
,
"365"
:
"orangutan, orang, orangutang, Pongo pygmaeus"
,
"366"
:
"gorilla, Gorilla gorilla"
,
"367"
:
"chimpanzee, chimp, Pan troglodytes"
,
"368"
:
"gibbon, Hylobates lar"
,
"369"
:
"siamang, Hylobates syndactylus, Symphalangus syndactylus"
,
"370"
:
"guenon, guenon monkey"
,
"371"
:
"patas, hussar monkey, Erythrocebus patas"
,
"372"
:
"baboon"
,
"373"
:
"macaque"
,
"374"
:
"langur"
,
"375"
:
"colobus, colobus monkey"
,
"376"
:
"proboscis monkey, Nasalis larvatus"
,
"377"
:
"marmoset"
,
"378"
:
"capuchin, ringtail, Cebus capucinus"
,
"379"
:
"howler monkey, howler"
,
"380"
:
"titi, titi monkey"
,
"381"
:
"spider monkey, Ateles geoffroyi"
,
"382"
:
"squirrel monkey, Saimiri sciureus"
,
"383"
:
"Madagascar cat, ring-tailed lemur, Lemur catta"
,
"384"
:
"indri, indris, Indri indri, Indri brevicaudatus"
,
"385"
:
"Indian elephant, Elephas maximus"
,
"386"
:
"African elephant, Loxodonta africana"
,
"387"
:
"lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens"
,
"388"
:
"giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca"
,
"389"
:
"barracouta, snoek"
,
"390"
:
"eel"
,
"391"
:
"coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch"
,
"392"
:
"rock beauty, Holocanthus tricolor"
,
"393"
:
"anemone fish"
,
"394"
:
"sturgeon"
,
"395"
:
"gar, garfish, garpike, billfish, Lepisosteus osseus"
,
"396"
:
"lionfish"
,
"397"
:
"puffer, pufferfish, blowfish, globefish"
,
"398"
:
"abacus"
,
"399"
:
"abaya"
,
"400"
:
"academic gown, academic robe, judge's robe"
,
"401"
:
"accordion, piano accordion, squeeze box"
,
"402"
:
"acoustic guitar"
,
"403"
:
"aircraft carrier, carrier, flattop, attack aircraft carrier"
,
"404"
:
"airliner"
,
"405"
:
"airship, dirigible"
,
"406"
:
"altar"
,
"407"
:
"ambulance"
,
"408"
:
"amphibian, amphibious vehicle"
,
"409"
:
"analog clock"
,
"410"
:
"apiary, bee house"
,
"411"
:
"apron"
,
"412"
:
"ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin"
,
"413"
:
"assault rifle, assault gun"
,
"414"
:
"backpack, back pack, knapsack, packsack, rucksack, haversack"
,
"415"
:
"bakery, bakeshop, bakehouse"
,
"416"
:
"balance beam, beam"
,
"417"
:
"balloon"
,
"418"
:
"ballpoint, ballpoint pen, ballpen, Biro"
,
"419"
:
"Band Aid"
,
"420"
:
"banjo"
,
"421"
:
"bannister, banister, balustrade, balusters, handrail"
,
"422"
:
"barbell"
,
"423"
:
"barber chair"
,
"424"
:
"barbershop"
,
"425"
:
"barn"
,
"426"
:
"barometer"
,
"427"
:
"barrel, cask"
,
"428"
:
"barrow, garden cart, lawn cart, wheelbarrow"
,
"429"
:
"baseball"
,
"430"
:
"basketball"
,
"431"
:
"bassinet"
,
"432"
:
"bassoon"
,
"433"
:
"bathing cap, swimming cap"
,
"434"
:
"bath towel"
,
"435"
:
"bathtub, bathing tub, bath, tub"
,
"436"
:
"beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon"
,
"437"
:
"beacon, lighthouse, beacon light, pharos"
,
"438"
:
"beaker"
,
"439"
:
"bearskin, busby, shako"
,
"440"
:
"beer bottle"
,
"441"
:
"beer glass"
,
"442"
:
"bell cote, bell cot"
,
"443"
:
"bib"
,
"444"
:
"bicycle-built-for-two, tandem bicycle, tandem"
,
"445"
:
"bikini, two-piece"
,
"446"
:
"binder, ring-binder"
,
"447"
:
"binoculars, field glasses, opera glasses"
,
"448"
:
"birdhouse"
,
"449"
:
"boathouse"
,
"450"
:
"bobsled, bobsleigh, bob"
,
"451"
:
"bolo tie, bolo, bola tie, bola"
,
"452"
:
"bonnet, poke bonnet"
,
"453"
:
"bookcase"
,
"454"
:
"bookshop, bookstore, bookstall"
,
"455"
:
"bottlecap"
,
"456"
:
"bow"
,
"457"
:
"bow tie, bow-tie, bowtie"
,
"458"
:
"brass, memorial tablet, plaque"
,
"459"
:
"brassiere, bra, bandeau"
,
"460"
:
"breakwater, groin, groyne, mole, bulwark, seawall, jetty"
,
"461"
:
"breastplate, aegis, egis"
,
"462"
:
"broom"
,
"463"
:
"bucket, pail"
,
"464"
:
"buckle"
,
"465"
:
"bulletproof vest"
,
"466"
:
"bullet train, bullet"
,
"467"
:
"butcher shop, meat market"
,
"468"
:
"cab, hack, taxi, taxicab"
,
"469"
:
"caldron, cauldron"
,
"470"
:
"candle, taper, wax light"
,
"471"
:
"cannon"
,
"472"
:
"canoe"
,
"473"
:
"can opener, tin opener"
,
"474"
:
"cardigan"
,
"475"
:
"car mirror"
,
"476"
:
"carousel, carrousel, merry-go-round, roundabout, whirligig"
,
"477"
:
"carpenter's kit, tool kit"
,
"478"
:
"carton"
,
"479"
:
"car wheel"
,
"480"
:
"cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM"
,
"481"
:
"cassette"
,
"482"
:
"cassette player"
,
"483"
:
"castle"
,
"484"
:
"catamaran"
,
"485"
:
"CD player"
,
"486"
:
"cello, violoncello"
,
"487"
:
"cellular telephone, cellular phone, cellphone, cell, mobile phone"
,
"488"
:
"chain"
,
"489"
:
"chainlink fence"
,
"490"
:
"chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour"
,
"491"
:
"chain saw, chainsaw"
,
"492"
:
"chest"
,
"493"
:
"chiffonier, commode"
,
"494"
:
"chime, bell, gong"
,
"495"
:
"china cabinet, china closet"
,
"496"
:
"Christmas stocking"
,
"497"
:
"church, church building"
,
"498"
:
"cinema, movie theater, movie theatre, movie house, picture palace"
,
"499"
:
"cleaver, meat cleaver, chopper"
,
"500"
:
"cliff dwelling"
,
"501"
:
"cloak"
,
"502"
:
"clog, geta, patten, sabot"
,
"503"
:
"cocktail shaker"
,
"504"
:
"coffee mug"
,
"505"
:
"coffeepot"
,
"506"
:
"coil, spiral, volute, whorl, helix"
,
"507"
:
"combination lock"
,
"508"
:
"computer keyboard, keypad"
,
"509"
:
"confectionery, confectionary, candy store"
,
"510"
:
"container ship, containership, container vessel"
,
"511"
:
"convertible"
,
"512"
:
"corkscrew, bottle screw"
,
"513"
:
"cornet, horn, trumpet, trump"
,
"514"
:
"cowboy boot"
,
"515"
:
"cowboy hat, ten-gallon hat"
,
"516"
:
"cradle"
,
"517"
:
"crane"
,
"518"
:
"crash helmet"
,
"519"
:
"crate"
,
"520"
:
"crib, cot"
,
"521"
:
"Crock Pot"
,
"522"
:
"croquet ball"
,
"523"
:
"crutch"
,
"524"
:
"cuirass"
,
"525"
:
"dam, dike, dyke"
,
"526"
:
"desk"
,
"527"
:
"desktop computer"
,
"528"
:
"dial telephone, dial phone"
,
"529"
:
"diaper, nappy, napkin"
,
"530"
:
"digital clock"
,
"531"
:
"digital watch"
,
"532"
:
"dining table, board"
,
"533"
:
"dishrag, dishcloth"
,
"534"
:
"dishwasher, dish washer, dishwashing machine"
,
"535"
:
"disk brake, disc brake"
,
"536"
:
"dock, dockage, docking facility"
,
"537"
:
"dogsled, dog sled, dog sleigh"
,
"538"
:
"dome"
,
"539"
:
"doormat, welcome mat"
,
"540"
:
"drilling platform, offshore rig"
,
"541"
:
"drum, membranophone, tympan"
,
"542"
:
"drumstick"
,
"543"
:
"dumbbell"
,
"544"
:
"Dutch oven"
,
"545"
:
"electric fan, blower"
,
"546"
:
"electric guitar"
,
"547"
:
"electric locomotive"
,
"548"
:
"entertainment center"
,
"549"
:
"envelope"
,
"550"
:
"espresso maker"
,
"551"
:
"face powder"
,
"552"
:
"feather boa, boa"
,
"553"
:
"file, file cabinet, filing cabinet"
,
"554"
:
"fireboat"
,
"555"
:
"fire engine, fire truck"
,
"556"
:
"fire screen, fireguard"
,
"557"
:
"flagpole, flagstaff"
,
"558"
:
"flute, transverse flute"
,
"559"
:
"folding chair"
,
"560"
:
"football helmet"
,
"561"
:
"forklift"
,
"562"
:
"fountain"
,
"563"
:
"fountain pen"
,
"564"
:
"four-poster"
,
"565"
:
"freight car"
,
"566"
:
"French horn, horn"
,
"567"
:
"frying pan, frypan, skillet"
,
"568"
:
"fur coat"
,
"569"
:
"garbage truck, dustcart"
,
"570"
:
"gasmask, respirator, gas helmet"
,
"571"
:
"gas pump, gasoline pump, petrol pump, island dispenser"
,
"572"
:
"goblet"
,
"573"
:
"go-kart"
,
"574"
:
"golf ball"
,
"575"
:
"golfcart, golf cart"
,
"576"
:
"gondola"
,
"577"
:
"gong, tam-tam"
,
"578"
:
"gown"
,
"579"
:
"grand piano, grand"
,
"580"
:
"greenhouse, nursery, glasshouse"
,
"581"
:
"grille, radiator grille"
,
"582"
:
"grocery store, grocery, food market, market"
,
"583"
:
"guillotine"
,
"584"
:
"hair slide"
,
"585"
:
"hair spray"
,
"586"
:
"half track"
,
"587"
:
"hammer"
,
"588"
:
"hamper"
,
"589"
:
"hand blower, blow dryer, blow drier, hair dryer, hair drier"
,
"590"
:
"hand-held computer, hand-held microcomputer"
,
"591"
:
"handkerchief, hankie, hanky, hankey"
,
"592"
:
"hard disc, hard disk, fixed disk"
,
"593"
:
"harmonica, mouth organ, harp, mouth harp"
,
"594"
:
"harp"
,
"595"
:
"harvester, reaper"
,
"596"
:
"hatchet"
,
"597"
:
"holster"
,
"598"
:
"home theater, home theatre"
,
"599"
:
"honeycomb"
,
"600"
:
"hook, claw"
,
"601"
:
"hoopskirt, crinoline"
,
"602"
:
"horizontal bar, high bar"
,
"603"
:
"horse cart, horse-cart"
,
"604"
:
"hourglass"
,
"605"
:
"iPod"
,
"606"
:
"iron, smoothing iron"
,
"607"
:
"jack-o'-lantern"
,
"608"
:
"jean, blue jean, denim"
,
"609"
:
"jeep, landrover"
,
"610"
:
"jersey, T-shirt, tee shirt"
,
"611"
:
"jigsaw puzzle"
,
"612"
:
"jinrikisha, ricksha, rickshaw"
,
"613"
:
"joystick"
,
"614"
:
"kimono"
,
"615"
:
"knee pad"
,
"616"
:
"knot"
,
"617"
:
"lab coat, laboratory coat"
,
"618"
:
"ladle"
,
"619"
:
"lampshade, lamp shade"
,
"620"
:
"laptop, laptop computer"
,
"621"
:
"lawn mower, mower"
,
"622"
:
"lens cap, lens cover"
,
"623"
:
"letter opener, paper knife, paperknife"
,
"624"
:
"library"
,
"625"
:
"lifeboat"
,
"626"
:
"lighter, light, igniter, ignitor"
,
"627"
:
"limousine, limo"
,
"628"
:
"liner, ocean liner"
,
"629"
:
"lipstick, lip rouge"
,
"630"
:
"Loafer"
,
"631"
:
"lotion"
,
"632"
:
"loudspeaker, speaker, speaker unit, loudspeaker system, speaker system"
,
"633"
:
"loupe, jeweler's loupe"
,
"634"
:
"lumbermill, sawmill"
,
"635"
:
"magnetic compass"
,
"636"
:
"mailbag, postbag"
,
"637"
:
"mailbox, letter box"
,
"638"
:
"maillot"
,
"639"
:
"maillot, tank suit"
,
"640"
:
"manhole cover"
,
"641"
:
"maraca"
,
"642"
:
"marimba, xylophone"
,
"643"
:
"mask"
,
"644"
:
"matchstick"
,
"645"
:
"maypole"
,
"646"
:
"maze, labyrinth"
,
"647"
:
"measuring cup"
,
"648"
:
"medicine chest, medicine cabinet"
,
"649"
:
"megalith, megalithic structure"
,
"650"
:
"microphone, mike"
,
"651"
:
"microwave, microwave oven"
,
"652"
:
"military uniform"
,
"653"
:
"milk can"
,
"654"
:
"minibus"
,
"655"
:
"miniskirt, mini"
,
"656"
:
"minivan"
,
"657"
:
"missile"
,
"658"
:
"mitten"
,
"659"
:
"mixing bowl"
,
"660"
:
"mobile home, manufactured home"
,
"661"
:
"Model T"
,
"662"
:
"modem"
,
"663"
:
"monastery"
,
"664"
:
"monitor"
,
"665"
:
"moped"
,
"666"
:
"mortar"
,
"667"
:
"mortarboard"
,
"668"
:
"mosque"
,
"669"
:
"mosquito net"
,
"670"
:
"motor scooter, scooter"
,
"671"
:
"mountain bike, all-terrain bike, off-roader"
,
"672"
:
"mountain tent"
,
"673"
:
"mouse, computer mouse"
,
"674"
:
"mousetrap"
,
"675"
:
"moving van"
,
"676"
:
"muzzle"
,
"677"
:
"nail"
,
"678"
:
"neck brace"
,
"679"
:
"necklace"
,
"680"
:
"nipple"
,
"681"
:
"notebook, notebook computer"
,
"682"
:
"obelisk"
,
"683"
:
"oboe, hautboy, hautbois"
,
"684"
:
"ocarina, sweet potato"
,
"685"
:
"odometer, hodometer, mileometer, milometer"
,
"686"
:
"oil filter"
,
"687"
:
"organ, pipe organ"
,
"688"
:
"oscilloscope, scope, cathode-ray oscilloscope, CRO"
,
"689"
:
"overskirt"
,
"690"
:
"oxcart"
,
"691"
:
"oxygen mask"
,
"692"
:
"packet"
,
"693"
:
"paddle, boat paddle"
,
"694"
:
"paddlewheel, paddle wheel"
,
"695"
:
"padlock"
,
"696"
:
"paintbrush"
,
"697"
:
"pajama, pyjama, pj's, jammies"
,
"698"
:
"palace"
,
"699"
:
"panpipe, pandean pipe, syrinx"
,
"700"
:
"paper towel"
,
"701"
:
"parachute, chute"
,
"702"
:
"parallel bars, bars"
,
"703"
:
"park bench"
,
"704"
:
"parking meter"
,
"705"
:
"passenger car, coach, carriage"
,
"706"
:
"patio, terrace"
,
"707"
:
"pay-phone, pay-station"
,
"708"
:
"pedestal, plinth, footstall"
,
"709"
:
"pencil box, pencil case"
,
"710"
:
"pencil sharpener"
,
"711"
:
"perfume, essence"
,
"712"
:
"Petri dish"
,
"713"
:
"photocopier"
,
"714"
:
"pick, plectrum, plectron"
,
"715"
:
"pickelhaube"
,
"716"
:
"picket fence, paling"
,
"717"
:
"pickup, pickup truck"
,
"718"
:
"pier"
,
"719"
:
"piggy bank, penny bank"
,
"720"
:
"pill bottle"
,
"721"
:
"pillow"
,
"722"
:
"ping-pong ball"
,
"723"
:
"pinwheel"
,
"724"
:
"pirate, pirate ship"
,
"725"
:
"pitcher, ewer"
,
"726"
:
"plane, carpenter's plane, woodworking plane"
,
"727"
:
"planetarium"
,
"728"
:
"plastic bag"
,
"729"
:
"plate rack"
,
"730"
:
"plow, plough"
,
"731"
:
"plunger, plumber's helper"
,
"732"
:
"Polaroid camera, Polaroid Land camera"
,
"733"
:
"pole"
,
"734"
:
"police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria"
,
"735"
:
"poncho"
,
"736"
:
"pool table, billiard table, snooker table"
,
"737"
:
"pop bottle, soda bottle"
,
"738"
:
"pot, flowerpot"
,
"739"
:
"potter's wheel"
,
"740"
:
"power drill"
,
"741"
:
"prayer rug, prayer mat"
,
"742"
:
"printer"
,
"743"
:
"prison, prison house"
,
"744"
:
"projectile, missile"
,
"745"
:
"projector"
,
"746"
:
"puck, hockey puck"
,
"747"
:
"punching bag, punch bag, punching ball, punchball"
,
"748"
:
"purse"
,
"749"
:
"quill, quill pen"
,
"750"
:
"quilt, comforter, comfort, puff"
,
"751"
:
"racer, race car, racing car"
,
"752"
:
"racket, racquet"
,
"753"
:
"radiator"
,
"754"
:
"radio, wireless"
,
"755"
:
"radio telescope, radio reflector"
,
"756"
:
"rain barrel"
,
"757"
:
"recreational vehicle, RV, R.V."
,
"758"
:
"reel"
,
"759"
:
"reflex camera"
,
"760"
:
"refrigerator, icebox"
,
"761"
:
"remote control, remote"
,
"762"
:
"restaurant, eating house, eating place, eatery"
,
"763"
:
"revolver, six-gun, six-shooter"
,
"764"
:
"rifle"
,
"765"
:
"rocking chair, rocker"
,
"766"
:
"rotisserie"
,
"767"
:
"rubber eraser, rubber, pencil eraser"
,
"768"
:
"rugby ball"
,
"769"
:
"rule, ruler"
,
"770"
:
"running shoe"
,
"771"
:
"safe"
,
"772"
:
"safety pin"
,
"773"
:
"saltshaker, salt shaker"
,
"774"
:
"sandal"
,
"775"
:
"sarong"
,
"776"
:
"sax, saxophone"
,
"777"
:
"scabbard"
,
"778"
:
"scale, weighing machine"
,
"779"
:
"school bus"
,
"780"
:
"schooner"
,
"781"
:
"scoreboard"
,
"782"
:
"screen, CRT screen"
,
"783"
:
"screw"
,
"784"
:
"screwdriver"
,
"785"
:
"seat belt, seatbelt"
,
"786"
:
"sewing machine"
,
"787"
:
"shield, buckler"
,
"788"
:
"shoe shop, shoe-shop, shoe store"
,
"789"
:
"shoji"
,
"790"
:
"shopping basket"
,
"791"
:
"shopping cart"
,
"792"
:
"shovel"
,
"793"
:
"shower cap"
,
"794"
:
"shower curtain"
,
"795"
:
"ski"
,
"796"
:
"ski mask"
,
"797"
:
"sleeping bag"
,
"798"
:
"slide rule, slipstick"
,
"799"
:
"sliding door"
,
"800"
:
"slot, one-armed bandit"
,
"801"
:
"snorkel"
,
"802"
:
"snowmobile"
,
"803"
:
"snowplow, snowplough"
,
"804"
:
"soap dispenser"
,
"805"
:
"soccer ball"
,
"806"
:
"sock"
,
"807"
:
"solar dish, solar collector, solar furnace"
,
"808"
:
"sombrero"
,
"809"
:
"soup bowl"
,
"810"
:
"space bar"
,
"811"
:
"space heater"
,
"812"
:
"space shuttle"
,
"813"
:
"spatula"
,
"814"
:
"speedboat"
,
"815"
:
"spider web, spider's web"
,
"816"
:
"spindle"
,
"817"
:
"sports car, sport car"
,
"818"
:
"spotlight, spot"
,
"819"
:
"stage"
,
"820"
:
"steam locomotive"
,
"821"
:
"steel arch bridge"
,
"822"
:
"steel drum"
,
"823"
:
"stethoscope"
,
"824"
:
"stole"
,
"825"
:
"stone wall"
,
"826"
:
"stopwatch, stop watch"
,
"827"
:
"stove"
,
"828"
:
"strainer"
,
"829"
:
"streetcar, tram, tramcar, trolley, trolley car"
,
"830"
:
"stretcher"
,
"831"
:
"studio couch, day bed"
,
"832"
:
"stupa, tope"
,
"833"
:
"submarine, pigboat, sub, U-boat"
,
"834"
:
"suit, suit of clothes"
,
"835"
:
"sundial"
,
"836"
:
"sunglass"
,
"837"
:
"sunglasses, dark glasses, shades"
,
"838"
:
"sunscreen, sunblock, sun blocker"
,
"839"
:
"suspension bridge"
,
"840"
:
"swab, swob, mop"
,
"841"
:
"sweatshirt"
,
"842"
:
"swimming trunks, bathing trunks"
,
"843"
:
"swing"
,
"844"
:
"switch, electric switch, electrical switch"
,
"845"
:
"syringe"
,
"846"
:
"table lamp"
,
"847"
:
"tank, army tank, armored combat vehicle, armoured combat vehicle"
,
"848"
:
"tape player"
,
"849"
:
"teapot"
,
"850"
:
"teddy, teddy bear"
,
"851"
:
"television, television system"
,
"852"
:
"tennis ball"
,
"853"
:
"thatch, thatched roof"
,
"854"
:
"theater curtain, theatre curtain"
,
"855"
:
"thimble"
,
"856"
:
"thresher, thrasher, threshing machine"
,
"857"
:
"throne"
,
"858"
:
"tile roof"
,
"859"
:
"toaster"
,
"860"
:
"tobacco shop, tobacconist shop, tobacconist"
,
"861"
:
"toilet seat"
,
"862"
:
"torch"
,
"863"
:
"totem pole"
,
"864"
:
"tow truck, tow car, wrecker"
,
"865"
:
"toyshop"
,
"866"
:
"tractor"
,
"867"
:
"trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi"
,
"868"
:
"tray"
,
"869"
:
"trench coat"
,
"870"
:
"tricycle, trike, velocipede"
,
"871"
:
"trimaran"
,
"872"
:
"tripod"
,
"873"
:
"triumphal arch"
,
"874"
:
"trolleybus, trolley coach, trackless trolley"
,
"875"
:
"trombone"
,
"876"
:
"tub, vat"
,
"877"
:
"turnstile"
,
"878"
:
"typewriter keyboard"
,
"879"
:
"umbrella"
,
"880"
:
"unicycle, monocycle"
,
"881"
:
"upright, upright piano"
,
"882"
:
"vacuum, vacuum cleaner"
,
"883"
:
"vase"
,
"884"
:
"vault"
,
"885"
:
"velvet"
,
"886"
:
"vending machine"
,
"887"
:
"vestment"
,
"888"
:
"viaduct"
,
"889"
:
"violin, fiddle"
,
"890"
:
"volleyball"
,
"891"
:
"waffle iron"
,
"892"
:
"wall clock"
,
"893"
:
"wallet, billfold, notecase, pocketbook"
,
"894"
:
"wardrobe, closet, press"
,
"895"
:
"warplane, military plane"
,
"896"
:
"washbasin, handbasin, washbowl, lavabo, wash-hand basin"
,
"897"
:
"washer, automatic washer, washing machine"
,
"898"
:
"water bottle"
,
"899"
:
"water jug"
,
"900"
:
"water tower"
,
"901"
:
"whiskey jug"
,
"902"
:
"whistle"
,
"903"
:
"wig"
,
"904"
:
"window screen"
,
"905"
:
"window shade"
,
"906"
:
"Windsor tie"
,
"907"
:
"wine bottle"
,
"908"
:
"wing"
,
"909"
:
"wok"
,
"910"
:
"wooden spoon"
,
"911"
:
"wool, woolen, woollen"
,
"912"
:
"worm fence, snake fence, snake-rail fence, Virginia fence"
,
"913"
:
"wreck"
,
"914"
:
"yawl"
,
"915"
:
"yurt"
,
"916"
:
"web site, website, internet site, site"
,
"917"
:
"comic book"
,
"918"
:
"crossword puzzle, crossword"
,
"919"
:
"street sign"
,
"920"
:
"traffic light, traffic signal, stoplight"
,
"921"
:
"book jacket, dust cover, dust jacket, dust wrapper"
,
"922"
:
"menu"
,
"923"
:
"plate"
,
"924"
:
"guacamole"
,
"925"
:
"consomme"
,
"926"
:
"hot pot, hotpot"
,
"927"
:
"trifle"
,
"928"
:
"ice cream, icecream"
,
"929"
:
"ice lolly, lolly, lollipop, popsicle"
,
"930"
:
"French loaf"
,
"931"
:
"bagel, beigel"
,
"932"
:
"pretzel"
,
"933"
:
"cheeseburger"
,
"934"
:
"hotdog, hot dog, red hot"
,
"935"
:
"mashed potato"
,
"936"
:
"head cabbage"
,
"937"
:
"broccoli"
,
"938"
:
"cauliflower"
,
"939"
:
"zucchini, courgette"
,
"940"
:
"spaghetti squash"
,
"941"
:
"acorn squash"
,
"942"
:
"butternut squash"
,
"943"
:
"cucumber, cuke"
,
"944"
:
"artichoke, globe artichoke"
,
"945"
:
"bell pepper"
,
"946"
:
"cardoon"
,
"947"
:
"mushroom"
,
"948"
:
"Granny Smith"
,
"949"
:
"strawberry"
,
"950"
:
"orange"
,
"951"
:
"lemon"
,
"952"
:
"fig"
,
"953"
:
"pineapple, ananas"
,
"954"
:
"banana"
,
"955"
:
"jackfruit, jak, jack"
,
"956"
:
"custard apple"
,
"957"
:
"pomegranate"
,
"958"
:
"hay"
,
"959"
:
"carbonara"
,
"960"
:
"chocolate sauce, chocolate syrup"
,
"961"
:
"dough"
,
"962"
:
"meat loaf, meatloaf"
,
"963"
:
"pizza, pizza pie"
,
"964"
:
"potpie"
,
"965"
:
"burrito"
,
"966"
:
"red wine"
,
"967"
:
"espresso"
,
"968"
:
"cup"
,
"969"
:
"eggnog"
,
"970"
:
"alp"
,
"971"
:
"bubble"
,
"972"
:
"cliff, drop, drop-off"
,
"973"
:
"coral reef"
,
"974"
:
"geyser"
,
"975"
:
"lakeside, lakeshore"
,
"976"
:
"promontory, headland, head, foreland"
,
"977"
:
"sandbar, sand bar"
,
"978"
:
"seashore, coast, seacoast, sea-coast"
,
"979"
:
"valley, vale"
,
"980"
:
"volcano"
,
"981"
:
"ballplayer, baseball player"
,
"982"
:
"groom, bridegroom"
,
"983"
:
"scuba diver"
,
"984"
:
"rapeseed"
,
"985"
:
"daisy"
,
"986"
:
"yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum"
,
"987"
:
"corn"
,
"988"
:
"acorn"
,
"989"
:
"hip, rose hip, rosehip"
,
"990"
:
"buckeye, horse chestnut, conker"
,
"991"
:
"coral fungus"
,
"992"
:
"agaric"
,
"993"
:
"gyromitra"
,
"994"
:
"stinkhorn, carrion fungus"
,
"995"
:
"earthstar"
,
"996"
:
"hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa"
,
"997"
:
"bolete"
,
"998"
:
"ear, spike, capitulum"
,
"999"
:
"toilet tissue, toilet paper, bathroom tissue"
}
\ No newline at end of file
test/data/model.test.conv2d.json
浏览文件 @
3687a96f
...
...
@@ -126,7 +126,6 @@
2
,
2
]
},
}
]
}
test/testUtils/testUtils.es6
浏览文件 @
3687a96f
...
...
@@ -22,7 +22,7 @@ const unitPath = {
'split'
:
'model.test.split.json'
};
// 制定运行的 op
const
modelType
=
'
split
'
;
const
modelType
=
'
conv2d
'
;
// 制定运行的 op
const
unitData
=
unitPath
[
modelType
];
...
...
@@ -63,13 +63,13 @@ async function run() {
// 获取 NHWC -> NCHW 的 输出
const
outputNCHWShape
=
getOutputShape
();
const
outputNHWCShape
=
nchwShape2nhwcShape
(
outputNCHWShape
);
let
nchwResult
=
Utils
.
nhwc2nchw
(
result
,
outputNHWCShape
);
console
.
log
(
'result'
);
cons
ole
.
log
(
result
);
let
nchwResult
=
Utils
.
nhwc2nchw
(
result
,
outputNHWCShape
);
cons
t
formatData
=
Utils
.
formatReadData
(
nchwResult
,
outputNCHWShape
);
console
.
log
(
'NCHW RESULT'
);
console
.
log
(
nchwResult
);
console
.
log
(
formatData
);
}
run
();
...
...
@@ -112,6 +112,7 @@ function nchwShape2nhwcShape(nchw) {
}
batchNCHW
=
batch
.
concat
(
nchw
);
}
const
N
=
batchNCHW
[
0
];
const
C
=
batchNCHW
[
1
];
const
H
=
batchNCHW
[
2
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录