糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 手绘图分析(Sketch Analysis)

手绘图分析(Sketch Analysis)

时间:2021-10-22 22:51:39

相关推荐

手绘图分析(Sketch Analysis)

手绘图分析(Sketch Analysis)

手绘图分析(Sketch Analysis)在计算机视觉和图形领域是研究的热点问题。手绘图分析包括手绘图识别(Sketch Recognition)、手绘图分割(Sketch Segmentation)、基于手绘图检索(Sketch-based Retrieval )、基于手绘图建模(Sketch-based Modeling)等等。接下来将会从手绘图分析设计的各个方面进行相关总结。此系列博客作为个人研究的一个学习记录,也希望与各位进行方法的探讨。

1 手绘图识别

1.1手绘图识别的问题与挑战

草图识别就是完成从笔迹空间到认知空间的映射,即在某个特定领域内赋予草图具体的语义表达。根据草图构成层次复杂度和处理难度来分类,草图分为单笔画图形符号、多笔画推行符号、多个符号组成的整幅草图。相应构成了草图识别的三种对象,第一种:笔画分割、图元识别、笔手势识别;第二种:图形符号识别;第三种:草图理解。草图识别可分为:二维草图识别、三维的草图识别;在线(联机)草图识别、离线(脱机)草图识别;符号化草图识别、非符号化草图识别。草图识别的时机有三种,第一种:提笔即反馈,常用单笔画手势识别、部分草图识别;第二种,用户画完单个图形对象;第三种,整幅草图绘制完成后,进行分割和识别。基于草图的人机交互技术的主要特征是,用户输入的随意性和草图信息的模糊性。草图识别的最大困难在于如何克服这种模糊性。包括单个图形组元的模糊性和上下文关系的模糊性。本文对于手绘图识别方法的描述,主要是是针对完整手绘图在绘制完成后的识别。手写数字的识别到简笔画的识别。

1.2手绘图数据集介绍

MINST数据集是由Yann提供的手写数字数据库文件,其官方下载地址MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges。这个里面还包含了对这个数据库进行识别的各类算法的结果比较及相关算法的论文。数据库的里的图像都是28*28大小的灰度图像,每个像素的是一个八位字节(0~255)。这个数据库主要包含了60000张的训练图像和10000张的测试图像,主要是下面的四个文件:

数据展示:

TU-Berlin SKetch数据集,其官方现在网址:How Do Humans Sketch Objects?。论文《How Do Humans Sketch Objects?》。该数据集一共20000张图片,包含250类常见的物体,图片尺寸256*256。关于每一类物体的识别率可以从官网上查看

http://cybertron.cg.tu-berlin.de/eitz/projects/classifysketch/computational_classification/index.html。

数据展示:

QuickDraw数据集是345种类别中的5000万张图纸的集合,图片尺寸256*256,由游戏玩家Quick,Draw!提供。绘图被捕获为带时间戳的向量,标记有元数据,包括要求玩家绘制的内容以及玩家所在的国家/地区。您可以在/data上浏览已识别的图纸。数据集获取:/googlecreativelab/quickdraw-dataset

数据展示:

数据集安全下载并且加载为图片

(1)urls.txt

/quickdraw_dataset/full/binary/The%20Eiffel%20Tower.bin/quickdraw_dataset/full/binary/The%20Great%20Wall%20of%20China.bin/quickdraw_dataset/full/binary/The%20Mona%20Lisa.bin/quickdraw_dataset/full/binary/aircraft%20carrier.bin/quickdraw_dataset/full/binary/airplane.bin/quickdraw_dataset/full/binary/alarm%20clock.bin/quickdraw_dataset/full/binary/ambulance.bin/quickdraw_dataset/full/binary/angel.bin/quickdraw_dataset/full/binary/animal%20migration.bin/quickdraw_dataset/full/binary/ant.bin/quickdraw_dataset/full/binary/anvil.bin/quickdraw_dataset/full/binary/apple.bin/quickdraw_dataset/full/binary/arm.bin/quickdraw_dataset/full/binary/asparagus.bin/quickdraw_dataset/full/binary/axe.bin/quickdraw_dataset/full/binary/backpack.bin/quickdraw_dataset/full/binary/banana.bin/quickdraw_dataset/full/binary/bandage.bin/quickdraw_dataset/full/binary/barn.bin/quickdraw_dataset/full/binary/baseball%20bat.bin/quickdraw_dataset/full/binary/baseball.bin/quickdraw_dataset/full/binary/basket.bin/quickdraw_dataset/full/binary/basketball.bin/quickdraw_dataset/full/binary/bat.bin/quickdraw_dataset/full/binary/bathtub.bin/quickdraw_dataset/full/binary/beach.bin/quickdraw_dataset/full/binary/bear.bin/quickdraw_dataset/full/binary/beard.bin/quickdraw_dataset/full/binary/bed.bin/quickdraw_dataset/full/binary/bee.bin/quickdraw_dataset/full/binary/belt.bin/quickdraw_dataset/full/binary/bench.bin/quickdraw_dataset/full/binary/bicycle.bin/quickdraw_dataset/full/binary/binoculars.bin/quickdraw_dataset/full/binary/bird.bin/quickdraw_dataset/full/binary/birthday%20cake.bin/quickdraw_dataset/full/binary/blackberry.bin/quickdraw_dataset/full/binary/blueberry.bin/quickdraw_dataset/full/binary/book.bin/quickdraw_dataset/full/binary/boomerang.bin/quickdraw_dataset/full/binary/bottlecap.bin/quickdraw_dataset/full/binary/bowtie.bin/quickdraw_dataset/full/binary/bracelet.bin/quickdraw_dataset/full/binary/brain.bin/quickdraw_dataset/full/binary/bread.bin/quickdraw_dataset/full/binary/bridge.bin/quickdraw_dataset/full/binary/broccoli.bin/quickdraw_dataset/full/binary/broom.bin/quickdraw_dataset/full/binary/bucket.bin/quickdraw_dataset/full/binary/bulldozer.bin/quickdraw_dataset/full/binary/bus.bin/quickdraw_dataset/full/binary/bush.bin/quickdraw_dataset/full/binary/butterfly.bin/quickdraw_dataset/full/binary/cactus.bin/quickdraw_dataset/full/binary/cake.bin/quickdraw_dataset/full/binary/calculator.bin/quickdraw_dataset/full/binary/calendar.bin/quickdraw_dataset/full/binary/camel.bin/quickdraw_dataset/full/binary/camera.bin/quickdraw_dataset/full/binary/camouflage.bin/quickdraw_dataset/full/binary/campfire.bin/quickdraw_dataset/full/binary/candle.bin/quickdraw_dataset/full/binary/cannon.bin/quickdraw_dataset/full/binary/canoe.bin/quickdraw_dataset/full/binary/car.bin/quickdraw_dataset/full/binary/carrot.bin/quickdraw_dataset/full/binary/castle.bin/quickdraw_dataset/full/binary/cat.bin/quickdraw_dataset/full/binary/ceiling%20fan.bin/quickdraw_dataset/full/binary/cell%20phone.bin/quickdraw_dataset/full/binary/cello.bin/quickdraw_dataset/full/binary/chair.bin/quickdraw_dataset/full/binary/chandelier.bin/quickdraw_dataset/full/binary/church.bin/quickdraw_dataset/full/binary/circle.bin/quickdraw_dataset/full/binary/clarinet.bin/quickdraw_dataset/full/binary/clock.bin/quickdraw_dataset/full/binary/cloud.bin/quickdraw_dataset/full/binary/coffee%20cup.bin/quickdraw_dataset/full/binary/compass.bin/quickdraw_dataset/full/binary/computer.bin/quickdraw_dataset/full/binary/cookie.bin/quickdraw_dataset/full/binary/cooler.bin/quickdraw_dataset/full/binary/couch.bin/quickdraw_dataset/full/binary/cow.bin/quickdraw_dataset/full/binary/crab.bin/quickdraw_dataset/full/binary/crayon.bin/quickdraw_dataset/full/binary/crocodile.bin/quickdraw_dataset/full/binary/crown.bin/quickdraw_dataset/full/binary/cruise%20ship.bin/quickdraw_dataset/full/binary/cup.bin/quickdraw_dataset/full/binary/diamond.bin/quickdraw_dataset/full/binary/dishwasher.bin/quickdraw_dataset/full/binary/diving%20board.bin/quickdraw_dataset/full/binary/dog.bin/quickdraw_dataset/full/binary/dolphin.bin/quickdraw_dataset/full/binary/donut.bin/quickdraw_dataset/full/binary/door.bin/quickdraw_dataset/full/binary/dragon.bin/quickdraw_dataset/full/binary/dresser.bin/quickdraw_dataset/full/binary/drill.bin/quickdraw_dataset/full/binary/drums.bin/quickdraw_dataset/full/binary/duck.bin/quickdraw_dataset/full/binary/dumbbell.bin/quickdraw_dataset/full/binary/ear.bin/quickdraw_dataset/full/binary/elbow.bin/quickdraw_dataset/full/binary/elephant.bin/quickdraw_dataset/full/binary/envelope.bin/quickdraw_dataset/full/binary/eraser.bin/quickdraw_dataset/full/binary/eye.bin/quickdraw_dataset/full/binary/eyeglasses.bin/quickdraw_dataset/full/binary/face.bin/quickdraw_dataset/full/binary/fan.bin/quickdraw_dataset/full/binary/feather.bin/quickdraw_dataset/full/binary/fence.bin/quickdraw_dataset/full/binary/finger.bin/quickdraw_dataset/full/binary/fire%20hydrant.bin/quickdraw_dataset/full/binary/fireplace.bin/quickdraw_dataset/full/binary/firetruck.bin/quickdraw_dataset/full/binary/fish.bin/quickdraw_dataset/full/binary/flamingo.bin/quickdraw_dataset/full/binary/flashlight.bin/quickdraw_dataset/full/binary/flip%20flops.bin/quickdraw_dataset/full/binary/floor%20lamp.bin/quickdraw_dataset/full/binary/flower.bin/quickdraw_dataset/full/binary/flying%20saucer.bin/quickdraw_dataset/full/binary/foot.bin/quickdraw_dataset/full/binary/fork.bin/quickdraw_dataset/full/binary/frog.bin/quickdraw_dataset/full/binary/frying%20pan.bin/quickdraw_dataset/full/binary/garden%20hose.bin/quickdraw_dataset/full/binary/garden.bin/quickdraw_dataset/full/binary/giraffe.bin/quickdraw_dataset/full/binary/goatee.bin/quickdraw_dataset/full/binary/golf%20club.bin/quickdraw_dataset/full/binary/grapes.bin/quickdraw_dataset/full/binary/grass.bin/quickdraw_dataset/full/binary/guitar.bin/quickdraw_dataset/full/binary/hamburger.bin/quickdraw_dataset/full/binary/hammer.bin/quickdraw_dataset/full/binary/hand.bin/quickdraw_dataset/full/binary/harp.bin/quickdraw_dataset/full/binary/hat.bin/quickdraw_dataset/full/binary/headphones.bin/quickdraw_dataset/full/binary/hedgehog.bin/quickdraw_dataset/full/binary/helicopter.bin/quickdraw_dataset/full/binary/helmet.bin/quickdraw_dataset/full/binary/hexagon.bin/quickdraw_dataset/full/binary/hockey%20puck.bin/quickdraw_dataset/full/binary/hockey%20stick.bin/quickdraw_dataset/full/binary/horse.bin/quickdraw_dataset/full/binary/hospital.bin/quickdraw_dataset/full/binary/hot%20air%20balloon.bin/quickdraw_dataset/full/binary/hot%20dog.bin/quickdraw_dataset/full/binary/hot%20tub.bin/quickdraw_dataset/full/binary/hourglass.bin/quickdraw_dataset/full/binary/house%20plant.bin/quickdraw_dataset/full/binary/house.bin/quickdraw_dataset/full/binary/hurricane.bin/quickdraw_dataset/full/binary/ice%20cream.bin/quickdraw_dataset/full/binary/jacket.bin/quickdraw_dataset/full/binary/jail.bin/quickdraw_dataset/full/binary/kangaroo.bin/quickdraw_dataset/full/binary/key.bin/quickdraw_dataset/full/binary/keyboard.bin/quickdraw_dataset/full/binary/knee.bin/quickdraw_dataset/full/binary/knife.bin/quickdraw_dataset/full/binary/ladder.bin/quickdraw_dataset/full/binary/lantern.bin/quickdraw_dataset/full/binary/laptop.bin/quickdraw_dataset/full/binary/leaf.bin/quickdraw_dataset/full/binary/leg.bin/quickdraw_dataset/full/binary/light%20bulb.bin/quickdraw_dataset/full/binary/lighter.bin/quickdraw_dataset/full/binary/lighthouse.bin/quickdraw_dataset/full/binary/lightning.bin/quickdraw_dataset/full/binary/line.bin/quickdraw_dataset/full/binary/lion.bin/quickdraw_dataset/full/binary/lipstick.bin/quickdraw_dataset/full/binary/lobster.bin/quickdraw_dataset/full/binary/lollipop.bin/quickdraw_dataset/full/binary/mailbox.bin/quickdraw_dataset/full/binary/map.bin/quickdraw_dataset/full/binary/marker.bin/quickdraw_dataset/full/binary/matches.bin/quickdraw_dataset/full/binary/megaphone.bin/quickdraw_dataset/full/binary/mermaid.bin/quickdraw_dataset/full/binary/microphone.bin/quickdraw_dataset/full/binary/microwave.bin/quickdraw_dataset/full/binary/monkey.bin/quickdraw_dataset/full/binary/moon.bin/quickdraw_dataset/full/binary/mosquito.bin/quickdraw_dataset/full/binary/motorbike.bin/quickdraw_dataset/full/binary/mountain.bin/quickdraw_dataset/full/binary/mouse.bin/quickdraw_dataset/full/binary/moustache.bin/quickdraw_dataset/full/binary/mouth.bin/quickdraw_dataset/full/binary/mug.bin/quickdraw_dataset/full/binary/mushroom.bin/quickdraw_dataset/full/binary/nail.bin/quickdraw_dataset/full/binary/necklace.bin/quickdraw_dataset/full/binary/nose.bin/quickdraw_dataset/full/binary/ocean.bin/quickdraw_dataset/full/binary/octagon.bin/quickdraw_dataset/full/binary/octopus.bin/quickdraw_dataset/full/binary/onion.bin/quickdraw_dataset/full/binary/oven.bin/quickdraw_dataset/full/binary/owl.bin/quickdraw_dataset/full/binary/paint%20can.bin/quickdraw_dataset/full/binary/paintbrush.bin/quickdraw_dataset/full/binary/palm%20tree.bin/quickdraw_dataset/full/binary/panda.bin/quickdraw_dataset/full/binary/pants.bin/quickdraw_dataset/full/binary/paper%20clip.bin/quickdraw_dataset/full/binary/parachute.bin/quickdraw_dataset/full/binary/parrot.bin/quickdraw_dataset/full/binary/passport.bin/quickdraw_dataset/full/binary/peanut.bin/quickdraw_dataset/full/binary/pear.bin/quickdraw_dataset/full/binary/peas.bin/quickdraw_dataset/full/binary/pencil.bin/quickdraw_dataset/full/binary/penguin.bin/quickdraw_dataset/full/binary/piano.bin/quickdraw_dataset/full/binary/pickup%20truck.bin/quickdraw_dataset/full/binary/picture%20frame.bin/quickdraw_dataset/full/binary/pig.bin/quickdraw_dataset/full/binary/pillow.bin/quickdraw_dataset/full/binary/pineapple.bin/quickdraw_dataset/full/binary/pizza.bin/quickdraw_dataset/full/binary/pliers.bin/quickdraw_dataset/full/binary/police%20car.bin/quickdraw_dataset/full/binary/pond.bin/quickdraw_dataset/full/binary/pool.bin/quickdraw_dataset/full/binary/popsicle.bin/quickdraw_dataset/full/binary/postcard.bin/quickdraw_dataset/full/binary/potato.bin/quickdraw_dataset/full/binary/power%20outlet.bin/quickdraw_dataset/full/binary/purse.bin/quickdraw_dataset/full/binary/rabbit.bin/quickdraw_dataset/full/binary/raccoon.bin/quickdraw_dataset/full/binary/radio.bin/quickdraw_dataset/full/binary/rain.bin/quickdraw_dataset/full/binary/rainbow.bin/quickdraw_dataset/full/binary/rake.bin/quickdraw_dataset/full/binary/remote%20control.bin/quickdraw_dataset/full/binary/rhinoceros.bin/quickdraw_dataset/full/binary/rifle.bin/quickdraw_dataset/full/binary/river.bin/quickdraw_dataset/full/binary/roller%20coaster.bin/quickdraw_dataset/full/binary/rollerskates.bin/quickdraw_dataset/full/binary/sailboat.bin/quickdraw_dataset/full/binary/sandwich.bin/quickdraw_dataset/full/binary/saw.bin/quickdraw_dataset/full/binary/saxophone.bin/quickdraw_dataset/full/binary/school%20bus.bin/quickdraw_dataset/full/binary/scissors.bin/quickdraw_dataset/full/binary/scorpion.bin/quickdraw_dataset/full/binary/screwdriver.bin/quickdraw_dataset/full/binary/sea%20turtle.bin/quickdraw_dataset/full/binary/see%20saw.bin/quickdraw_dataset/full/binary/shark.bin/quickdraw_dataset/full/binary/sheep.bin/quickdraw_dataset/full/binary/shoe.bin/quickdraw_dataset/full/binary/shorts.bin/quickdraw_dataset/full/binary/shovel.bin/quickdraw_dataset/full/binary/sink.bin/quickdraw_dataset/full/binary/skateboard.bin/quickdraw_dataset/full/binary/skull.bin/quickdraw_dataset/full/binary/skyscraper.bin/quickdraw_dataset/full/binary/sleeping%20bag.bin/quickdraw_dataset/full/binary/smiley%20face.bin/quickdraw_dataset/full/binary/snail.bin/quickdraw_dataset/full/binary/snake.bin/quickdraw_dataset/full/binary/snorkel.bin/quickdraw_dataset/full/binary/snowflake.bin/quickdraw_dataset/full/binary/snowman.bin/quickdraw_dataset/full/binary/soccer%20ball.bin/quickdraw_dataset/full/binary/sock.bin/quickdraw_dataset/full/binary/speedboat.bin/quickdraw_dataset/full/binary/spider.bin/quickdraw_dataset/full/binary/spoon.bin/quickdraw_dataset/full/binary/spreadsheet.bin/quickdraw_dataset/full/binary/square.bin/quickdraw_dataset/full/binary/squiggle.bin/quickdraw_dataset/full/binary/squirrel.bin/quickdraw_dataset/full/binary/stairs.bin/quickdraw_dataset/full/binary/star.bin/quickdraw_dataset/full/binary/steak.bin/quickdraw_dataset/full/binary/stereo.bin/quickdraw_dataset/full/binary/stethoscope.bin/quickdraw_dataset/full/binary/stitches.bin/quickdraw_dataset/full/binary/stop%20sign.bin/quickdraw_dataset/full/binary/stove.bin/quickdraw_dataset/full/binary/strawberry.bin/quickdraw_dataset/full/binary/streetlight.bin/quickdraw_dataset/full/binary/string%20bean.bin/quickdraw_dataset/full/binary/submarine.bin/quickdraw_dataset/full/binary/suitcase.bin/quickdraw_dataset/full/binary/sun.bin/quickdraw_dataset/full/binary/swan.bin/quickdraw_dataset/full/binary/sweater.bin/quickdraw_dataset/full/binary/swing%20set.bin/quickdraw_dataset/full/binary/sword.bin/quickdraw_dataset/full/binary/syringe.bin/quickdraw_dataset/full/binary/t-shirt.bin/quickdraw_dataset/full/binary/table.bin/quickdraw_dataset/full/binary/teapot.bin/quickdraw_dataset/full/binary/teddy-bear.bin/quickdraw_dataset/full/binary/telephone.bin/quickdraw_dataset/full/binary/television.bin/quickdraw_dataset/full/binary/tennis%20racquet.bin/quickdraw_dataset/full/binary/tent.bin/quickdraw_dataset/full/binary/tiger.bin/quickdraw_dataset/full/binary/toaster.bin/quickdraw_dataset/full/binary/toe.bin/quickdraw_dataset/full/binary/toilet.bin/quickdraw_dataset/full/binary/tooth.bin/quickdraw_dataset/full/binary/toothbrush.bin/quickdraw_dataset/full/binary/toothpaste.bin/quickdraw_dataset/full/binary/tornado.bin/quickdraw_dataset/full/binary/tractor.bin/quickdraw_dataset/full/binary/traffic%20light.bin/quickdraw_dataset/full/binary/train.bin/quickdraw_dataset/full/binary/tree.bin/quickdraw_dataset/full/binary/triangle.bin/quickdraw_dataset/full/binary/trombone.bin/quickdraw_dataset/full/binary/truck.bin/quickdraw_dataset/full/binary/trumpet.bin/quickdraw_dataset/full/binary/umbrella.bin/quickdraw_dataset/full/binary/underwear.bin/quickdraw_dataset/full/binary/van.bin/quickdraw_dataset/full/binary/vase.bin/quickdraw_dataset/full/binary/violin.bin/quickdraw_dataset/full/binary/washing%20machine.bin/quickdraw_dataset/full/binary/watermelon.bin/quickdraw_dataset/full/binary/waterslide.bin/quickdraw_dataset/full/binary/whale.bin/quickdraw_dataset/full/binary/wheel.bin/quickdraw_dataset/full/binary/windmill.bin/quickdraw_dataset/full/binary/wine%20bottle.bin/quickdraw_dataset/full/binary/wine%20glass.bin/quickdraw_dataset/full/binary/wristwatch.bin/quickdraw_dataset/full/binary/yoga.bin/quickdraw_dataset/full/binary/zebra.bin/quickdraw_dataset/full/binary/zigzag.bin

(2)quickdrawDownload.py

# encoding:utf-8import urllib.request as urimport osfrom urllib.parse import unquoteimport urllibimport pubchempyimport pandas as pdimport numpy as npwith open("urls.txt", "r") as fd:lines = fd.readlines()for line in lines:line = line.replace("\n", "")filename = line[line.rindex("/") + 1:]filename = unquote(filename)response = ur.urlopen(line, timeout=1000)data = response.read()response.close()with open(filename, "wb") as datafd:datafd.write(data)datafd.close()print(filename)

(3)保存为图片

# Copyright Google Inc.# # 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# # /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 structfrom struct import unpackfrom PIL import Image, ImageDrawimport osclass QuickDrawing():"""Represents a single Quick, Draw! drawing."""def __init__(self, name, drawing_data):self._name =nameself._drawing_data = drawing_dataself._strokes = Noneself._image = None@propertydef name(self):"""Returns the name of the drawing (anvil, aircraft, ant, etc)."""return self._name@propertydef key_id(self):"""Returns the id of the drawing."""return self._drawing_data["key_id"]@propertydef countrycode(self):"""Returns the country code for the drawing."""return self._drawing_data["countrycode"].decode("utf-8")@propertydef recognized(self):"""Returns a boolean representing whether the drawing was recognized."""return bool(self._drawing_data["recognized"])@propertydef timestamp(self):"""Returns the time the drawing was created (in seconds since the epoch)."""return self._drawing_data["timestamp"]@propertydef no_of_strokes(self):"""Returns the number of pen strokes used to create the drawing."""return self._drawing_data["n_strokes"]@propertydef image_data(self):"""Returns the raw image data as list of strokes with a list of X co-ordinates and a list of Y co-ordinates.Co-ordinates are aligned to the top-left hand corner with valuesfrom 0 to 255.See /googlecreativelab/quickdraw-dataset#simplified-drawing-files-ndjsonfor more information regarding how the data is represented."""return self._drawing_data["image"]@propertydef strokes(self):"""Returns a list of pen strokes containing a list of (x,y) coordinates which make up the drawing.To iterate though the strokes data use::from quickdraw import QuickDrawDataqd = QuickDrawData()anvil = qd.get_drawing("anvil")for stroke in anvil.strokes:for x, y in stroke:print("x={} y={}".format(x, y)) """# load the strokesif self._strokes is None:self._strokes = []for stroke in self.image_data:points = []xs = stroke[0]ys = stroke[1]if len(xs) != len(ys):raise Exception("something is wrong, different number of x's and y's")for point in range(len(xs)):x = xs[point]y = ys[point]points.append((x,y))self._strokes.append(points)return self._strokes@propertydef image(self):"""Returns a `PIL Image <https://pillow.readthedocs.io/en/3.0.x/reference/Image.html>`_ object of the drawing on a white background with a black drawing. Alternative imageparameters can be set using ``get_image()``.To save the image you would use the ``save`` method::from quickdraw import QuickDrawDataqd = QuickDrawData()anvil = qd.get_drawing("anvil")anvil.image.save("my_anvil.gif")"""if self._image is None:self._image = self.get_image()return self._imagedef get_image(self, stroke_color=(0,0,0), stroke_width=2, bg_color=(255,255,255)):"""Get a `PIL Image <https://pillow.readthedocs.io/en/3.0.x/reference/Image.html>`_ object of the drawing.:param list stroke_color:A list of RGB (red, green, blue) values for the stroke color,defaults to (0,0,0).:param int stroke_color:A width of the stroke, defaults to 2.:param list bg_color:A list of RGB (red, green, blue) values for the background color,defaults to (255,255,255)."""image = Image.new("RGB", (255,255), color=bg_color)image_draw = ImageDraw.Draw(image)for stroke in self.strokes:image_draw.line(stroke, fill=stroke_color, width=stroke_width)return imagedef __str__(self):return "QuickDrawing key_id={}".format(self.key_id)def unpack_drawing(file_handle):key_id, = unpack('Q', file_handle.read(8))country_code, = unpack('2s', file_handle.read(2))recognized, = unpack('b', file_handle.read(1))timestamp, = unpack('I', file_handle.read(4))n_strokes, = unpack('H', file_handle.read(2))image = []for i in range(n_strokes):n_points, = unpack('H', file_handle.read(2))fmt = str(n_points) + 'B'x = unpack(fmt, file_handle.read(n_points))y = unpack(fmt, file_handle.read(n_points))image.append((x, y))return {'key_id': key_id,'country_code': country_code,'recognized': recognized,'timestamp': timestamp,'image': image}def unpack_drawings(filename):with open(filename, 'rb') as f:while True:try:yield unpack_drawing(f)except struct.error:breakdef load_bin_files(dir):fileslist = []for path, dirs, files in os.walk(dir):for file in files:fileslist.append(os.path.join(path, file))return fileslistif __name__ == "__main__":bin_fileslist = load_bin_files("datasetbin")datasetdir = "dataset"if not os.path.exists(datasetdir):os.mkdir(datasetdir)for binfile in bin_fileslist:class_name = binfile[binfile.rindex('/') + 1 : binfile.rindex(".bin")]print(binfile, " ", class_name)class_dir = os.path.join(datasetdir, class_name)if not os.path.exists(class_dir):os.mkdir(class_dir)index = 0for drawing in unpack_drawings(binfile):# do something with the drawingqt = QuickDrawing(class_name, drawing)image = qt.get_image()image.save(os.path.join(class_dir, str(index) + ".jpg")) index = index + 1

Sketch-RNN QuickDraw数据集,在此数据集中,从每个类别中随机选择75K样本(70K训练,2.5K验证,2.5K测试),使用[RDP]处理(/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm)线条简化,epsilon参数为2.0。每个类别都将存储在自己的.npz文件中,例如cat.npz。Sketch-Rnn 论文《A Neural Representation of Sketch Drawings》

数据展示:

Sketch-500数据集,此数据集为未公开数据集,在论文《Query-Adaptive Shape Topic Mining for Hand-Drawn

Sketch Recognition》中提出,1000个名词,每一个名词收集了相应的500张图片,用来测试QST模型。

数据展示:

MPEG-7 dataset数据集,此数据集用于形状识别,一共70个形状类,其中每个形状类包含表单中的20个不同形状轮廓

二进制图像。此数据集总共包含1400个形状轮廓。参考论文《MPEG-7 Visual Shape Descriptors》

数据展示:

1.3手绘图识别方法

Sketch-A-net:《Sketch-a-Net: A Deep Neural Network that Beats Humans

github:http://www.eecs.qmul.ac.uk/~tmh/

/ayush29feb/Sketch-A-XNORNet

Sketch-RNN:《A Neural Representation of Sketch Drawings

github:/tensorflow/magenta/tree/master/magenta/models/sketch_rnn

如果觉得《手绘图分析(Sketch Analysis)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。