nuscenes instance 调研笔记

本文介绍了nuscenes自动驾驶数据集,特别是关注于instance类别,包括如车辆、行人等不同类型的实例统计。作者通过代码示例展示了如何提取与‘vehicle.car’相关的instance,并计算出现在sample中次数大于等于10次的instance数量。
摘要由CSDN通过智能技术生成

nuscenes instance 调研笔记:

前言

nuscenes这个自动驾驶数据集挺大,官方devkit还提供了各种操作用于提高科研人员的效率,但是吧,东西多了学起来就乱七八糟的,本文仅以提取每个instance关联的所有images为例子,把下表(此表名曰:nuscenes Schema)所描绘的脑回路理一遍

Alt

关于instance的统计数据:

  • 打印下nusc的instance含量
len(nusc.instance)

原来是64386个,还是不少的

  • 看了下nuscenes schema, 好奇instance分别包含哪些类别

Alt

nusc.category
[{'token': 'aaddc3454ccbefbb2d8d8461f8f7f481',
  'name': 'noise',
  'description': 'Any lidar return that does not correspond to a physical object, such as dust, vapor, noise, fog, raindrops, smoke and reflections.',
  'index': 0},
 {'token': '63a94dfa99bb47529567cd90d3b58384',
  'name': 'animal',
  'description': 'All animals, e.g. cats, rats, dogs, deer, birds.',
  'index': 1},
 {'token': '1fa93b757fc74fb197cdd60001ad8abf',
  'name': 'human.pedestrian.adult',
  'description': 'Adult subcategory.',
  'index': 2},
 {'token': 'b1c6de4c57f14a5383d9f963fbdcb5cb',
  'name': 'human.pedestrian.child',
  'description': 'Child subcategory.',
  'index': 3},
 {'token': '909f1237d34a49d6bdd27c2fe4581d79',
  'name': 'human.pedestrian.construction_worker',
  'description': 'Construction worker',
  'index': 4},
 {'token': '403fede16c88426885dd73366f16c34a',
  'name': 'human.pedestrian.personal_mobility',
  'description': 'A small electric or self-propelled vehicle, e.g. skateboard, segway, or scooters, on which the person typically travels in a upright position. Driver and (if applicable) rider should be included in the bounding box along with the vehicle.',
  'index': 5},
 {'token': 'bb867e2064014279863c71a29b1eb381',
  'name': 'human.pedestrian.police_officer',
  'description': 'Police officer.',
  'index': 6},
 {'token': '6a5888777ca14867a8aee3fe539b56c4',
  'name': 'human.pedestrian.stroller',
  'description': 'Strollers. If a person is in the stroller, include in the annotation.',
  'index': 7},
 {'token': 'b2d7c6c701254928a9e4d6aac9446d79',
  'name': 'human.pedestrian.wheelchair',
  'description': 'Wheelchairs. If a person is in the wheelchair, include in the annotation.',
  'index': 8},
 {'token': '653f7efbb9514ce7b81d44070d6208c1',
  'name': 'movable_object.barrier',
  'description': 'Temporary road barrier placed in the scene in order to redirect traffic. Commonly used at construction sites. This includes concrete barrier, metal barrier and water barrier. No fences.',
  'index': 9},
 {'token': '063c5e7f638343d3a7230bc3641caf97',
  'name': 'movable_object.debris',
  'description': 'Movable object that is left on the driveable surface that is too large to be driven over safely, e.g tree branch, full trash bag etc.',
  'index': 10},
 {'token': 'd772e4bae20f493f98e15a76518b31d7',
  'name': 'movable_object.pushable_pullable',
  'description': 'Objects that a pedestrian may push or pull. For example dolleys, wheel barrows, garbage-bins, or shopping carts.',
  'index': 11},
 {'token': '85abebdccd4d46c7be428af5a6173947',
  'name': 'movable_object.trafficcone',
  'description': 'All types of traffic cone.',
  'index': 12},
 {'token': '0a30519ee16a4619b4f4acfe2d78fb55',
  'name': 'static_object.bicycle_rack',
  'description': 'Area or device intended to park or secure the bicycles in a row. It includes all the bikes parked in it and any empty slots that are intended for parking bikes.',
  'index': 13},
 {'token': 'fc95c87b806f48f8a1faea2dcc2222a4',
  'name': 'vehicle.bicycle',
  'description': 'Human or electric powered 2-wheeled vehicle designed to travel at lower speeds either on road surface, sidewalks or bike paths.',
  'index': 14},
 {'token': '003edbfb9ca849ee8a7496e9af3025d4',
  'name': 'vehicle.bus.bendy',
  'description': 'Bendy bus subcategory. Annotate each section of the bendy bus individually.',
  'index': 15},
 {'token': 'fedb11688db84088883945752e480c2c',
  'name': 'vehicle.bus.rigid',
  'description': 'Rigid bus subcategory.',
  'index': 16},
 {'token': 'fd69059b62a3469fbaef25340c0eab7f',
  'name': 'vehicle.car',
  'description': 'Vehicle designed primarily for personal use, e.g. sedans, hatch-backs, wagons, vans, mini-vans, SUVs and jeeps. If the vehicle is designed to carry more than 10 people use vehicle.bus. If it is primarily designed to haul cargo use vehicle.truck. ',
  'index': 17},
 {'token': '5b3cd6f2bca64b83aa3d0008df87d0e4',
  'name': 'vehicle.construction',
  'description': 'Vehicles primarily designed for construction. Typically very slow moving or stationary. Cranes and extremities of construction vehicles are only included in annotations if they interfere with traffic. Trucks used to haul rocks or building materials are considered vehicle.truck rather than construction vehicles.',
  'index': 18},
 {'token': '732cce86872640628788ff1bb81006d4',
  'name': 'vehicle.emergency.ambulance',
  'description': 'All types of ambulances.',
  'index': 19},
 {'token': '7b2ff083a64e4d53809ae5d9be563504',
  'name': 'vehicle.emergency.police',
  'description': 'All types of police vehicles including police bicycles and motorcycles.',
  'index': 20},
 {'token': 'dfd26f200ade4d24b540184e16050022',
  'name': 'vehicle.motorcycle',
  'description': 'Gasoline or electric powered 2-wheeled vehicle designed to move rapidly (at the speed of standard cars) on the road surface. This category includes all motorcycles, vespas and scooters.',
  'index': 21},
 {'token': '90d0f6f8e7c749149b1b6c3a029841a8',
  'name': 'vehicle.trailer',
  'description': 'Any vehicle trailer, both for trucks, cars and bikes.',
  'index': 22},
 {'token': '6021b5187b924d64be64a702e5570edf',
  'name': 'vehicle.truck',
  'description': 'Vehicles primarily designed to haul cargo including pick-ups, lorrys, trucks and semi-tractors. Trailers hauled after a semi-tractor should be labeled as vehicle.trailer',
  'index': 23},
 {'token': '89d20ff31e1fbdc844a74ff50f90c65c',
  'name': 'flat.driveable_surface',
  'description': 'All paved or unpaved surfaces that a car can drive on with no concern of traffic rules.',
  'index': 24},
 {'token': '65deb30a3b9481422af8ad8adc983d63',
  'name': 'flat.other',
  'description': 'All other forms of horizontal ground-level structures that do not belong to any of driveable_surface, curb, sidewalk and terrain. Includes elevated parts of traffic islands, delimiters, rail tracks, stairs with at most 3 steps and larger bodies of water (lakes, rivers).',
  'index': 25},
 {'token': 'bf7b16f053ff2ea504a3d083fed223dd',
  'name': 'flat.sidewalk',
  'description': 'Sidewalk, pedestrian walkways, bike paths, etc. Part of the ground designated for pedestrians or cyclists. Sidewalks do **not** have to be next to a road.',
  'index': 26},
 {'token': '2cfb3bdc510a4d28a4a1a78e611e4dfc',
  'name': 'flat.terrain',
  'description': 'Natural horizontal surfaces such as ground level horizontal vegetation (< 20 cm tall), grass, rolling hills, soil, sand and gravel.',
  'index': 27},
 {'token': 'a6773ab08859eb7037c36acc6d302a57',
  'name': 'static.manmade',
  'description': 'Includes man-made structures but not limited to: buildings, walls, guard rails, fences, poles, drainages, hydrants, flags, banners, street signs, electric circuit boxes, traffic lights, parking meters and stairs with more than 3 steps.',
  'index': 28},
 {'token': '0d35abf67670c9b13a4fe6550c698e73',
  'name': 'static.other',
  'description': 'Points in the background that are not distinguishable, or objects that do not match any of the above labels.',
  'index': 29},
 {'token': 'e8fc03c4a3ce3cd25c9bc1c808197861',
  'name': 'static.vegetation',
  'description': 'Any vegetation in the frame that is higher than the ground, including bushes, plants, potted plants, trees, etc. Only tall grass (> 20cm) is part of this, ground level grass is part of `terrain`.',
  'index': 30},
 {'token': '3847caf8adb16ed747535b76fdb9fd05',
  'name': 'vehicle.ego',
  'description': 'The vehicle on which the cameras, radar and lidar are mounted, that is sometimes visible at the bottom of the image.',
  'index': 31}]
  • 我只想操作car相关的instance:
car_instances=[]
for instance in nusc.instance:
    category_token= instance['category_token']
    instance_category= nusc.get('category',category_token)
    if instance_category['name']=='vehicle.car':
        car_instances.append(instance)
    
print(len(car_instances))

一共有27701个car,不少

  • 我想统计instance在sample中出现的次数大于等于10次的instance
max_annotation_num=0
images_sum=0
ge_than_10=0
for car_instance in tqdm(car_instances):
    first_annotation_token= car_instance['first_annotation_token']
    last_annotation_token=car_instance['last_annotation_token']
    
    cur_annotation_num=0
    curr_annotation_token=first_annotation_token
    while curr_annotation_token!=last_annotation_token:
        cur_annotation_num=cur_annotation_num+1
        cur_annotation=nusc.get('sample_annotation',curr_annotation_token)
        curr_annotation_token= cur_annotation['next']
        
        
    else:
        cur_annotation_num=cur_annotation_num+1
    
    if cur_annotation_num>max_annotation_num:
        max_annotation_num=cur_annotation_num
    
    images_sum=images_sum+cur_annotation_num
    if cur_annotation_num>=10:
        ge_than_10=ge_than_10+1
    
print(f'max annotation num is: {max_annotation_num}, image sum is:{images_sum}, ge than 10:{ge_than_10}')

我想,在结合nuscenes Schema和代码,应该能够明白各个数据表之间相互关联的操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值