diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/README.md b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/README.md
deleted file mode 100644
index 34bee6bfb0f15a38290b6c8bc737345fb11a931f..0000000000000000000000000000000000000000
--- a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/README.md
+++ /dev/null
@@ -1,159 +0,0 @@
-```shell
-$ hub install mobilenet_v2_imagenet_ssld==1.0.0
-```
-
-
-
MobileNet 系列的网络结构
-
-
-模型的详情可参考[论文](https://arxiv.org/pdf/1801.04381.pdf)
-
-## 命令行预测
-
-```
-hub run mobilenet_v2_imagenet_ssld --input_path "/PATH/TO/IMAGE"
-```
-
-## API
-
-```python
-def get_expected_image_width()
-```
-
-返回预处理的图片宽度,也就是224。
-
-```python
-def get_expected_image_height()
-```
-
-返回预处理的图片高度,也就是224。
-
-```python
-def get_pretrained_images_mean()
-```
-
-返回预处理的图片均值,也就是 \[0.485, 0.456, 0.406\]。
-
-```python
-def get_pretrained_images_std()
-```
-
-返回预处理的图片标准差,也就是 \[0.229, 0.224, 0.225\]。
-
-
-```python
-def context(trainable=True, pretrained=True)
-```
-
-**参数**
-
-* trainable (bool): 计算图的参数是否为可训练的;
-* pretrained (bool): 是否加载默认的预训练模型。
-
-**返回**
-
-* inputs (dict): 计算图的输入,key 为 'image', value 为图片的张量;
-* outputs (dict): 计算图的输出,key 为 'classification' 和 'feature_map',其相应的值为:
- * classification (paddle.fluid.framework.Variable): 分类结果,也就是全连接层的输出;
- * feature\_map (paddle.fluid.framework.Variable): 特征匹配,全连接层前面的那个张量。
-* context\_prog(fluid.Program): 计算图,用于迁移学习。
-
-```python
-def classification(images=None,
- paths=None,
- batch_size=1,
- use_gpu=False,
- top_k=1):
-```
-
-**参数**
-
-* images (list\[numpy.ndarray\]): 图片数据,每一个图片数据的shape 均为 \[H, W, C\],颜色空间为 BGR;
-* paths (list\[str\]): 图片的路径;
-* batch\_size (int): batch 的大小;
-* use\_gpu (bool): 是否使用 GPU 来预测;
-* top\_k (int): 返回预测结果的前 k 个。
-
-**返回**
-
-res (list\[dict\]): 分类结果,列表的每一个元素均为字典,其中 key 为识别动物的类别,value为置信度。
-
-```python
-def save_inference_model(dirname,
- model_filename=None,
- params_filename=None,
- combined=True)
-```
-
-将模型保存到指定路径。
-
-**参数**
-
-* dirname: 存在模型的目录名称
-* model_filename: 模型文件名称,默认为\_\_model\_\_
-* params_filename: 参数文件名称,默认为\_\_params\_\_(仅当`combined`为True时生效)
-* combined: 是否将参数保存到统一的一个文件中
-
-## 代码示例
-
-```python
-import paddlehub as hub
-import cv2
-
-classifier = hub.Module(name="mobilenet_v2_imagenet_ssld")
-
-result = classifier.classification(images=[cv2.imread('/PATH/TO/IMAGE')])
-# or
-# result = classifier.classification(paths=['/PATH/TO/IMAGE'])
-```
-
-## 服务部署
-
-PaddleHub Serving可以部署一个在线动物识别服务。
-
-## 第一步:启动PaddleHub Serving
-
-运行启动命令:
-```shell
-$ hub serving start -m mobilenet_v2_imagenet_ssld
-```
-
-这样就完成了一个在线动物识别服务化API的部署,默认端口号为8866。
-
-**NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
-
-## 第二步:发送预测请求
-
-配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
-
-```python
-import requests
-import json
-import cv2
-import base64
-
-
-def cv2_to_base64(image):
- data = cv2.imencode('.jpg', image)[1]
- return base64.b64encode(data.tostring()).decode('utf8')
-
-
-# 发送HTTP请求
-data = {'images':[cv2_to_base64(cv2.imread("/PATH/TO/IMAGE"))]}
-headers = {"Content-type": "application/json"}
-url = "http://127.0.0.1:8866/predict/mobilenet_v2_imagenet_ssld"
-r = requests.post(url=url, headers=headers, data=json.dumps(data))
-
-# 打印预测结果
-print(r.json()["results"])
-```
-
-### 查看代码
-
-[PaddleClas](https://github.com/PaddlePaddle/PaddleClas)
-
-### 依赖
-
-paddlepaddle >= 1.6.2
-
-paddlehub >= 1.6.0
diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/__init__.py b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/data_feed.py b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/data_feed.py
deleted file mode 100644
index d5ffb5efe9fdfbd143b949892aa44d851e907b41..0000000000000000000000000000000000000000
--- a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/data_feed.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# coding=utf-8
-import os
-import time
-from collections import OrderedDict
-
-import cv2
-import numpy as np
-from PIL import Image
-
-__all__ = ['reader']
-
-DATA_DIM = 224
-img_mean = np.array([0.485, 0.456, 0.406]).reshape((3, 1, 1))
-img_std = np.array([0.229, 0.224, 0.225]).reshape((3, 1, 1))
-
-
-def resize_short(img, target_size):
- percent = float(target_size) / min(img.size[0], img.size[1])
- resized_width = int(round(img.size[0] * percent))
- resized_height = int(round(img.size[1] * percent))
- img = img.resize((resized_width, resized_height), Image.LANCZOS)
- return img
-
-
-def crop_image(img, target_size, center):
- width, height = img.size
- size = target_size
- if center == True:
- w_start = (width - size) / 2
- h_start = (height - size) / 2
- else:
- w_start = np.random.randint(0, width - size + 1)
- h_start = np.random.randint(0, height - size + 1)
- w_end = w_start + size
- h_end = h_start + size
- img = img.crop((w_start, h_start, w_end, h_end))
- return img
-
-
-def process_image(img):
- img = resize_short(img, target_size=256)
- img = crop_image(img, target_size=DATA_DIM, center=True)
- if img.mode != 'RGB':
- img = img.convert('RGB')
- img = np.array(img).astype('float32').transpose((2, 0, 1)) / 255
- img -= img_mean
- img /= img_std
- return img
-
-
-def reader(images=None, paths=None):
- """
- Preprocess to yield image.
-
- Args:
- images (list[numpy.ndarray]): images data, shape of each is [H, W, C].
- paths (list[str]): paths to images.
-
- Yield:
- each (collections.OrderedDict): info of original image, preprocessed image.
- """
- component = list()
- if paths:
- for im_path in paths:
- each = OrderedDict()
- assert os.path.isfile(
- im_path), "The {} isn't a valid file path.".format(im_path)
- each['org_im_path'] = im_path
- each['org_im'] = Image.open(im_path)
- each['org_im_width'], each['org_im_height'] = each['org_im'].size
- component.append(each)
- if images is not None:
- assert type(images), "images is a list."
- for im in images:
- each = OrderedDict()
- each['org_im'] = Image.fromarray(im[:, :, ::-1])
- each['org_im_path'] = 'ndarray_time={}'.format(
- round(time.time(), 6) * 1e6)
- each['org_im_width'], each['org_im_height'] = each['org_im'].size
- component.append(each)
-
- for element in component:
- element['image'] = process_image(element['org_im'])
- yield element
diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/label_list.txt b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/label_list.txt
deleted file mode 100644
index a509c007481d301e524e7b3c97561132dbfcc765..0000000000000000000000000000000000000000
--- a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/label_list.txt
+++ /dev/null
@@ -1,1000 +0,0 @@
-tench, Tinca tinca
-goldfish, Carassius auratus
-great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
-tiger shark, Galeocerdo cuvieri
-hammerhead, hammerhead shark
-electric ray, crampfish, numbfish, torpedo
-stingray
-cock
-hen
-ostrich, Struthio camelus
-brambling, Fringilla montifringilla
-goldfinch, Carduelis carduelis
-house finch, linnet, Carpodacus mexicanus
-junco, snowbird
-indigo bunting, indigo finch, indigo bird, Passerina cyanea
-robin, American robin, Turdus migratorius
-bulbul
-jay
-magpie
-chickadee
-water ouzel, dipper
-kite
-bald eagle, American eagle, Haliaeetus leucocephalus
-vulture
-great grey owl, great gray owl, Strix nebulosa
-European fire salamander, Salamandra salamandra
-common newt, Triturus vulgaris
-eft
-spotted salamander, Ambystoma maculatum
-axolotl, mud puppy, Ambystoma mexicanum
-bullfrog, Rana catesbeiana
-tree frog, tree-frog
-tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
-loggerhead, loggerhead turtle, Caretta caretta
-leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
-mud turtle
-terrapin
-box turtle, box tortoise
-banded gecko
-common iguana, iguana, Iguana iguana
-American chameleon, anole, Anolis carolinensis
-whiptail, whiptail lizard
-agama
-frilled lizard, Chlamydosaurus kingi
-alligator lizard
-Gila monster, Heloderma suspectum
-green lizard, Lacerta viridis
-African chameleon, Chamaeleo chamaeleon
-Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
-African crocodile, Nile crocodile, Crocodylus niloticus
-American alligator, Alligator mississipiensis
-triceratops
-thunder snake, worm snake, Carphophis amoenus
-ringneck snake, ring-necked snake, ring snake
-hognose snake, puff adder, sand viper
-green snake, grass snake
-king snake, kingsnake
-garter snake, grass snake
-water snake
-vine snake
-night snake, Hypsiglena torquata
-boa constrictor, Constrictor constrictor
-rock python, rock snake, Python sebae
-Indian cobra, Naja naja
-green mamba
-sea snake
-horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
-diamondback, diamondback rattlesnake, Crotalus adamanteus
-sidewinder, horned rattlesnake, Crotalus cerastes
-trilobite
-harvestman, daddy longlegs, Phalangium opilio
-scorpion
-black and gold garden spider, Argiope aurantia
-barn spider, Araneus cavaticus
-garden spider, Aranea diademata
-black widow, Latrodectus mactans
-tarantula
-wolf spider, hunting spider
-tick
-centipede
-black grouse
-ptarmigan
-ruffed grouse, partridge, Bonasa umbellus
-prairie chicken, prairie grouse, prairie fowl
-peacock
-quail
-partridge
-African grey, African gray, Psittacus erithacus
-macaw
-sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
-lorikeet
-coucal
-bee eater
-hornbill
-hummingbird
-jacamar
-toucan
-drake
-red-breasted merganser, Mergus serrator
-goose
-black swan, Cygnus atratus
-tusker
-echidna, spiny anteater, anteater
-platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
-wallaby, brush kangaroo
-koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
-wombat
-jellyfish
-sea anemone, anemone
-brain coral
-flatworm, platyhelminth
-nematode, nematode worm, roundworm
-conch
-snail
-slug
-sea slug, nudibranch
-chiton, coat-of-mail shell, sea cradle, polyplacophore
-chambered nautilus, pearly nautilus, nautilus
-Dungeness crab, Cancer magister
-rock crab, Cancer irroratus
-fiddler crab
-king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
-American lobster, Northern lobster, Maine lobster, Homarus americanus
-spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
-crayfish, crawfish, crawdad, crawdaddy
-hermit crab
-isopod
-white stork, Ciconia ciconia
-black stork, Ciconia nigra
-spoonbill
-flamingo
-little blue heron, Egretta caerulea
-American egret, great white heron, Egretta albus
-bittern
-crane
-limpkin, Aramus pictus
-European gallinule, Porphyrio porphyrio
-American coot, marsh hen, mud hen, water hen, Fulica americana
-bustard
-ruddy turnstone, Arenaria interpres
-red-backed sandpiper, dunlin, Erolia alpina
-redshank, Tringa totanus
-dowitcher
-oystercatcher, oyster catcher
-pelican
-king penguin, Aptenodytes patagonica
-albatross, mollymawk
-grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
-killer whale, killer, orca, grampus, sea wolf, Orcinus orca
-dugong, Dugong dugon
-sea lion
-Chihuahua
-Japanese spaniel
-Maltese dog, Maltese terrier, Maltese
-Pekinese, Pekingese, Peke
-Shih-Tzu
-Blenheim spaniel
-papillon
-toy terrier
-Rhodesian ridgeback
-Afghan hound, Afghan
-basset, basset hound
-beagle
-bloodhound, sleuthhound
-bluetick
-black-and-tan coonhound
-Walker hound, Walker foxhound
-English foxhound
-redbone
-borzoi, Russian wolfhound
-Irish wolfhound
-Italian greyhound
-whippet
-Ibizan hound, Ibizan Podenco
-Norwegian elkhound, elkhound
-otterhound, otter hound
-Saluki, gazelle hound
-Scottish deerhound, deerhound
-Weimaraner
-Staffordshire bullterrier, Staffordshire bull terrier
-American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
-Bedlington terrier
-Border terrier
-Kerry blue terrier
-Irish terrier
-Norfolk terrier
-Norwich terrier
-Yorkshire terrier
-wire-haired fox terrier
-Lakeland terrier
-Sealyham terrier, Sealyham
-Airedale, Airedale terrier
-cairn, cairn terrier
-Australian terrier
-Dandie Dinmont, Dandie Dinmont terrier
-Boston bull, Boston terrier
-miniature schnauzer
-giant schnauzer
-standard schnauzer
-Scotch terrier, Scottish terrier, Scottie
-Tibetan terrier, chrysanthemum dog
-silky terrier, Sydney silky
-soft-coated wheaten terrier
-West Highland white terrier
-Lhasa, Lhasa apso
-flat-coated retriever
-curly-coated retriever
-golden retriever
-Labrador retriever
-Chesapeake Bay retriever
-German short-haired pointer
-vizsla, Hungarian pointer
-English setter
-Irish setter, red setter
-Gordon setter
-Brittany spaniel
-clumber, clumber spaniel
-English springer, English springer spaniel
-Welsh springer spaniel
-cocker spaniel, English cocker spaniel, cocker
-Sussex spaniel
-Irish water spaniel
-kuvasz
-schipperke
-groenendael
-malinois
-briard
-kelpie
-komondor
-Old English sheepdog, bobtail
-Shetland sheepdog, Shetland sheep dog, Shetland
-collie
-Border collie
-Bouvier des Flandres, Bouviers des Flandres
-Rottweiler
-German shepherd, German shepherd dog, German police dog, alsatian
-Doberman, Doberman pinscher
-miniature pinscher
-Greater Swiss Mountain dog
-Bernese mountain dog
-Appenzeller
-EntleBucher
-boxer
-bull mastiff
-Tibetan mastiff
-French bulldog
-Great Dane
-Saint Bernard, St Bernard
-Eskimo dog, husky
-malamute, malemute, Alaskan malamute
-Siberian husky
-dalmatian, coach dog, carriage dog
-affenpinscher, monkey pinscher, monkey dog
-basenji
-pug, pug-dog
-Leonberg
-Newfoundland, Newfoundland dog
-Great Pyrenees
-Samoyed, Samoyede
-Pomeranian
-chow, chow chow
-keeshond
-Brabancon griffon
-Pembroke, Pembroke Welsh corgi
-Cardigan, Cardigan Welsh corgi
-toy poodle
-miniature poodle
-standard poodle
-Mexican hairless
-timber wolf, grey wolf, gray wolf, Canis lupus
-white wolf, Arctic wolf, Canis lupus tundrarum
-red wolf, maned wolf, Canis rufus, Canis niger
-coyote, prairie wolf, brush wolf, Canis latrans
-dingo, warrigal, warragal, Canis dingo
-dhole, Cuon alpinus
-African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
-hyena, hyaena
-red fox, Vulpes vulpes
-kit fox, Vulpes macrotis
-Arctic fox, white fox, Alopex lagopus
-grey fox, gray fox, Urocyon cinereoargenteus
-tabby, tabby cat
-tiger cat
-Persian cat
-Siamese cat, Siamese
-Egyptian cat
-cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
-lynx, catamount
-leopard, Panthera pardus
-snow leopard, ounce, Panthera uncia
-jaguar, panther, Panthera onca, Felis onca
-lion, king of beasts, Panthera leo
-tiger, Panthera tigris
-cheetah, chetah, Acinonyx jubatus
-brown bear, bruin, Ursus arctos
-American black bear, black bear, Ursus americanus, Euarctos americanus
-ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
-sloth bear, Melursus ursinus, Ursus ursinus
-mongoose
-meerkat, mierkat
-tiger beetle
-ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
-ground beetle, carabid beetle
-long-horned beetle, longicorn, longicorn beetle
-leaf beetle, chrysomelid
-dung beetle
-rhinoceros beetle
-weevil
-fly
-bee
-ant, emmet, pismire
-grasshopper, hopper
-cricket
-walking stick, walkingstick, stick insect
-cockroach, roach
-mantis, mantid
-cicada, cicala
-leafhopper
-lacewing, lacewing fly
-dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
-damselfly
-admiral
-ringlet, ringlet butterfly
-monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
-cabbage butterfly
-sulphur butterfly, sulfur butterfly
-lycaenid, lycaenid butterfly
-starfish, sea star
-sea urchin
-sea cucumber, holothurian
-wood rabbit, cottontail, cottontail rabbit
-hare
-Angora, Angora rabbit
-hamster
-porcupine, hedgehog
-fox squirrel, eastern fox squirrel, Sciurus niger
-marmot
-beaver
-guinea pig, Cavia cobaya
-sorrel
-zebra
-hog, pig, grunter, squealer, Sus scrofa
-wild boar, boar, Sus scrofa
-warthog
-hippopotamus, hippo, river horse, Hippopotamus amphibius
-ox
-water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
-bison
-ram, tup
-bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
-ibex, Capra ibex
-hartebeest
-impala, Aepyceros melampus
-gazelle
-Arabian camel, dromedary, Camelus dromedarius
-llama
-weasel
-mink
-polecat, fitch, foulmart, foumart, Mustela putorius
-black-footed ferret, ferret, Mustela nigripes
-otter
-skunk, polecat, wood pussy
-badger
-armadillo
-three-toed sloth, ai, Bradypus tridactylus
-orangutan, orang, orangutang, Pongo pygmaeus
-gorilla, Gorilla gorilla
-chimpanzee, chimp, Pan troglodytes
-gibbon, Hylobates lar
-siamang, Hylobates syndactylus, Symphalangus syndactylus
-guenon, guenon monkey
-patas, hussar monkey, Erythrocebus patas
-baboon
-macaque
-langur
-colobus, colobus monkey
-proboscis monkey, Nasalis larvatus
-marmoset
-capuchin, ringtail, Cebus capucinus
-howler monkey, howler
-titi, titi monkey
-spider monkey, Ateles geoffroyi
-squirrel monkey, Saimiri sciureus
-Madagascar cat, ring-tailed lemur, Lemur catta
-indri, indris, Indri indri, Indri brevicaudatus
-Indian elephant, Elephas maximus
-African elephant, Loxodonta africana
-lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
-giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
-barracouta, snoek
-eel
-coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
-rock beauty, Holocanthus tricolor
-anemone fish
-sturgeon
-gar, garfish, garpike, billfish, Lepisosteus osseus
-lionfish
-puffer, pufferfish, blowfish, globefish
-abacus
-abaya
-academic gown, academic robe, judge's robe
-accordion, piano accordion, squeeze box
-acoustic guitar
-aircraft carrier, carrier, flattop, attack aircraft carrier
-airliner
-airship, dirigible
-altar
-ambulance
-amphibian, amphibious vehicle
-analog clock
-apiary, bee house
-apron
-ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
-assault rifle, assault gun
-backpack, back pack, knapsack, packsack, rucksack, haversack
-bakery, bakeshop, bakehouse
-balance beam, beam
-balloon
-ballpoint, ballpoint pen, ballpen, Biro
-Band Aid
-banjo
-bannister, banister, balustrade, balusters, handrail
-barbell
-barber chair
-barbershop
-barn
-barometer
-barrel, cask
-barrow, garden cart, lawn cart, wheelbarrow
-baseball
-basketball
-bassinet
-bassoon
-bathing cap, swimming cap
-bath towel
-bathtub, bathing tub, bath, tub
-beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
-beacon, lighthouse, beacon light, pharos
-beaker
-bearskin, busby, shako
-beer bottle
-beer glass
-bell cote, bell cot
-bib
-bicycle-built-for-two, tandem bicycle, tandem
-bikini, two-piece
-binder, ring-binder
-binoculars, field glasses, opera glasses
-birdhouse
-boathouse
-bobsled, bobsleigh, bob
-bolo tie, bolo, bola tie, bola
-bonnet, poke bonnet
-bookcase
-bookshop, bookstore, bookstall
-bottlecap
-bow
-bow tie, bow-tie, bowtie
-brass, memorial tablet, plaque
-brassiere, bra, bandeau
-breakwater, groin, groyne, mole, bulwark, seawall, jetty
-breastplate, aegis, egis
-broom
-bucket, pail
-buckle
-bulletproof vest
-bullet train, bullet
-butcher shop, meat market
-cab, hack, taxi, taxicab
-caldron, cauldron
-candle, taper, wax light
-cannon
-canoe
-can opener, tin opener
-cardigan
-car mirror
-carousel, carrousel, merry-go-round, roundabout, whirligig
-carpenter's kit, tool kit
-carton
-car wheel
-cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
-cassette
-cassette player
-castle
-catamaran
-CD player
-cello, violoncello
-cellular telephone, cellular phone, cellphone, cell, mobile phone
-chain
-chainlink fence
-chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
-chain saw, chainsaw
-chest
-chiffonier, commode
-chime, bell, gong
-china cabinet, china closet
-Christmas stocking
-church, church building
-cinema, movie theater, movie theatre, movie house, picture palace
-cleaver, meat cleaver, chopper
-cliff dwelling
-cloak
-clog, geta, patten, sabot
-cocktail shaker
-coffee mug
-coffeepot
-coil, spiral, volute, whorl, helix
-combination lock
-computer keyboard, keypad
-confectionery, confectionary, candy store
-container ship, containership, container vessel
-convertible
-corkscrew, bottle screw
-cornet, horn, trumpet, trump
-cowboy boot
-cowboy hat, ten-gallon hat
-cradle
-crane
-crash helmet
-crate
-crib, cot
-Crock Pot
-croquet ball
-crutch
-cuirass
-dam, dike, dyke
-desk
-desktop computer
-dial telephone, dial phone
-diaper, nappy, napkin
-digital clock
-digital watch
-dining table, board
-dishrag, dishcloth
-dishwasher, dish washer, dishwashing machine
-disk brake, disc brake
-dock, dockage, docking facility
-dogsled, dog sled, dog sleigh
-dome
-doormat, welcome mat
-drilling platform, offshore rig
-drum, membranophone, tympan
-drumstick
-dumbbell
-Dutch oven
-electric fan, blower
-electric guitar
-electric locomotive
-entertainment center
-envelope
-espresso maker
-face powder
-feather boa, boa
-file, file cabinet, filing cabinet
-fireboat
-fire engine, fire truck
-fire screen, fireguard
-flagpole, flagstaff
-flute, transverse flute
-folding chair
-football helmet
-forklift
-fountain
-fountain pen
-four-poster
-freight car
-French horn, horn
-frying pan, frypan, skillet
-fur coat
-garbage truck, dustcart
-gasmask, respirator, gas helmet
-gas pump, gasoline pump, petrol pump, island dispenser
-goblet
-go-kart
-golf ball
-golfcart, golf cart
-gondola
-gong, tam-tam
-gown
-grand piano, grand
-greenhouse, nursery, glasshouse
-grille, radiator grille
-grocery store, grocery, food market, market
-guillotine
-hair slide
-hair spray
-half track
-hammer
-hamper
-hand blower, blow dryer, blow drier, hair dryer, hair drier
-hand-held computer, hand-held microcomputer
-handkerchief, hankie, hanky, hankey
-hard disc, hard disk, fixed disk
-harmonica, mouth organ, harp, mouth harp
-harp
-harvester, reaper
-hatchet
-holster
-home theater, home theatre
-honeycomb
-hook, claw
-hoopskirt, crinoline
-horizontal bar, high bar
-horse cart, horse-cart
-hourglass
-iPod
-iron, smoothing iron
-jack-o'-lantern
-jean, blue jean, denim
-jeep, landrover
-jersey, T-shirt, tee shirt
-jigsaw puzzle
-jinrikisha, ricksha, rickshaw
-joystick
-kimono
-knee pad
-knot
-lab coat, laboratory coat
-ladle
-lampshade, lamp shade
-laptop, laptop computer
-lawn mower, mower
-lens cap, lens cover
-letter opener, paper knife, paperknife
-library
-lifeboat
-lighter, light, igniter, ignitor
-limousine, limo
-liner, ocean liner
-lipstick, lip rouge
-Loafer
-lotion
-loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
-loupe, jeweler's loupe
-lumbermill, sawmill
-magnetic compass
-mailbag, postbag
-mailbox, letter box
-maillot
-maillot, tank suit
-manhole cover
-maraca
-marimba, xylophone
-mask
-matchstick
-maypole
-maze, labyrinth
-measuring cup
-medicine chest, medicine cabinet
-megalith, megalithic structure
-microphone, mike
-microwave, microwave oven
-military uniform
-milk can
-minibus
-miniskirt, mini
-minivan
-missile
-mitten
-mixing bowl
-mobile home, manufactured home
-Model T
-modem
-monastery
-monitor
-moped
-mortar
-mortarboard
-mosque
-mosquito net
-motor scooter, scooter
-mountain bike, all-terrain bike, off-roader
-mountain tent
-mouse, computer mouse
-mousetrap
-moving van
-muzzle
-nail
-neck brace
-necklace
-nipple
-notebook, notebook computer
-obelisk
-oboe, hautboy, hautbois
-ocarina, sweet potato
-odometer, hodometer, mileometer, milometer
-oil filter
-organ, pipe organ
-oscilloscope, scope, cathode-ray oscilloscope, CRO
-overskirt
-oxcart
-oxygen mask
-packet
-paddle, boat paddle
-paddlewheel, paddle wheel
-padlock
-paintbrush
-pajama, pyjama, pj's, jammies
-palace
-panpipe, pandean pipe, syrinx
-paper towel
-parachute, chute
-parallel bars, bars
-park bench
-parking meter
-passenger car, coach, carriage
-patio, terrace
-pay-phone, pay-station
-pedestal, plinth, footstall
-pencil box, pencil case
-pencil sharpener
-perfume, essence
-Petri dish
-photocopier
-pick, plectrum, plectron
-pickelhaube
-picket fence, paling
-pickup, pickup truck
-pier
-piggy bank, penny bank
-pill bottle
-pillow
-ping-pong ball
-pinwheel
-pirate, pirate ship
-pitcher, ewer
-plane, carpenter's plane, woodworking plane
-planetarium
-plastic bag
-plate rack
-plow, plough
-plunger, plumber's helper
-Polaroid camera, Polaroid Land camera
-pole
-police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
-poncho
-pool table, billiard table, snooker table
-pop bottle, soda bottle
-pot, flowerpot
-potter's wheel
-power drill
-prayer rug, prayer mat
-printer
-prison, prison house
-projectile, missile
-projector
-puck, hockey puck
-punching bag, punch bag, punching ball, punchball
-purse
-quill, quill pen
-quilt, comforter, comfort, puff
-racer, race car, racing car
-racket, racquet
-radiator
-radio, wireless
-radio telescope, radio reflector
-rain barrel
-recreational vehicle, RV, R.V.
-reel
-reflex camera
-refrigerator, icebox
-remote control, remote
-restaurant, eating house, eating place, eatery
-revolver, six-gun, six-shooter
-rifle
-rocking chair, rocker
-rotisserie
-rubber eraser, rubber, pencil eraser
-rugby ball
-rule, ruler
-running shoe
-safe
-safety pin
-saltshaker, salt shaker
-sandal
-sarong
-sax, saxophone
-scabbard
-scale, weighing machine
-school bus
-schooner
-scoreboard
-screen, CRT screen
-screw
-screwdriver
-seat belt, seatbelt
-sewing machine
-shield, buckler
-shoe shop, shoe-shop, shoe store
-shoji
-shopping basket
-shopping cart
-shovel
-shower cap
-shower curtain
-ski
-ski mask
-sleeping bag
-slide rule, slipstick
-sliding door
-slot, one-armed bandit
-snorkel
-snowmobile
-snowplow, snowplough
-soap dispenser
-soccer ball
-sock
-solar dish, solar collector, solar furnace
-sombrero
-soup bowl
-space bar
-space heater
-space shuttle
-spatula
-speedboat
-spider web, spider's web
-spindle
-sports car, sport car
-spotlight, spot
-stage
-steam locomotive
-steel arch bridge
-steel drum
-stethoscope
-stole
-stone wall
-stopwatch, stop watch
-stove
-strainer
-streetcar, tram, tramcar, trolley, trolley car
-stretcher
-studio couch, day bed
-stupa, tope
-submarine, pigboat, sub, U-boat
-suit, suit of clothes
-sundial
-sunglass
-sunglasses, dark glasses, shades
-sunscreen, sunblock, sun blocker
-suspension bridge
-swab, swob, mop
-sweatshirt
-swimming trunks, bathing trunks
-swing
-switch, electric switch, electrical switch
-syringe
-table lamp
-tank, army tank, armored combat vehicle, armoured combat vehicle
-tape player
-teapot
-teddy, teddy bear
-television, television system
-tennis ball
-thatch, thatched roof
-theater curtain, theatre curtain
-thimble
-thresher, thrasher, threshing machine
-throne
-tile roof
-toaster
-tobacco shop, tobacconist shop, tobacconist
-toilet seat
-torch
-totem pole
-tow truck, tow car, wrecker
-toyshop
-tractor
-trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
-tray
-trench coat
-tricycle, trike, velocipede
-trimaran
-tripod
-triumphal arch
-trolleybus, trolley coach, trackless trolley
-trombone
-tub, vat
-turnstile
-typewriter keyboard
-umbrella
-unicycle, monocycle
-upright, upright piano
-vacuum, vacuum cleaner
-vase
-vault
-velvet
-vending machine
-vestment
-viaduct
-violin, fiddle
-volleyball
-waffle iron
-wall clock
-wallet, billfold, notecase, pocketbook
-wardrobe, closet, press
-warplane, military plane
-washbasin, handbasin, washbowl, lavabo, wash-hand basin
-washer, automatic washer, washing machine
-water bottle
-water jug
-water tower
-whiskey jug
-whistle
-wig
-window screen
-window shade
-Windsor tie
-wine bottle
-wing
-wok
-wooden spoon
-wool, woolen, woollen
-worm fence, snake fence, snake-rail fence, Virginia fence
-wreck
-yawl
-yurt
-web site, website, internet site, site
-comic book
-crossword puzzle, crossword
-street sign
-traffic light, traffic signal, stoplight
-book jacket, dust cover, dust jacket, dust wrapper
-menu
-plate
-guacamole
-consomme
-hot pot, hotpot
-trifle
-ice cream, icecream
-ice lolly, lolly, lollipop, popsicle
-French loaf
-bagel, beigel
-pretzel
-cheeseburger
-hotdog, hot dog, red hot
-mashed potato
-head cabbage
-broccoli
-cauliflower
-zucchini, courgette
-spaghetti squash
-acorn squash
-butternut squash
-cucumber, cuke
-artichoke, globe artichoke
-bell pepper
-cardoon
-mushroom
-Granny Smith
-strawberry
-orange
-lemon
-fig
-pineapple, ananas
-banana
-jackfruit, jak, jack
-custard apple
-pomegranate
-hay
-carbonara
-chocolate sauce, chocolate syrup
-dough
-meat loaf, meatloaf
-pizza, pizza pie
-potpie
-burrito
-red wine
-espresso
-cup
-eggnog
-alp
-bubble
-cliff, drop, drop-off
-coral reef
-geyser
-lakeside, lakeshore
-promontory, headland, head, foreland
-sandbar, sand bar
-seashore, coast, seacoast, sea-coast
-valley, vale
-volcano
-ballplayer, baseball player
-groom, bridegroom
-scuba diver
-rapeseed
-daisy
-yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
-corn
-acorn
-hip, rose hip, rosehip
-buckeye, horse chestnut, conker
-coral fungus
-agaric
-gyromitra
-stinkhorn, carrion fungus
-earthstar
-hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
-bolete
-ear, spike, capitulum
-toilet tissue, toilet paper, bathroom tissue
diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/mobilenet_v2.py b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/mobilenet_v2.py
deleted file mode 100644
index 5284ef2b36ab8209bd44aebdd3a879ecd39de7df..0000000000000000000000000000000000000000
--- a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/mobilenet_v2.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import paddle.fluid as fluid
-from paddle.fluid.initializer import MSRA
-from paddle.fluid.param_attr import ParamAttr
-
-__all__ = [
- 'MobileNetV2_x0_25', 'MobileNetV2_x0_5', 'MobileNetV2_x0_75',
- 'MobileNetV2_x1_0', 'MobileNetV2_x1_5', 'MobileNetV2_x2_0', 'MobileNetV2'
-]
-
-
-class MobileNetV2():
- def __init__(self, scale=1.0):
- self.scale = scale
-
- def net(self, input, class_dim=1000):
- scale = self.scale
- bottleneck_params_list = [
- (1, 16, 1, 1),
- (6, 24, 2, 2),
- (6, 32, 3, 2),
- (6, 64, 4, 2),
- (6, 96, 3, 1),
- (6, 160, 3, 2),
- (6, 320, 1, 1),
- ]
-
- #conv1
- input = self.conv_bn_layer(
- input,
- num_filters=int(32 * scale),
- filter_size=3,
- stride=2,
- padding=1,
- if_act=True,
- name='conv1_1')
-
- # bottleneck sequences
- i = 1
- in_c = int(32 * scale)
- for layer_setting in bottleneck_params_list:
- t, c, n, s = layer_setting
- i += 1
- input = self.invresi_blocks(
- input=input,
- in_c=in_c,
- t=t,
- c=int(c * scale),
- n=n,
- s=s,
- name='conv' + str(i))
- in_c = int(c * scale)
- #last_conv
- input = self.conv_bn_layer(
- input=input,
- num_filters=int(1280 * scale) if scale > 1.0 else 1280,
- filter_size=1,
- stride=1,
- padding=0,
- if_act=True,
- name='conv9')
-
- input = fluid.layers.pool2d(
- input=input, pool_type='avg', global_pooling=True)
-
- output = fluid.layers.fc(
- input=input,
- size=class_dim,
- param_attr=ParamAttr(name='fc10_weights'),
- bias_attr=ParamAttr(name='fc10_offset'))
- return output, input
-
- def conv_bn_layer(self,
- input,
- filter_size,
- num_filters,
- stride,
- padding,
- channels=None,
- num_groups=1,
- if_act=True,
- name=None,
- use_cudnn=True):
- conv = fluid.layers.conv2d(
- input=input,
- num_filters=num_filters,
- filter_size=filter_size,
- stride=stride,
- padding=padding,
- groups=num_groups,
- act=None,
- use_cudnn=use_cudnn,
- param_attr=ParamAttr(name=name + '_weights'),
- bias_attr=False)
- bn_name = name + '_bn'
- bn = fluid.layers.batch_norm(
- input=conv,
- param_attr=ParamAttr(name=bn_name + "_scale"),
- bias_attr=ParamAttr(name=bn_name + "_offset"),
- moving_mean_name=bn_name + '_mean',
- moving_variance_name=bn_name + '_variance')
- if if_act:
- return fluid.layers.relu6(bn)
- else:
- return bn
-
- def shortcut(self, input, data_residual):
- return fluid.layers.elementwise_add(input, data_residual)
-
- def inverted_residual_unit(self,
- input,
- num_in_filter,
- num_filters,
- ifshortcut,
- stride,
- filter_size,
- padding,
- expansion_factor,
- name=None):
- num_expfilter = int(round(num_in_filter * expansion_factor))
-
- channel_expand = self.conv_bn_layer(
- input=input,
- num_filters=num_expfilter,
- filter_size=1,
- stride=1,
- padding=0,
- num_groups=1,
- if_act=True,
- name=name + '_expand')
-
- bottleneck_conv = self.conv_bn_layer(
- input=channel_expand,
- num_filters=num_expfilter,
- filter_size=filter_size,
- stride=stride,
- padding=padding,
- num_groups=num_expfilter,
- if_act=True,
- name=name + '_dwise',
- use_cudnn=False)
-
- linear_out = self.conv_bn_layer(
- input=bottleneck_conv,
- num_filters=num_filters,
- filter_size=1,
- stride=1,
- padding=0,
- num_groups=1,
- if_act=False,
- name=name + '_linear')
- if ifshortcut:
- out = self.shortcut(input=input, data_residual=linear_out)
- return out
- else:
- return linear_out
-
- def invresi_blocks(self, input, in_c, t, c, n, s, name=None):
- first_block = self.inverted_residual_unit(
- input=input,
- num_in_filter=in_c,
- num_filters=c,
- ifshortcut=False,
- stride=s,
- filter_size=3,
- padding=1,
- expansion_factor=t,
- name=name + '_1')
-
- last_residual_block = first_block
- last_c = c
-
- for i in range(1, n):
- last_residual_block = self.inverted_residual_unit(
- input=last_residual_block,
- num_in_filter=last_c,
- num_filters=c,
- ifshortcut=True,
- stride=1,
- filter_size=3,
- padding=1,
- expansion_factor=t,
- name=name + '_' + str(i + 1))
- return last_residual_block
-
-
-def MobileNetV2_x0_25():
- model = MobileNetV2(scale=0.25)
- return model
-
-
-def MobileNetV2_x0_5():
- model = MobileNetV2(scale=0.5)
- return model
-
-
-def MobileNetV2_x0_75():
- model = MobileNetV2(scale=0.75)
- return model
-
-
-def MobileNetV2_x1_0():
- model = MobileNetV2(scale=1.0)
- return model
-
-
-def MobileNetV2_x1_5():
- model = MobileNetV2(scale=1.5)
- return model
-
-
-def MobileNetV2_x2_0():
- model = MobileNetV2(scale=2.0)
- return model
diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/module.py b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/module.py
index a2bacc749572129cbb5c8e1a4c3257b812df416b..510b9d14c35e565d4e3eab3d36220c805cca3b6d 100644
--- a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/module.py
+++ b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/module.py
@@ -1,278 +1,209 @@
-# coding=utf-8
-from __future__ import absolute_import
-from __future__ import division
-
-import ast
-import argparse
+# copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
import os
-import numpy as np
-import paddle.fluid as fluid
-import paddlehub as hub
-from paddle.fluid.core import PaddleTensor, AnalysisConfig, create_paddle_predictor
-from paddlehub.module.module import moduleinfo, runnable, serving
-from paddlehub.common.paddle_helper import add_vars_prefix
-
-from mobilenet_v2_imagenet_ssld.processor import postprocess, base64_to_cv2
-from mobilenet_v2_imagenet_ssld.data_feed import reader
-from mobilenet_v2_imagenet_ssld.mobilenet_v2 import MobileNetV2
-
-
-@moduleinfo(
- name="mobilenet_v2_imagenet_ssld",
- type="CV/image_classification",
- author="paddlepaddle",
- author_email="paddle-dev@baidu.com",
- summary=
- "Mobilenet_V2 is a image classfication model, this module is trained with ImageNet-2012 dataset.",
- version="1.0.0")
-class MobileNetV2ImageNetSSLD(hub.Module):
- def _initialize(self):
- self.default_pretrained_model_path = os.path.join(
- self.directory, "model")
- label_file = os.path.join(self.directory, "label_list.txt")
- with open(label_file, 'r', encoding='utf-8') as file:
- self.label_list = file.read().split("\n")[:-1]
- self._set_config()
-
- def get_expected_image_width(self):
- return 224
-
- def get_expected_image_height(self):
- return 224
-
- def get_pretrained_images_mean(self):
- im_mean = np.array([0.485, 0.456, 0.406]).reshape(1, 3)
- return im_mean
-
- def get_pretrained_images_std(self):
- im_std = np.array([0.229, 0.224, 0.225]).reshape(1, 3)
- return im_std
-
- def _set_config(self):
- """
- predictor config setting
- """
- cpu_config = AnalysisConfig(self.default_pretrained_model_path)
- cpu_config.disable_glog_info()
- cpu_config.disable_gpu()
- self.cpu_predictor = create_paddle_predictor(cpu_config)
-
- try:
- _places = os.environ["CUDA_VISIBLE_DEVICES"]
- int(_places[0])
- use_gpu = True
- except:
- use_gpu = False
- if use_gpu:
- gpu_config = AnalysisConfig(self.default_pretrained_model_path)
- gpu_config.disable_glog_info()
- gpu_config.enable_use_gpu(
- memory_pool_init_size_mb=1000, device_id=0)
- self.gpu_predictor = create_paddle_predictor(gpu_config)
-
- def context(self, trainable=True, pretrained=True):
- """context for transfer learning.
-
- Args:
- trainable (bool): Set parameters in program to be trainable.
- pretrained (bool) : Whether to load pretrained model.
-
- Returns:
- inputs (dict): key is 'image', corresponding vaule is image tensor.
- outputs (dict): key is :
- 'classification', corresponding value is the result of classification.
- 'feature_map', corresponding value is the result of the layer before the fully connected layer.
- context_prog (fluid.Program): program for transfer learning.
- """
- context_prog = fluid.Program()
- startup_prog = fluid.Program()
- with fluid.program_guard(context_prog, startup_prog):
- with fluid.unique_name.guard():
- image = fluid.layers.data(
- name="image", shape=[3, 224, 224], dtype="float32")
- mobile_net = MobileNetV2()
- output, feature_map = mobile_net.net(
- input=image, class_dim=len(self.label_list))
-
- name_prefix = '@HUB_{}@'.format(self.name)
- inputs = {'image': name_prefix + image.name}
- outputs = {
- 'classification': name_prefix + output.name,
- 'feature_map': name_prefix + feature_map.name
- }
- add_vars_prefix(context_prog, name_prefix)
- add_vars_prefix(startup_prog, name_prefix)
- global_vars = context_prog.global_block().vars
- inputs = {
- key: global_vars[value]
- for key, value in inputs.items()
- }
- outputs = {
- key: global_vars[value]
- for key, value in outputs.items()
- }
-
- place = fluid.CPUPlace()
- exe = fluid.Executor(place)
- # pretrained
- if pretrained:
-
- def _if_exist(var):
- b = os.path.exists(
- os.path.join(self.default_pretrained_model_path,
- var.name))
- return b
-
- fluid.io.load_vars(
- exe,
- self.default_pretrained_model_path,
- context_prog,
- predicate=_if_exist)
- else:
- exe.run(startup_prog)
- # trainable
- for param in context_prog.global_block().iter_parameters():
- param.trainable = trainable
- return inputs, outputs, context_prog
-
- def save_inference_model(self,
- dirname,
- model_filename=None,
- params_filename=None,
- combined=True):
- if combined:
- model_filename = "__model__" if not model_filename else model_filename
- params_filename = "__params__" if not params_filename else params_filename
- place = fluid.CPUPlace()
- exe = fluid.Executor(place)
-
- program, feeded_var_names, target_vars = fluid.io.load_inference_model(
- dirname=self.default_pretrained_model_path, executor=exe)
-
- fluid.io.save_inference_model(
- dirname=dirname,
- main_program=program,
- executor=exe,
- feeded_var_names=feeded_var_names,
- target_vars=target_vars,
- model_filename=model_filename,
- params_filename=params_filename)
-
- def classification(self,
- images=None,
- paths=None,
- batch_size=1,
- use_gpu=False,
- top_k=1):
- """
- API for image classification.
-
- Args:
- images (numpy.ndarray): data of images, shape of each is [H, W, C], color space must be BGR.
- paths (list[str]): The paths of images.
- batch_size (int): batch size.
- use_gpu (bool): Whether to use gpu.
- top_k (int): Return top k results.
-
- Returns:
- res (list[dict]): The classfication results.
- """
- if use_gpu:
- try:
- _places = os.environ["CUDA_VISIBLE_DEVICES"]
- int(_places[0])
- except:
- raise RuntimeError(
- "Environment Variable CUDA_VISIBLE_DEVICES is not set correctly. If you wanna use gpu, please set CUDA_VISIBLE_DEVICES as cuda_device_id."
- )
-
- all_data = list()
- for yield_data in reader(images, paths):
- all_data.append(yield_data)
-
- total_num = len(all_data)
- loop_num = int(np.ceil(total_num / batch_size))
-
- res = list()
- for iter_id in range(loop_num):
- batch_data = list()
- handle_id = iter_id * batch_size
- for image_id in range(batch_size):
- try:
- batch_data.append(all_data[handle_id + image_id])
- except:
- pass
- # feed batch image
- batch_image = np.array([data['image'] for data in batch_data])
- batch_image = PaddleTensor(batch_image.copy())
- predictor_output = self.gpu_predictor.run([
- batch_image
- ]) if use_gpu else self.cpu_predictor.run([batch_image])
- out = postprocess(
- data_out=predictor_output[0].as_ndarray(),
- label_list=self.label_list,
- top_k=top_k)
- res += out
- return res
-
- @serving
- def serving_method(self, images, **kwargs):
- """
- Run as a service.
- """
- images_decode = [base64_to_cv2(image) for image in images]
- results = self.classification(images=images_decode, **kwargs)
- return results
-
- @runnable
- def run_cmd(self, argvs):
- """
- Run as a command.
- """
- self.parser = argparse.ArgumentParser(
- description="Run the {} module.".format(self.name),
- prog='hub run {}'.format(self.name),
- usage='%(prog)s',
- add_help=True)
- self.arg_input_group = self.parser.add_argument_group(
- title="Input options", description="Input data. Required")
- self.arg_config_group = self.parser.add_argument_group(
- title="Config options",
- description=
- "Run configuration for controlling module behavior, not required.")
- self.add_module_config_arg()
- self.add_module_input_arg()
- args = self.parser.parse_args(argvs)
- results = self.classification(
- paths=[args.input_path],
- batch_size=args.batch_size,
- use_gpu=args.use_gpu)
- return results
-
- def add_module_config_arg(self):
- """
- Add the command config options.
- """
- self.arg_config_group.add_argument(
- '--use_gpu',
- type=ast.literal_eval,
- default=False,
- help="whether use GPU or not.")
- self.arg_config_group.add_argument(
- '--batch_size',
- type=ast.literal_eval,
- default=1,
- help="batch size.")
- self.arg_config_group.add_argument(
- '--top_k',
- type=ast.literal_eval,
- default=1,
- help="Return top k results.")
-
- def add_module_input_arg(self):
- """
- Add the command input options.
- """
- self.arg_input_group.add_argument(
- '--input_path', type=str, help="path to image.")
+import paddle
+from paddle import ParamAttr
+import paddle.nn as nn
+import paddle.nn.functional as F
+from paddle.nn import Conv2d, BatchNorm, Linear, Dropout
+from paddle.nn import AdaptiveAvgPool2d, MaxPool2d, AvgPool2d
+from paddlehub.module.module import moduleinfo
+from paddlehub.module.cv_module import ImageClassifierModule
+
+
+class ConvBNLayer(nn.Layer):
+ """Basic conv bn layer."""
+ def __init__(self,
+ num_channels: int,
+ filter_size: int,
+ num_filters: int,
+ stride: int,
+ padding: int,
+ num_groups: int = 1,
+ name: str = None):
+ super(ConvBNLayer, self).__init__()
+
+ self._conv = Conv2d(in_channels=num_channels,
+ out_channels=num_filters,
+ kernel_size=filter_size,
+ stride=stride,
+ padding=padding,
+ groups=num_groups,
+ weight_attr=ParamAttr(name=name + "_weights"),
+ bias_attr=False)
+
+ self._batch_norm = BatchNorm(num_filters,
+ param_attr=ParamAttr(name=name + "_bn_scale"),
+ bias_attr=ParamAttr(name=name + "_bn_offset"),
+ moving_mean_name=name + "_bn_mean",
+ moving_variance_name=name + "_bn_variance")
+
+ def forward(self, inputs: paddle.Tensor, if_act: bool = True):
+ y = self._conv(inputs)
+ y = self._batch_norm(y)
+ if if_act:
+ y = F.relu6(y)
+ return y
+
+
+class InvertedResidualUnit(nn.Layer):
+ """Inverted Residual unit."""
+ def __init__(self, num_channels: int, num_in_filter: int, num_filters: int, stride: int, filter_size: int,
+ padding: int, expansion_factor: int, name: str):
+ super(InvertedResidualUnit, self).__init__()
+
+ num_expfilter = int(round(num_in_filter * expansion_factor))
+ self._expand_conv = ConvBNLayer(num_channels=num_channels,
+ num_filters=num_expfilter,
+ filter_size=1,
+ stride=1,
+ padding=0,
+ num_groups=1,
+ name=name + "_expand")
+
+ self._bottleneck_conv = ConvBNLayer(num_channels=num_expfilter,
+ num_filters=num_expfilter,
+ filter_size=filter_size,
+ stride=stride,
+ padding=padding,
+ num_groups=num_expfilter,
+ name=name + "_dwise")
+
+ self._linear_conv = ConvBNLayer(num_channels=num_expfilter,
+ num_filters=num_filters,
+ filter_size=1,
+ stride=1,
+ padding=0,
+ num_groups=1,
+ name=name + "_linear")
+
+ def forward(self, inputs: paddle.Tensor, ifshortcut: bool):
+ y = self._expand_conv(inputs, if_act=True)
+ y = self._bottleneck_conv(y, if_act=True)
+ y = self._linear_conv(y, if_act=False)
+ if ifshortcut:
+ y = paddle.elementwise_add(inputs, y)
+ return y
+
+
+class InversiBlocks(nn.Layer):
+ """Inverted residual block composed by inverted residual unit."""
+ def __init__(self, in_c: int, t: int, c: int, n: int, s: int, name: str):
+ super(InversiBlocks, self).__init__()
+
+ self._first_block = InvertedResidualUnit(num_channels=in_c,
+ num_in_filter=in_c,
+ num_filters=c,
+ stride=s,
+ filter_size=3,
+ padding=1,
+ expansion_factor=t,
+ name=name + "_1")
+
+ self._block_list = []
+ for i in range(1, n):
+ block = self.add_sublayer(name + "_" + str(i + 1),
+ sublayer=InvertedResidualUnit(num_channels=c,
+ num_in_filter=c,
+ num_filters=c,
+ stride=1,
+ filter_size=3,
+ padding=1,
+ expansion_factor=t,
+ name=name + "_" + str(i + 1)))
+ self._block_list.append(block)
+
+ def forward(self, inputs: paddle.Tensor):
+ y = self._first_block(inputs, ifshortcut=False)
+ for block in self._block_list:
+ y = block(y, ifshortcut=True)
+ return y
+
+
+@moduleinfo(name="mobilenet_v2_imagenet_ssld",
+ type="cv/classification",
+ author="paddlepaddle",
+ author_email="",
+ summary="mobilenet_v2_imagenet_ssld is a classification model, "
+ "this module is trained with Imagenet dataset.",
+ version="1.1.0",
+ meta=ImageClassifierModule)
+class MobileNet(nn.Layer):
+ """MobileNetV2"""
+ def __init__(self, class_dim: int = 1000, load_checkpoint: str = None):
+ super(MobileNet, self).__init__()
+
+ self.class_dim = class_dim
+
+ bottleneck_params_list = [(1, 16, 1, 1), (6, 24, 2, 2), (6, 32, 3, 2), (6, 64, 4, 2), (6, 96, 3, 1),
+ (6, 160, 3, 2), (6, 320, 1, 1)]
+
+ self.conv1 = ConvBNLayer(num_channels=3,
+ num_filters=int(32),
+ filter_size=3,
+ stride=2,
+ padding=1,
+ name="conv1_1")
+
+ self.block_list = []
+ i = 1
+ in_c = int(32)
+ for layer_setting in bottleneck_params_list:
+ t, c, n, s = layer_setting
+ i += 1
+ block = self.add_sublayer("conv" + str(i),
+ sublayer=InversiBlocks(in_c=in_c, t=t, c=int(c), n=n, s=s, name="conv" + str(i)))
+ self.block_list.append(block)
+ in_c = int(c)
+
+ self.out_c = 1280
+ self.conv9 = ConvBNLayer(num_channels=in_c,
+ num_filters=self.out_c,
+ filter_size=1,
+ stride=1,
+ padding=0,
+ name="conv9")
+
+ self.pool2d_avg = AdaptiveAvgPool2d(1)
+
+ self.out = Linear(self.out_c,
+ class_dim,
+ weight_attr=ParamAttr(name="fc10_weights"),
+ bias_attr=ParamAttr(name="fc10_offset"))
+
+ if load_checkpoint is not None:
+ model_dict = paddle.load(load_checkpoint)[0]
+ self.set_dict(model_dict)
+ print("load custom checkpoint success")
+
+ else:
+ checkpoint = os.path.join(self.directory, 'mobilenet_v2_ssld.pdparams.pdparams')
+ if not os.path.exists(checkpoint):
+ os.system(
+ 'wget https://paddlehub.bj.bcebos.com/dygraph/image_classification/mobilenet_v2_ssld.pdparams -O ' +
+ checkpoint)
+ model_dict = paddle.load(checkpoint)[0]
+ self.set_dict(model_dict)
+ print("load pretrained checkpoint success")
+
+ def forward(self, inputs: paddle.Tensor):
+ y = self.conv1(inputs, if_act=True)
+ for block in self.block_list:
+ y = block(y)
+ y = self.conv9(y, if_act=True)
+ y = self.pool2d_avg(y)
+ y = paddle.reshape(y, shape=[-1, self.out_c])
+ y = self.out(y)
+ return y
diff --git a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/processor.py b/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/processor.py
deleted file mode 100644
index fa8cbb502312e6ef80697ab63b767d4077b3847b..0000000000000000000000000000000000000000
--- a/hub_module/modules/image/classification/mobilenet_v2_imagenet_ssld/processor.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# coding=utf-8
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import base64
-import cv2
-import os
-
-import numpy as np
-
-
-def base64_to_cv2(b64str):
- data = base64.b64decode(b64str.encode('utf8'))
- data = np.fromstring(data, np.uint8)
- data = cv2.imdecode(data, cv2.IMREAD_COLOR)
- return data
-
-
-def softmax(x):
- orig_shape = x.shape
- if len(x.shape) > 1:
- tmp = np.max(x, axis=1)
- x -= tmp.reshape((x.shape[0], 1))
- x = np.exp(x)
- tmp = np.sum(x, axis=1)
- x /= tmp.reshape((x.shape[0], 1))
- else:
- tmp = np.max(x)
- x -= tmp
- x = np.exp(x)
- tmp = np.sum(x)
- x /= tmp
- return x
-
-
-def postprocess(data_out, label_list, top_k):
- """
- Postprocess output of network, one image at a time.
-
- Args:
- data_out (numpy.ndarray): output data of network.
- label_list (list): list of label.
- top_k (int): Return top k results.
- """
- output = []
- for result in data_out:
- result_i = softmax(result)
- output_i = {}
- indexs = np.argsort(result_i)[::-1][0:top_k]
- for index in indexs:
- label = label_list[index].split(',')[0]
- output_i[label] = float(result_i[index])
- output.append(output_i)
- return output