Unverified Commit a6bb3580 authored by Shaoshuai Shi's avatar Shaoshuai Shi Committed by GitHub
Browse files

Support Waymo Open Dataset with SoTA results #349

parents 7bc7e551 4d3f0009
......@@ -18,12 +18,15 @@ It is also the official code release of [`[PointRCNN]`](https://arxiv.org/abs/18
## Changelog
[2020-08-10] **NEW:** Bugfixed: The provided NuScenes models have been updated to fix the loading bugs. Please redownload it if you need to use the pretrained NuScenes models.
[2020-11-10] **NEW:** The [Waymo Open Dataset](#waymo-open-dataset-baselines) has been supported with state-of-the-art results. Currently we provide the
configs and results of `SECOND`, `PartA2` and `PV-RCNN` on the Waymo Open Dataset, and more models could be easily supported by modifying their dataset configs.
[2020-07-30] **NEW:** `OpenPCDet` v0.3.0 is released with the following features:
[2020-08-10] Bugfixed: The provided NuScenes models have been updated to fix the loading bugs. Please redownload it if you need to use the pretrained NuScenes models.
[2020-07-30] `OpenPCDet` v0.3.0 is released with the following features:
* The Point-based and Anchor-Free models ([`PointRCNN`](#KITTI-3D-Object-Detection-Baselines), [`PartA2-Free`](#KITTI-3D-Object-Detection-Baselines)) are supported now.
* The NuScenes dataset is supported with strong baseline results ([`SECOND-MultiHead (CBGS)`](#NuScenes-3D-Object-Detection-Baselines) and [`PointPillar-MultiHead`](#NuScenes-3D-Object-Detection-Baselines)).
* High efficiency than last version, support `PyTorch 1.1~1.5` and `spconv 1.0~1.2` simultaneously.
* High efficiency than last version, support **PyTorch 1.1~1.7** and **spconv 1.0~1.2** simultaneously.
[2020-07-17] Add simple visualization codes and a quick demo to test with custom data.
......@@ -87,7 +90,7 @@ Selected supported methods are shown in the below table. The results are the 3D
* All models are trained with 8 GTX 1080Ti GPUs and are available for download.
* The training time is measured with 8 TITAN XP GPUs and PyTorch 1.5.
| | training time | Car | Pedestrian | Cyclist | download |
| | training time | Car@R11 | Pedestrian@R11 | Cyclist@R11 | download |
|---------------------------------------------|----------:|:-------:|:-------:|:-------:|:---------:|
| [PointPillar](tools/cfgs/kitti_models/pointpillar.yaml) |~1.2 hours| 77.28 | 52.29 | 62.68 | [model-18M](https://drive.google.com/file/d/1wMxWTpU1qUoY3DsCH31WJmvJxcjFXKlm/view?usp=sharing) |
| [SECOND](tools/cfgs/kitti_models/second.yaml) | ~1.7 hours | 78.62 | 52.98 | 67.15 | [model-20M](https://drive.google.com/file/d/1-01zsPOsqanZQqIIyy7FpNXStL3y4jdR/view?usp=sharing) |
......@@ -105,6 +108,22 @@ All models are trained with 8 GTX 1080Ti GPUs and are available for download.
| [PointPillar-MultiHead](tools/cfgs/nuscenes_models/cbgs_pp_multihead.yaml) | 33.87 | 26.00 | 32.07 | 28.74 | 20.15 | 44.63 | 58.23 | [model-23M](https://drive.google.com/file/d/1p-501mTWsq0G9RzroTWSXreIMyTUUpBM/view?usp=sharing) |
| [SECOND-MultiHead (CBGS)](tools/cfgs/nuscenes_models/cbgs_second_multihead.yaml) | 31.15 | 25.51 | 26.64 | 26.26 | 20.46 | 50.59 | 62.29 | [model-35M](https://drive.google.com/file/d/1bNzcOnE3u9iooBFMk2xK7HqhdeQ_nwTq/view?usp=sharing) |
### Waymo Open Dataset Baselines
We provide the setting of [`DATA_CONFIG.SAMPLED_INTERVAL`](tools/cfgs/dataset_configs/waymo_dataset.yaml) on the Waymo Open Dataset (WOD) to subsample partial samples for training and evaluation,
so you could also play with WOD by setting a smaller `DATA_CONFIG.SAMPLED_INTERVAL` even if you only have limited GPU resources.
By default, all models are trained with **20% data (~32k frames)** of all the training samples on 8 GTX 1080Ti GPUs, and the results of each cell here are mAP/mAPH calculated by the official Waymo evaluation metrics on the **whole** validation set (version 1.2).
| | Vec_L1 | Vec_L2 | Ped_L1 | Ped_L2 | Cyc_L1 | Cyc_L2 |
|---------------------------------------------|----------:|:-------:|:-------:|:-------:|:-------:|:-------:|
| [SECOND](tools/cfgs/waymo_models/second.yaml) | 68.03/67.44 | 59.57/59.04 | 61.14/50.33 | 53.00/43.56 | 54.66/53.31 | 52.67/51.37 |
| [Part-A^2-Anchor](tools/cfgs/waymo_models/PartA2.yaml) | 71.82/71.29 | 64.33/63.82 | 63.15/54.96 | 54.24/47.11 | 65.23/63.92 | 62.61/61.35 |
| [PV-RCNN](tools/cfgs/waymo_models/pv_rcnn.yaml) | 74.06/73.38 | 64.99/64.38 | 62.66/52.68 | 53.80/45.14 | 63.32/61.71 | 60.72/59.18 |
We could not provide the above pretrained models due to [Waymo Dataset License Agreement](https://waymo.com/open/terms/),
but you could easily achieve similar performance by training with the default configs.
### Other datasets
More datasets are on the way.
......@@ -140,31 +159,15 @@ If you find this project useful in your research, please consider cite:
```
@inproceedings{shi2020pv,
title={Pv-rcnn: Point-voxel feature set abstraction for 3d object detection},
author={Shi, Shaoshuai and Guo, Chaoxu and Jiang, Li and Wang, Zhe and Shi, Jianping and Wang, Xiaogang and Li, Hongsheng},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={10529--10538},
@misc{openpcdet2020,
title={OpenPCDet: An Open-source Toolbox for 3D Object Detection from Point Clouds},
author={OpenPCDet Development Team},
howpublished = {\url{https://github.com/open-mmlab/OpenPCDet}},
year={2020}
}
```
## Contribution
Welcome to be a member of the OpenPCDet development team by contributing to this repo, and feel free to contact us for any potential contributions.
@article{shi2020points,
title={From Points to Parts: 3D Object Detection from Point Cloud with Part-aware and Part-aggregation Network},
author={Shi, Shaoshuai and Wang, Zhe and Shi, Jianping and Wang, Xiaogang and Li, Hongsheng},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
year={2020},
publisher={IEEE}
}
@inproceedings{shi2019pointrcnn,
title={PointRCNN: 3d Object Progposal Generation and Detection from Point Cloud},
author={Shi, Shaoshuai and Wang, Xiaogang and Li, Hongsheng},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
pages={770--779},
year={2019}
}
```
## Contact
This project is currently maintained by Shaoshuai Shi ([@sshaoshuai](http://github.com/sshaoshuai)) and Chaoxu Guo ([@Gus-Guo](https://github.com/Gus-Guo)).
segment-10017090168044687777_6380_000_6400_000_with_camera_labels.tfrecord
segment-10023947602400723454_1120_000_1140_000_with_camera_labels.tfrecord
segment-1005081002024129653_5313_150_5333_150_with_camera_labels.tfrecord
segment-10061305430875486848_1080_000_1100_000_with_camera_labels.tfrecord
segment-10072140764565668044_4060_000_4080_000_with_camera_labels.tfrecord
segment-10072231702153043603_5725_000_5745_000_with_camera_labels.tfrecord
segment-10075870402459732738_1060_000_1080_000_with_camera_labels.tfrecord
segment-10082223140073588526_6140_000_6160_000_with_camera_labels.tfrecord
segment-10094743350625019937_3420_000_3440_000_with_camera_labels.tfrecord
segment-10096619443888687526_2820_000_2840_000_with_camera_labels.tfrecord
segment-10107710434105775874_760_000_780_000_with_camera_labels.tfrecord
segment-10153695247769592104_787_000_807_000_with_camera_labels.tfrecord
segment-10206293520369375008_2796_800_2816_800_with_camera_labels.tfrecord
segment-10212406498497081993_5300_000_5320_000_with_camera_labels.tfrecord
segment-1022527355599519580_4866_960_4886_960_with_camera_labels.tfrecord
segment-10226164909075980558_180_000_200_000_with_camera_labels.tfrecord
segment-10231929575853664160_1160_000_1180_000_with_camera_labels.tfrecord
segment-10235335145367115211_5420_000_5440_000_with_camera_labels.tfrecord
segment-10241508783381919015_2889_360_2909_360_with_camera_labels.tfrecord
segment-10275144660749673822_5755_561_5775_561_with_camera_labels.tfrecord
segment-10327752107000040525_1120_000_1140_000_with_camera_labels.tfrecord
segment-10391312872392849784_4099_400_4119_400_with_camera_labels.tfrecord
segment-10444454289801298640_4360_000_4380_000_with_camera_labels.tfrecord
segment-10455472356147194054_1560_000_1580_000_with_camera_labels.tfrecord
segment-10485926982439064520_4980_000_5000_000_with_camera_labels.tfrecord
segment-10498013744573185290_1240_000_1260_000_with_camera_labels.tfrecord
segment-10500357041547037089_1474_800_1494_800_with_camera_labels.tfrecord
segment-10517728057304349900_3360_000_3380_000_with_camera_labels.tfrecord
segment-1051897962568538022_238_170_258_170_with_camera_labels.tfrecord
segment-10526338824408452410_5714_660_5734_660_with_camera_labels.tfrecord
segment-10584247114982259878_490_000_510_000_with_camera_labels.tfrecord
segment-10588771936253546636_2300_000_2320_000_with_camera_labels.tfrecord
segment-10596949720463106554_1933_530_1953_530_with_camera_labels.tfrecord
segment-10599748131695282446_1380_000_1400_000_with_camera_labels.tfrecord
segment-10625026498155904401_200_000_220_000_with_camera_labels.tfrecord
segment-10664823084372323928_4360_000_4380_000_with_camera_labels.tfrecord
segment-10676267326664322837_311_180_331_180_with_camera_labels.tfrecord
segment-10723911392655396041_860_000_880_000_with_camera_labels.tfrecord
segment-10724020115992582208_7660_400_7680_400_with_camera_labels.tfrecord
segment-10734565072045778791_440_000_460_000_with_camera_labels.tfrecord
segment-10750135302241325253_180_000_200_000_with_camera_labels.tfrecord
segment-10770759614217273359_1465_000_1485_000_with_camera_labels.tfrecord
segment-10786629299947667143_3440_000_3460_000_with_camera_labels.tfrecord
segment-10793018113277660068_2714_540_2734_540_with_camera_labels.tfrecord
segment-1083056852838271990_4080_000_4100_000_with_camera_labels.tfrecord
segment-10876852935525353526_1640_000_1660_000_with_camera_labels.tfrecord
segment-10923963890428322967_1445_000_1465_000_with_camera_labels.tfrecord
segment-10927752430968246422_4940_000_4960_000_with_camera_labels.tfrecord
segment-10940952441434390507_1888_710_1908_710_with_camera_labels.tfrecord
segment-10963653239323173269_1924_000_1944_000_with_camera_labels.tfrecord
segment-10964956617027590844_1584_680_1604_680_with_camera_labels.tfrecord
segment-10975280749486260148_940_000_960_000_with_camera_labels.tfrecord
segment-11004685739714500220_2300_000_2320_000_with_camera_labels.tfrecord
segment-11017034898130016754_697_830_717_830_with_camera_labels.tfrecord
segment-11060291335850384275_3761_210_3781_210_with_camera_labels.tfrecord
segment-11070802577416161387_740_000_760_000_with_camera_labels.tfrecord
segment-11076364019363412893_1711_000_1731_000_with_camera_labels.tfrecord
segment-11113047206980595400_2560_000_2580_000_with_camera_labels.tfrecord
segment-11119453952284076633_1369_940_1389_940_with_camera_labels.tfrecord
segment-11126313430116606120_1439_990_1459_990_with_camera_labels.tfrecord
segment-11139647661584646830_5470_000_5490_000_with_camera_labels.tfrecord
segment-11183906854663518829_2294_000_2314_000_with_camera_labels.tfrecord
segment-11199484219241918646_2810_030_2830_030_with_camera_labels.tfrecord
segment-11219370372259322863_5320_000_5340_000_with_camera_labels.tfrecord
segment-11236550977973464715_3620_000_3640_000_with_camera_labels.tfrecord
segment-11252086830380107152_1540_000_1560_000_with_camera_labels.tfrecord
segment-11318901554551149504_520_000_540_000_with_camera_labels.tfrecord
segment-11343624116265195592_5910_530_5930_530_with_camera_labels.tfrecord
segment-11355519273066561009_5323_000_5343_000_with_camera_labels.tfrecord
segment-11379226583756500423_6230_810_6250_810_with_camera_labels.tfrecord
segment-11388947676680954806_5427_320_5447_320_with_camera_labels.tfrecord
segment-11392401368700458296_1086_429_1106_429_with_camera_labels.tfrecord
segment-11454085070345530663_1905_000_1925_000_with_camera_labels.tfrecord
segment-1146261869236413282_1680_000_1700_000_with_camera_labels.tfrecord
segment-11486225968269855324_92_000_112_000_with_camera_labels.tfrecord
segment-11489533038039664633_4820_000_4840_000_with_camera_labels.tfrecord
segment-11566385337103696871_5740_000_5760_000_with_camera_labels.tfrecord
segment-11588853832866011756_2184_462_2204_462_with_camera_labels.tfrecord
segment-11623618970700582562_2840_367_2860_367_with_camera_labels.tfrecord
segment-11674150664140226235_680_000_700_000_with_camera_labels.tfrecord
segment-11718898130355901268_2300_000_2320_000_with_camera_labels.tfrecord
segment-1172406780360799916_1660_000_1680_000_with_camera_labels.tfrecord
segment-11799592541704458019_9828_750_9848_750_with_camera_labels.tfrecord
segment-11839652018869852123_2565_000_2585_000_with_camera_labels.tfrecord
segment-11846396154240966170_3540_000_3560_000_with_camera_labels.tfrecord
segment-11847506886204460250_1640_000_1660_000_with_camera_labels.tfrecord
segment-1191788760630624072_3880_000_3900_000_with_camera_labels.tfrecord
segment-11918003324473417938_1400_000_1420_000_with_camera_labels.tfrecord
segment-11925224148023145510_1040_000_1060_000_with_camera_labels.tfrecord
segment-11928449532664718059_1200_000_1220_000_with_camera_labels.tfrecord
segment-11940460932056521663_1760_000_1780_000_with_camera_labels.tfrecord
segment-11967272535264406807_580_000_600_000_with_camera_labels.tfrecord
segment-11971497357570544465_1200_000_1220_000_with_camera_labels.tfrecord
segment-12012663867578114640_820_000_840_000_with_camera_labels.tfrecord
segment-12027892938363296829_4086_280_4106_280_with_camera_labels.tfrecord
segment-1208303279778032257_1360_000_1380_000_with_camera_labels.tfrecord
segment-12161824480686739258_1813_380_1833_380_with_camera_labels.tfrecord
segment-12174529769287588121_3848_440_3868_440_with_camera_labels.tfrecord
segment-12179768245749640056_5561_070_5581_070_with_camera_labels.tfrecord
segment-12200383401366682847_2552_140_2572_140_with_camera_labels.tfrecord
segment-12208410199966712301_4480_000_4500_000_with_camera_labels.tfrecord
segment-12212767626682531382_2100_150_2120_150_with_camera_labels.tfrecord
segment-12251442326766052580_1840_000_1860_000_with_camera_labels.tfrecord
segment-12257951615341726923_2196_690_2216_690_with_camera_labels.tfrecord
segment-12273083120751993429_7285_000_7305_000_with_camera_labels.tfrecord
segment-12281202743097872109_3387_370_3407_370_with_camera_labels.tfrecord
segment-12303641360375776820_4378_000_4398_000_with_camera_labels.tfrecord
segment-12304907743194762419_1522_000_1542_000_with_camera_labels.tfrecord
segment-1231623110026745648_480_000_500_000_with_camera_labels.tfrecord
segment-12321865437129862911_3480_000_3500_000_with_camera_labels.tfrecord
segment-12337317986514501583_5346_260_5366_260_with_camera_labels.tfrecord
segment-12339284075576056695_1920_000_1940_000_with_camera_labels.tfrecord
segment-12365808668068790137_2920_000_2940_000_with_camera_labels.tfrecord
segment-12473470522729755785_4000_000_4020_000_with_camera_labels.tfrecord
segment-12505030131868863688_1740_000_1760_000_with_camera_labels.tfrecord
segment-12511696717465549299_4209_630_4229_630_with_camera_labels.tfrecord
segment-12551320916264703416_1420_000_1440_000_with_camera_labels.tfrecord
segment-1255991971750044803_1700_000_1720_000_with_camera_labels.tfrecord
segment-12566399510596872945_2078_320_2098_320_with_camera_labels.tfrecord
segment-12581809607914381746_1219_547_1239_547_with_camera_labels.tfrecord
segment-1265122081809781363_2879_530_2899_530_with_camera_labels.tfrecord
segment-12681651284932598380_3585_280_3605_280_with_camera_labels.tfrecord
segment-12844373518178303651_2140_000_2160_000_with_camera_labels.tfrecord
segment-12848519977617081063_2488_000_2508_000_with_camera_labels.tfrecord
segment-12856053589272984699_1020_000_1040_000_with_camera_labels.tfrecord
segment-12858738411692807959_2865_000_2885_000_with_camera_labels.tfrecord
segment-12879640240483815315_5852_605_5872_605_with_camera_labels.tfrecord
segment-12894036666871194216_787_000_807_000_with_camera_labels.tfrecord
segment-12896629105712361308_4520_000_4540_000_with_camera_labels.tfrecord
segment-12900898236728415654_1906_686_1926_686_with_camera_labels.tfrecord
segment-12956664801249730713_2840_000_2860_000_with_camera_labels.tfrecord
segment-12974838039736660070_4586_990_4606_990_with_camera_labels.tfrecord
segment-12979718722917614085_1039_490_1059_490_with_camera_labels.tfrecord
segment-12988666890418932775_5516_730_5536_730_with_camera_labels.tfrecord
segment-13005562150845909564_3141_360_3161_360_with_camera_labels.tfrecord
segment-13033853066564892960_1040_000_1060_000_with_camera_labels.tfrecord
segment-1305342127382455702_3720_000_3740_000_with_camera_labels.tfrecord
segment-1306458236359471795_2524_330_2544_330_with_camera_labels.tfrecord
segment-13078892192456386060_2960_000_2980_000_with_camera_labels.tfrecord
segment-13085453465864374565_2040_000_2060_000_with_camera_labels.tfrecord
segment-13142190313715360621_3888_090_3908_090_with_camera_labels.tfrecord
segment-13145971249179441231_1640_000_1660_000_with_camera_labels.tfrecord
segment-13177337129001451839_9160_000_9180_000_with_camera_labels.tfrecord
segment-13181198025433053194_2620_770_2640_770_with_camera_labels.tfrecord
segment-13182548552824592684_4160_250_4180_250_with_camera_labels.tfrecord
segment-13186511704021307558_2000_000_2020_000_with_camera_labels.tfrecord
segment-13196796799137805454_3036_940_3056_940_with_camera_labels.tfrecord
segment-13207915841618107559_2980_000_3000_000_with_camera_labels.tfrecord
segment-13238419657658219864_4630_850_4650_850_with_camera_labels.tfrecord
segment-13254498462985394788_980_000_1000_000_with_camera_labels.tfrecord
segment-13258835835415292197_965_000_985_000_with_camera_labels.tfrecord
segment-13271285919570645382_5320_000_5340_000_with_camera_labels.tfrecord
segment-13310437789759009684_2645_000_2665_000_with_camera_labels.tfrecord
segment-13355317306876751663_2200_000_2220_000_with_camera_labels.tfrecord
segment-13363977648531075793_343_000_363_000_with_camera_labels.tfrecord
segment-13390791323468600062_6718_570_6738_570_with_camera_labels.tfrecord
segment-13402473631986525162_5700_000_5720_000_with_camera_labels.tfrecord
segment-13476374534576730229_240_000_260_000_with_camera_labels.tfrecord
segment-13506499849906169066_120_000_140_000_with_camera_labels.tfrecord
segment-13517115297021862252_2680_000_2700_000_with_camera_labels.tfrecord
segment-13519445614718437933_4060_000_4080_000_with_camera_labels.tfrecord
segment-1352150727715827110_3710_250_3730_250_with_camera_labels.tfrecord
segment-1357883579772440606_2365_000_2385_000_with_camera_labels.tfrecord
segment-13585809231635721258_1910_770_1930_770_with_camera_labels.tfrecord
segment-13619063687271391084_1519_680_1539_680_with_camera_labels.tfrecord
segment-13622747960068272448_1678_930_1698_930_with_camera_labels.tfrecord
segment-13629997314951696814_1207_000_1227_000_with_camera_labels.tfrecord
segment-13667377240304615855_500_000_520_000_with_camera_labels.tfrecord
segment-13679757109245957439_4167_170_4187_170_with_camera_labels.tfrecord
segment-13731697468004921673_4920_000_4940_000_with_camera_labels.tfrecord
segment-13807633218762107566_6625_000_6645_000_with_camera_labels.tfrecord
segment-13823509240483976870_1514_190_1534_190_with_camera_labels.tfrecord
segment-1382515516588059826_780_000_800_000_with_camera_labels.tfrecord
segment-13830510593707564159_5575_000_5595_000_with_camera_labels.tfrecord
segment-13840133134545942567_1060_000_1080_000_with_camera_labels.tfrecord
segment-13862220583747475906_1260_000_1280_000_with_camera_labels.tfrecord
segment-13909033332341079321_4007_930_4027_930_with_camera_labels.tfrecord
segment-13940755514149579648_821_157_841_157_with_camera_labels.tfrecord
segment-13944915979337652825_4260_668_4280_668_with_camera_labels.tfrecord
segment-13965460994524880649_2842_050_2862_050_with_camera_labels.tfrecord
segment-13984577671034960830_4545_000_4565_000_with_camera_labels.tfrecord
segment-14004546003548947884_2331_861_2351_861_with_camera_labels.tfrecord
segment-14018515129165961775_483_260_503_260_with_camera_labels.tfrecord
segment-14073491244121877213_4066_056_4086_056_with_camera_labels.tfrecord
segment-14073578965827700743_1564_000_1584_000_with_camera_labels.tfrecord
segment-14076089808269682731_54_730_74_730_with_camera_labels.tfrecord
segment-14098575914252965554_511_000_531_000_with_camera_labels.tfrecord
segment-14098605172844003779_5084_630_5104_630_with_camera_labels.tfrecord
segment-14106113060128637865_1200_000_1220_000_with_camera_labels.tfrecord
segment-141184560845819621_10582_560_10602_560_with_camera_labels.tfrecord
segment-14133920963894906769_1480_000_1500_000_with_camera_labels.tfrecord
segment-14143054494855609923_4529_100_4549_100_with_camera_labels.tfrecord
segment-1416654423768444853_2660_000_2680_000_with_camera_labels.tfrecord
segment-14183710428479823719_3140_000_3160_000_with_camera_labels.tfrecord
segment-14193044537086402364_534_000_554_000_with_camera_labels.tfrecord
segment-1422926405879888210_51_310_71_310_with_camera_labels.tfrecord
segment-14233522945839943589_100_000_120_000_with_camera_labels.tfrecord
segment-14250544550818363063_880_000_900_000_with_camera_labels.tfrecord
segment-14276116893664145886_1785_080_1805_080_with_camera_labels.tfrecord
segment-1432918953215186312_5101_320_5121_320_with_camera_labels.tfrecord
segment-14348136031422182645_3360_000_3380_000_with_camera_labels.tfrecord
segment-14358192009676582448_3396_400_3416_400_with_camera_labels.tfrecord
segment-14369250836076988112_7249_040_7269_040_with_camera_labels.tfrecord
segment-14388269713149187289_1994_280_2014_280_with_camera_labels.tfrecord
segment-14424804287031718399_1281_030_1301_030_with_camera_labels.tfrecord
segment-1442753028323350651_4065_000_4085_000_with_camera_labels.tfrecord
segment-14430914081327266277_6480_000_6500_000_with_camera_labels.tfrecord
segment-14466332043440571514_6530_560_6550_560_with_camera_labels.tfrecord
segment-14479353969865741728_2340_000_2360_000_with_camera_labels.tfrecord
segment-14503113925613619599_975_506_995_506_with_camera_labels.tfrecord
segment-14561791273891593514_2558_030_2578_030_with_camera_labels.tfrecord
segment-14619874262915043759_2801_090_2821_090_with_camera_labels.tfrecord
segment-14705303724557273004_3105_000_3125_000_with_camera_labels.tfrecord
segment-14734824171146590110_880_000_900_000_with_camera_labels.tfrecord
segment-1473681173028010305_1780_000_1800_000_with_camera_labels.tfrecord
segment-14742731916935095621_1325_000_1345_000_with_camera_labels.tfrecord
segment-14752341928540512649_4960_000_4980_000_with_camera_labels.tfrecord
segment-14753089714893635383_873_600_893_600_with_camera_labels.tfrecord
segment-14763701469114129880_2260_000_2280_000_with_camera_labels.tfrecord
segment-14766384747691229841_6315_730_6335_730_with_camera_labels.tfrecord
segment-14777753086917826209_4147_000_4167_000_with_camera_labels.tfrecord
segment-14791260641858988448_1018_000_1038_000_with_camera_labels.tfrecord
segment-14810689888487451189_720_000_740_000_with_camera_labels.tfrecord
segment-14818835630668820137_1780_000_1800_000_with_camera_labels.tfrecord
segment-14824622621331930560_2395_420_2415_420_with_camera_labels.tfrecord
segment-14830022845193837364_3488_060_3508_060_with_camera_labels.tfrecord
segment-14869732972903148657_2420_000_2440_000_with_camera_labels.tfrecord
segment-14940138913070850675_5755_330_5775_330_with_camera_labels.tfrecord
segment-14964131310266936779_3292_850_3312_850_with_camera_labels.tfrecord
segment-14964691552976940738_2219_229_2239_229_with_camera_labels.tfrecord
segment-15036582848618865396_3752_830_3772_830_with_camera_labels.tfrecord
segment-15053781258223091665_3192_117_3212_117_with_camera_labels.tfrecord
segment-15062351272945542584_5921_360_5941_360_with_camera_labels.tfrecord
segment-15090871771939393635_1266_320_1286_320_with_camera_labels.tfrecord
segment-15125792363972595336_4960_000_4980_000_with_camera_labels.tfrecord
segment-15166409572599113654_808_000_828_000_with_camera_labels.tfrecord
segment-15202102284304593700_1900_000_1920_000_with_camera_labels.tfrecord
segment-15221704733958986648_1400_000_1420_000_with_camera_labels.tfrecord
segment-15241656472211725662_2500_000_2520_000_with_camera_labels.tfrecord
segment-15265053588821562107_60_000_80_000_with_camera_labels.tfrecord
segment-15266427834976906738_1620_000_1640_000_with_camera_labels.tfrecord
segment-15270638100874320175_2720_000_2740_000_with_camera_labels.tfrecord
segment-15308653868652290306_460_000_480_000_with_camera_labels.tfrecord
segment-15331851695963211598_1620_000_1640_000_with_camera_labels.tfrecord
segment-15342828002152531464_1543_000_1563_000_with_camera_labels.tfrecord
segment-15349503153813328111_2160_000_2180_000_with_camera_labels.tfrecord
segment-15365821471737026848_1160_000_1180_000_with_camera_labels.tfrecord
segment-15367782110311024266_2103_310_2123_310_with_camera_labels.tfrecord
segment-15374821596407640257_3388_480_3408_480_with_camera_labels.tfrecord
segment-15379350264706417068_3120_000_3140_000_with_camera_labels.tfrecord
segment-15445436653637630344_3957_561_3977_561_with_camera_labels.tfrecord
segment-15448466074775525292_2920_000_2940_000_with_camera_labels.tfrecord
segment-15458436361042752328_3549_030_3569_030_with_camera_labels.tfrecord
segment-15482064737890453610_5180_000_5200_000_with_camera_labels.tfrecord
segment-15533468984793020049_800_000_820_000_with_camera_labels.tfrecord
segment-15535062863944567958_1100_000_1120_000_with_camera_labels.tfrecord
segment-15539619898625779290_760_000_780_000_with_camera_labels.tfrecord
segment-15550613280008674010_1780_000_1800_000_with_camera_labels.tfrecord
segment-15578655130939579324_620_000_640_000_with_camera_labels.tfrecord
segment-15628918650068847391_8077_670_8097_670_with_camera_labels.tfrecord
segment-15644354861949427452_3645_350_3665_350_with_camera_labels.tfrecord
segment-15646511153936256674_1620_000_1640_000_with_camera_labels.tfrecord
segment-15696964848687303249_4615_200_4635_200_with_camera_labels.tfrecord
segment-15717839202171538526_1124_920_1144_920_with_camera_labels.tfrecord
segment-15787777881771177481_8820_000_8840_000_with_camera_labels.tfrecord
segment-15795616688853411272_1245_000_1265_000_with_camera_labels.tfrecord
segment-15803855782190483017_1060_000_1080_000_with_camera_labels.tfrecord
segment-15832924468527961_1564_160_1584_160_with_camera_labels.tfrecord
segment-15834329472172048691_2956_760_2976_760_with_camera_labels.tfrecord
segment-15844593126368860820_3260_000_3280_000_with_camera_labels.tfrecord
segment-15857303257471811288_1840_000_1860_000_with_camera_labels.tfrecord
segment-15868625208244306149_4340_000_4360_000_with_camera_labels.tfrecord
segment-15882343134097151256_4820_000_4840_000_with_camera_labels.tfrecord
segment-15903184480576180688_3160_000_3180_000_with_camera_labels.tfrecord
segment-15903544160717261009_3961_870_3981_870_with_camera_labels.tfrecord
segment-15942468615931009553_1243_190_1263_190_with_camera_labels.tfrecord
segment-15943938987133888575_2767_300_2787_300_with_camera_labels.tfrecord
segment-16034875274658204340_240_000_260_000_with_camera_labels.tfrecord
segment-16042842363202855955_265_000_285_000_with_camera_labels.tfrecord
segment-16042886962142359737_1060_000_1080_000_with_camera_labels.tfrecord
segment-1605912288178321742_451_000_471_000_with_camera_labels.tfrecord
segment-16080705915014211452_620_000_640_000_with_camera_labels.tfrecord
segment-16087604685956889409_40_000_60_000_with_camera_labels.tfrecord
segment-16093022852977039323_2981_100_3001_100_with_camera_labels.tfrecord
segment-16102220208346880_1420_000_1440_000_with_camera_labels.tfrecord
segment-16105359875195888139_4420_000_4440_000_with_camera_labels.tfrecord
segment-16121633832852116614_240_000_260_000_with_camera_labels.tfrecord
segment-16153607877566142572_2262_000_2282_000_with_camera_labels.tfrecord
segment-16191439239940794174_2245_000_2265_000_with_camera_labels.tfrecord
segment-16202688197024602345_3818_820_3838_820_with_camera_labels.tfrecord
segment-16208935658045135756_4412_730_4432_730_with_camera_labels.tfrecord
segment-16224018017168210482_6353_500_6373_500_with_camera_labels.tfrecord
segment-16238753252899859750_1340_000_1360_000_with_camera_labels.tfrecord
segment-16262849101474060261_3459_585_3479_585_with_camera_labels.tfrecord
segment-16331619444570993520_1020_000_1040_000_with_camera_labels.tfrecord
segment-16336545122307923741_486_637_506_637_with_camera_labels.tfrecord
segment-16341778301681295961_178_800_198_800_with_camera_labels.tfrecord
segment-16345319168590318167_1420_000_1440_000_with_camera_labels.tfrecord
segment-16372013171456210875_5631_040_5651_040_with_camera_labels.tfrecord
segment-16388696051060074747_140_000_160_000_with_camera_labels.tfrecord
segment-16403578704435467513_5133_870_5153_870_with_camera_labels.tfrecord
segment-16435050660165962165_3635_310_3655_310_with_camera_labels.tfrecord
segment-16470190748368943792_4369_490_4389_490_with_camera_labels.tfrecord
segment-16473613811052081539_1060_000_1080_000_with_camera_labels.tfrecord
segment-16485056021060230344_1576_741_1596_741_with_camera_labels.tfrecord
segment-16504318334867223853_480_000_500_000_with_camera_labels.tfrecord
segment-16511546224219511043_6226_000_6246_000_with_camera_labels.tfrecord
segment-16534202648288984983_900_000_920_000_with_camera_labels.tfrecord
segment-16552287303455735122_7587_380_7607_380_with_camera_labels.tfrecord
segment-16561295363965082313_3720_000_3740_000_with_camera_labels.tfrecord
segment-16578409328451172992_3780_000_3800_000_with_camera_labels.tfrecord
segment-16600468011801266684_1500_000_1520_000_with_camera_labels.tfrecord
segment-16608525782988721413_100_000_120_000_with_camera_labels.tfrecord
segment-16625429321676352815_1543_860_1563_860_with_camera_labels.tfrecord
segment-16646360389507147817_3320_000_3340_000_with_camera_labels.tfrecord
segment-16646502593577530501_4878_080_4898_080_with_camera_labels.tfrecord
segment-16651261238721788858_2365_000_2385_000_with_camera_labels.tfrecord
segment-16652690380969095006_2580_000_2600_000_with_camera_labels.tfrecord
segment-16676202516797441395_2460_000_2480_000_with_camera_labels.tfrecord
segment-16676683078119047936_300_000_320_000_with_camera_labels.tfrecord
segment-16735938448970076374_1126_430_1146_430_with_camera_labels.tfrecord
segment-16793466851577046940_2800_000_2820_000_with_camera_labels.tfrecord
segment-16797668128356194527_2430_390_2450_390_with_camera_labels.tfrecord
segment-16801666784196221098_2480_000_2500_000_with_camera_labels.tfrecord
segment-16873108320324977627_780_000_800_000_with_camera_labels.tfrecord
segment-16911037681440249335_700_000_720_000_with_camera_labels.tfrecord
segment-169115044301335945_480_000_500_000_with_camera_labels.tfrecord
segment-16951470340360921766_2840_000_2860_000_with_camera_labels.tfrecord
segment-16977844994272847523_2140_000_2160_000_with_camera_labels.tfrecord
segment-17066133495361694802_1220_000_1240_000_with_camera_labels.tfrecord
segment-17144150788361379549_2720_000_2740_000_with_camera_labels.tfrecord
segment-17159836069183024120_640_000_660_000_with_camera_labels.tfrecord
segment-17160696560226550358_6229_820_6249_820_with_camera_labels.tfrecord
segment-17216329305659006368_4800_000_4820_000_with_camera_labels.tfrecord
segment-17270469718624587995_5202_030_5222_030_with_camera_labels.tfrecord
segment-17295069199227237940_3160_000_3180_000_with_camera_labels.tfrecord
segment-1730266523558914470_305_260_325_260_with_camera_labels.tfrecord
segment-17330200445788773877_2700_000_2720_000_with_camera_labels.tfrecord
segment-17342274091983078806_80_000_100_000_with_camera_labels.tfrecord
segment-17356174167372765800_1720_000_1740_000_with_camera_labels.tfrecord
segment-17364342162691622478_780_000_800_000_with_camera_labels.tfrecord
segment-1737018592744049492_1960_000_1980_000_with_camera_labels.tfrecord
segment-17386176497741125938_2180_000_2200_000_with_camera_labels.tfrecord
segment-17386718718413812426_1763_140_1783_140_with_camera_labels.tfrecord
segment-17388121177218499911_2520_000_2540_000_with_camera_labels.tfrecord
segment-17407069523496279950_4354_900_4374_900_with_camera_labels.tfrecord
segment-17437352085580560526_2120_000_2140_000_with_camera_labels.tfrecord
segment-17547795428359040137_5056_070_5076_070_with_camera_labels.tfrecord
segment-17552108427312284959_3200_000_3220_000_with_camera_labels.tfrecord
segment-17564868480517233150_3643_000_3663_000_with_camera_labels.tfrecord
segment-175830748773502782_1580_000_1600_000_with_camera_labels.tfrecord
segment-1758724094753801109_1251_037_1271_037_with_camera_labels.tfrecord
segment-17597174721305220109_178_000_198_000_with_camera_labels.tfrecord
segment-17601040886987343289_472_000_492_000_with_camera_labels.tfrecord
segment-17642771458376274038_2080_000_2100_000_with_camera_labels.tfrecord
segment-17647858901077503501_1500_000_1520_000_with_camera_labels.tfrecord
segment-17674974223808194792_8787_692_8807_692_with_camera_labels.tfrecord
segment-17677899007099302421_5911_000_5931_000_with_camera_labels.tfrecord
segment-1773696223367475365_1060_000_1080_000_with_camera_labels.tfrecord
segment-17750787536486427868_560_000_580_000_with_camera_labels.tfrecord
segment-17752423643206316420_920_850_940_850_with_camera_labels.tfrecord
segment-17759280403078053118_6060_580_6080_580_with_camera_labels.tfrecord
segment-17761959194352517553_5448_420_5468_420_with_camera_labels.tfrecord
segment-17778522338768131809_5920_000_5940_000_with_camera_labels.tfrecord
segment-17782258508241656695_1354_000_1374_000_with_camera_labels.tfrecord
segment-17790754307864212354_1520_000_1540_000_with_camera_labels.tfrecord
segment-17792522237954398691_2698_000_2718_000_with_camera_labels.tfrecord
segment-17818548625922145895_1372_430_1392_430_with_camera_labels.tfrecord
segment-17850487901509155700_9065_000_9085_000_with_camera_labels.tfrecord
segment-17874036087982478403_733_674_753_674_with_camera_labels.tfrecord
segment-17885096890374683162_755_580_775_580_with_camera_labels.tfrecord
segment-17902907331132202998_1564_000_1584_000_with_camera_labels.tfrecord
segment-17912777897400903477_2047_500_2067_500_with_camera_labels.tfrecord
segment-17941839888833418904_1240_000_1260_000_with_camera_labels.tfrecord
segment-17958696356648515477_1660_000_1680_000_with_camera_labels.tfrecord
segment-17959337482465423746_2840_000_2860_000_with_camera_labels.tfrecord
segment-17987556068410436875_520_610_540_610_with_camera_labels.tfrecord
segment-17993467596234560701_4940_000_4960_000_with_camera_labels.tfrecord
segment-1800857743596232165_1500_000_1520_000_with_camera_labels.tfrecord
segment-18025338595059503802_571_216_591_216_with_camera_labels.tfrecord
segment-18068531698704694137_920_000_940_000_with_camera_labels.tfrecord
segment-18096167044602516316_2360_000_2380_000_with_camera_labels.tfrecord
segment-18111897798871103675_320_000_340_000_with_camera_labels.tfrecord
segment-18136695827203527782_2860_000_2880_000_with_camera_labels.tfrecord
segment-18141076662151909970_2755_710_2775_710_with_camera_labels.tfrecord
segment-18233614482685846350_7060_000_7080_000_with_camera_labels.tfrecord
segment-18244334282518155052_2360_000_2380_000_with_camera_labels.tfrecord
segment-18286677872269962604_3520_000_3540_000_with_camera_labels.tfrecord
segment-18295766828140813622_6775_000_6795_000_with_camera_labels.tfrecord
segment-18311996733670569136_5880_000_5900_000_with_camera_labels.tfrecord
segment-18331713844982117868_2920_900_2940_900_with_camera_labels.tfrecord
segment-18380281348728758158_4820_000_4840_000_with_camera_labels.tfrecord
segment-183829460855609442_430_000_450_000_with_camera_labels.tfrecord
segment-18397511418934954408_620_000_640_000_with_camera_labels.tfrecord
segment-18403940760739364047_920_000_940_000_with_camera_labels.tfrecord
segment-18418533015310829002_480_000_500_000_with_camera_labels.tfrecord
segment-18441113814326864765_725_000_745_000_with_camera_labels.tfrecord
segment-1857377326903987736_80_000_100_000_with_camera_labels.tfrecord
segment-1863454917318776530_1040_000_1060_000_with_camera_labels.tfrecord
segment-1887497421568128425_94_000_114_000_with_camera_labels.tfrecord
segment-1891390218766838725_4980_000_5000_000_with_camera_labels.tfrecord
segment-1907783283319966632_3221_000_3241_000_with_camera_labels.tfrecord
segment-1918764220984209654_5680_000_5700_000_with_camera_labels.tfrecord
segment-1921439581405198744_1354_000_1374_000_with_camera_labels.tfrecord
segment-1926967104529174124_5214_780_5234_780_with_camera_labels.tfrecord
segment-1939881723297238689_6848_040_6868_040_with_camera_labels.tfrecord
segment-1940032764689855266_3690_210_3710_210_with_camera_labels.tfrecord
segment-1972128316147758939_2500_000_2520_000_with_camera_labels.tfrecord
segment-1988987616835805847_3500_000_3520_000_with_camera_labels.tfrecord
segment-1994338527906508494_3438_100_3458_100_with_camera_labels.tfrecord
segment-1999080374382764042_7094_100_7114_100_with_camera_labels.tfrecord
segment-200287570390499785_2102_000_2122_000_with_camera_labels.tfrecord
segment-2025831330434849594_1520_000_1540_000_with_camera_labels.tfrecord
segment-2036908808378190283_4340_000_4360_000_with_camera_labels.tfrecord
segment-204421859195625800_1080_000_1100_000_with_camera_labels.tfrecord
segment-2064489349728221803_3060_000_3080_000_with_camera_labels.tfrecord
segment-2075681641472425669_2635_000_2655_000_with_camera_labels.tfrecord
segment-207754730878135627_1140_000_1160_000_with_camera_labels.tfrecord
segment-2088865281951278665_4460_000_4480_000_with_camera_labels.tfrecord
segment-2101027554826767753_2504_580_2524_580_with_camera_labels.tfrecord
segment-2107164705125601090_3920_000_3940_000_with_camera_labels.tfrecord
segment-2114574223307001959_1163_280_1183_280_with_camera_labels.tfrecord
segment-2151482270865536784_900_000_920_000_with_camera_labels.tfrecord
segment-2206505463279484253_476_189_496_189_with_camera_labels.tfrecord
segment-2209007584159204953_2200_000_2220_000_with_camera_labels.tfrecord
segment-2217043033232259972_2720_000_2740_000_with_camera_labels.tfrecord
segment-2224716024428969146_1420_000_1440_000_with_camera_labels.tfrecord
segment-2259324582958830057_3767_030_3787_030_with_camera_labels.tfrecord
segment-2265177645248606981_2340_000_2360_000_with_camera_labels.tfrecord
segment-2273990870973289942_4009_680_4029_680_with_camera_labels.tfrecord
segment-2323851946122476774_7240_000_7260_000_with_camera_labels.tfrecord
segment-2330686858362435307_603_210_623_210_with_camera_labels.tfrecord
segment-2336233899565126347_1180_000_1200_000_with_camera_labels.tfrecord
segment-2342300897175196823_1179_360_1199_360_with_camera_labels.tfrecord
segment-2400780041057579262_660_000_680_000_with_camera_labels.tfrecord
segment-2415873247906962761_5460_000_5480_000_with_camera_labels.tfrecord
segment-2475623575993725245_400_000_420_000_with_camera_labels.tfrecord
segment-2508530288521370100_3385_660_3405_660_with_camera_labels.tfrecord
segment-2547899409721197155_1380_000_1400_000_with_camera_labels.tfrecord
segment-2555987917096562599_1620_000_1640_000_with_camera_labels.tfrecord
segment-2570264768774616538_860_000_880_000_with_camera_labels.tfrecord
segment-2577669988012459365_1640_000_1660_000_with_camera_labels.tfrecord
segment-2581599794006798586_2440_000_2460_000_with_camera_labels.tfrecord
segment-2590213596097851051_460_000_480_000_with_camera_labels.tfrecord
segment-2598465433001774398_740_670_760_670_with_camera_labels.tfrecord
segment-2607999228439188545_2960_000_2980_000_with_camera_labels.tfrecord
segment-2618605158242502527_1860_000_1880_000_with_camera_labels.tfrecord
segment-2656110181316327570_940_000_960_000_with_camera_labels.tfrecord
segment-2660301763960988190_3742_580_3762_580_with_camera_labels.tfrecord
segment-2670674176367830809_180_000_200_000_with_camera_labels.tfrecord
segment-2681180680221317256_1144_000_1164_000_with_camera_labels.tfrecord
segment-268278198029493143_1400_000_1420_000_with_camera_labels.tfrecord
segment-2684088316387726629_180_000_200_000_with_camera_labels.tfrecord
segment-2692887320656885771_2480_000_2500_000_with_camera_labels.tfrecord
segment-2698953791490960477_2660_000_2680_000_with_camera_labels.tfrecord
segment-2711351338963414257_1360_000_1380_000_with_camera_labels.tfrecord
segment-2739239662326039445_5890_320_5910_320_with_camera_labels.tfrecord
segment-2752216004511723012_260_000_280_000_with_camera_labels.tfrecord
segment-2791302832590946720_1900_000_1920_000_with_camera_labels.tfrecord
segment-2863984611797967753_3200_000_3220_000_with_camera_labels.tfrecord
segment-2895681525868621979_480_000_500_000_with_camera_labels.tfrecord
segment-2899357195020129288_3723_163_3743_163_with_camera_labels.tfrecord
segment-2899997824484054994_320_000_340_000_with_camera_labels.tfrecord
segment-2919021496271356282_2300_000_2320_000_with_camera_labels.tfrecord
segment-2922309829144504838_1840_000_1860_000_with_camera_labels.tfrecord
segment-2935377810101940676_300_000_320_000_with_camera_labels.tfrecord
segment-2961247865039433386_920_000_940_000_with_camera_labels.tfrecord
segment-2974991090366925955_4924_000_4944_000_with_camera_labels.tfrecord
segment-2975249314261309142_6540_000_6560_000_with_camera_labels.tfrecord
segment-3002379261592154728_2256_691_2276_691_with_camera_labels.tfrecord
segment-3031519073799366723_1140_000_1160_000_with_camera_labels.tfrecord
segment-3060057659029579482_420_000_440_000_with_camera_labels.tfrecord
segment-3068522656378006650_540_000_560_000_with_camera_labels.tfrecord
segment-3078075798413050298_890_370_910_370_with_camera_labels.tfrecord
segment-3112630089558008159_7280_000_7300_000_with_camera_labels.tfrecord
segment-3132521568089292927_2220_000_2240_000_with_camera_labels.tfrecord
segment-3132641021038352938_1937_160_1957_160_with_camera_labels.tfrecord
segment-3154510051521049916_7000_000_7020_000_with_camera_labels.tfrecord
segment-3156155872654629090_2474_780_2494_780_with_camera_labels.tfrecord
segment-3194871563717679715_4980_000_5000_000_with_camera_labels.tfrecord
segment-3195159706851203049_2763_790_2783_790_with_camera_labels.tfrecord
segment-3220249619779692045_505_000_525_000_with_camera_labels.tfrecord
segment-3224923476345749285_4480_000_4500_000_with_camera_labels.tfrecord
segment-3247914894323111613_1820_000_1840_000_with_camera_labels.tfrecord
segment-3270384983482134275_3220_000_3240_000_with_camera_labels.tfrecord
segment-3276301746183196185_436_450_456_450_with_camera_labels.tfrecord
segment-33101359476901423_6720_910_6740_910_with_camera_labels.tfrecord
segment-3338044015505973232_1804_490_1824_490_with_camera_labels.tfrecord
segment-3363533094480067586_1580_000_1600_000_with_camera_labels.tfrecord
segment-3364861183015885008_1720_000_1740_000_with_camera_labels.tfrecord
segment-3375636961848927657_1942_000_1962_000_with_camera_labels.tfrecord
segment-3385534893506316900_4252_000_4272_000_with_camera_labels.tfrecord
segment-3390120876390766963_2300_000_2320_000_with_camera_labels.tfrecord
segment-3417928259332148981_7018_550_7038_550_with_camera_labels.tfrecord
segment-3418007171190630157_3585_530_3605_530_with_camera_labels.tfrecord
segment-3425716115468765803_977_756_997_756_with_camera_labels.tfrecord
segment-3437741670889149170_1411_550_1431_550_with_camera_labels.tfrecord
segment-3441838785578020259_1300_000_1320_000_with_camera_labels.tfrecord
segment-3451017128488170637_5280_000_5300_000_with_camera_labels.tfrecord
segment-3461228720457810721_4511_120_4531_120_with_camera_labels.tfrecord
segment-3461811179177118163_1161_000_1181_000_with_camera_labels.tfrecord
segment-3490810581309970603_11125_000_11145_000_with_camera_labels.tfrecord
segment-3504776317009340435_6920_000_6940_000_with_camera_labels.tfrecord
segment-3543045673995761051_460_000_480_000_with_camera_labels.tfrecord
segment-3555170065073130842_451_000_471_000_with_camera_labels.tfrecord
segment-3563349510410371738_7465_000_7485_000_with_camera_labels.tfrecord
segment-3584210979358667442_2880_000_2900_000_with_camera_labels.tfrecord
segment-3591015878717398163_1381_280_1401_280_with_camera_labels.tfrecord
segment-3617043125954612277_240_000_260_000_with_camera_labels.tfrecord
segment-3635081602482786801_900_000_920_000_with_camera_labels.tfrecord
segment-3644145307034257093_3000_400_3020_400_with_camera_labels.tfrecord
segment-3657581213864582252_340_000_360_000_with_camera_labels.tfrecord
segment-3665329186611360820_2329_010_2349_010_with_camera_labels.tfrecord
segment-3698685523057788592_4303_630_4323_630_with_camera_labels.tfrecord
segment-3711598698808133144_2060_000_2080_000_with_camera_labels.tfrecord
segment-384975055665199088_4480_000_4500_000_with_camera_labels.tfrecord
segment-3872781118550194423_3654_670_3674_670_with_camera_labels.tfrecord
segment-3894883757914505116_1840_000_1860_000_with_camera_labels.tfrecord
segment-3908622028474148527_3480_000_3500_000_with_camera_labels.tfrecord
segment-3911646355261329044_580_000_600_000_with_camera_labels.tfrecord
segment-3919438171935923501_280_000_300_000_with_camera_labels.tfrecord
segment-3927294516406132977_792_740_812_740_with_camera_labels.tfrecord
segment-3928923269768424494_3060_000_3080_000_with_camera_labels.tfrecord
segment-3966447614090524826_320_000_340_000_with_camera_labels.tfrecord
segment-3988957004231180266_5566_500_5586_500_with_camera_labels.tfrecord
segment-4013698638848102906_7757_240_7777_240_with_camera_labels.tfrecord
segment-4017824591066644473_3000_000_3020_000_with_camera_labels.tfrecord
segment-4058410353286511411_3980_000_4000_000_with_camera_labels.tfrecord
segment-4114454788208078028_660_000_680_000_with_camera_labels.tfrecord
segment-4114548607314119333_2780_000_2800_000_with_camera_labels.tfrecord
segment-4138614210962611770_2459_360_2479_360_with_camera_labels.tfrecord
segment-4164064449185492261_400_000_420_000_with_camera_labels.tfrecord
segment-4167304237516228486_5720_000_5740_000_with_camera_labels.tfrecord
segment-4191035366928259953_1732_708_1752_708_with_camera_labels.tfrecord
segment-4266984864799709257_720_000_740_000_with_camera_labels.tfrecord
segment-4277109506993614243_1648_000_1668_000_with_camera_labels.tfrecord
segment-4292360793125812833_3080_000_3100_000_with_camera_labels.tfrecord
segment-4295449061847708198_3769_000_3789_000_with_camera_labels.tfrecord
segment-4305539677513798673_2200_000_2220_000_with_camera_labels.tfrecord
segment-4323857429732097807_1005_000_1025_000_with_camera_labels.tfrecord
segment-4324227028219935045_1520_000_1540_000_with_camera_labels.tfrecord
segment-4337887720320812223_1857_930_1877_930_with_camera_labels.tfrecord
segment-4348478035380346090_1000_000_1020_000_with_camera_labels.tfrecord
segment-4380865029019172232_480_000_500_000_with_camera_labels.tfrecord
segment-4384676699661561426_1662_670_1682_670_with_camera_labels.tfrecord
segment-4392459808686681511_5006_200_5026_200_with_camera_labels.tfrecord
segment-4414235478445376689_2020_000_2040_000_with_camera_labels.tfrecord
segment-4427374597960783085_4168_000_4188_000_with_camera_labels.tfrecord
segment-4447423683538547117_536_022_556_022_with_camera_labels.tfrecord
segment-4457475194088194008_3100_000_3120_000_with_camera_labels.tfrecord
segment-4458730539804900192_535_000_555_000_with_camera_labels.tfrecord
segment-4468278022208380281_455_820_475_820_with_camera_labels.tfrecord
segment-4487677815262010875_4940_000_4960_000_with_camera_labels.tfrecord
segment-4537254579383578009_3820_000_3840_000_with_camera_labels.tfrecord
segment-4546515828974914709_922_040_942_040_with_camera_labels.tfrecord
segment-454855130179746819_4580_000_4600_000_with_camera_labels.tfrecord
segment-4575961016807404107_880_000_900_000_with_camera_labels.tfrecord
segment-4604173119409817302_2820_000_2840_000_with_camera_labels.tfrecord
segment-4641822195449131669_380_000_400_000_with_camera_labels.tfrecord
segment-4655005625668154134_560_000_580_000_with_camera_labels.tfrecord
segment-4672649953433758614_2700_000_2720_000_with_camera_labels.tfrecord
segment-4702302448560822815_927_380_947_380_with_camera_labels.tfrecord
segment-4723255145958809564_741_350_761_350_with_camera_labels.tfrecord
segment-4733704239941053266_960_000_980_000_with_camera_labels.tfrecord
segment-473735159277431842_630_095_650_095_with_camera_labels.tfrecord
segment-4747171543583769736_425_544_445_544_with_camera_labels.tfrecord
segment-4781039348168995891_280_000_300_000_with_camera_labels.tfrecord
segment-4784689467343773295_1700_000_1720_000_with_camera_labels.tfrecord
segment-4808842546020773462_2310_000_2330_000_with_camera_labels.tfrecord
segment-4880464427217074989_4680_000_4700_000_with_camera_labels.tfrecord
segment-4898453812993984151_199_000_219_000_with_camera_labels.tfrecord
segment-4916527289027259239_5180_000_5200_000_with_camera_labels.tfrecord
segment-4931036732523207946_10755_600_10775_600_with_camera_labels.tfrecord
segment-4960194482476803293_4575_960_4595_960_with_camera_labels.tfrecord
segment-4967385055468388261_720_000_740_000_with_camera_labels.tfrecord
segment-4971817041565280127_780_500_800_500_with_camera_labels.tfrecord
segment-4986495627634617319_2980_000_3000_000_with_camera_labels.tfrecord
segment-5005815668926224220_2194_330_2214_330_with_camera_labels.tfrecord
segment-5065468048522043429_2080_000_2100_000_with_camera_labels.tfrecord
segment-5072733804607719382_5807_570_5827_570_with_camera_labels.tfrecord
segment-5076950993715916459_3265_000_3285_000_with_camera_labels.tfrecord
segment-5083516879091912247_3600_000_3620_000_with_camera_labels.tfrecord
segment-5100136784230856773_2517_300_2537_300_with_camera_labels.tfrecord
segment-5121298817582693383_4882_000_4902_000_with_camera_labels.tfrecord
segment-5127440443725457056_2921_340_2941_340_with_camera_labels.tfrecord
segment-5129792222840846899_2145_000_2165_000_with_camera_labels.tfrecord
segment-5144634012371033641_920_000_940_000_with_camera_labels.tfrecord
segment-514687114615102902_6240_000_6260_000_with_camera_labels.tfrecord
segment-5189543236187113739_2929_000_2949_000_with_camera_labels.tfrecord
segment-5200186706748209867_80_000_100_000_with_camera_labels.tfrecord
segment-5214491533551928383_1918_780_1938_780_with_camera_labels.tfrecord
segment-5215905243049326497_20_000_40_000_with_camera_labels.tfrecord
segment-5222336716599194110_8940_000_8960_000_with_camera_labels.tfrecord
segment-5268267801500934740_2160_000_2180_000_with_camera_labels.tfrecord
segment-5328596138024684667_2180_000_2200_000_with_camera_labels.tfrecord
segment-5349843997395815699_1040_000_1060_000_with_camera_labels.tfrecord
segment-5423607012724948145_3900_000_3920_000_with_camera_labels.tfrecord
segment-54293441958058219_2335_200_2355_200_with_camera_labels.tfrecord
segment-5446766520699850364_157_000_177_000_with_camera_labels.tfrecord
segment-5451442719480728410_5660_000_5680_000_with_camera_labels.tfrecord
segment-5458962501360340931_3140_000_3160_000_with_camera_labels.tfrecord
segment-5459113827443493510_380_000_400_000_with_camera_labels.tfrecord
segment-5468483805452515080_4540_000_4560_000_with_camera_labels.tfrecord
segment-5495302100265783181_80_000_100_000_with_camera_labels.tfrecord
segment-550171902340535682_2640_000_2660_000_with_camera_labels.tfrecord
segment-5525943706123287091_4100_000_4120_000_with_camera_labels.tfrecord
segment-5526948896847934178_1039_000_1059_000_with_camera_labels.tfrecord
segment-5572351910320677279_3980_000_4000_000_with_camera_labels.tfrecord
segment-5576800480528461086_1000_000_1020_000_with_camera_labels.tfrecord
segment-5592790652933523081_667_770_687_770_with_camera_labels.tfrecord
segment-5602237689147924753_760_000_780_000_with_camera_labels.tfrecord
segment-5614471637960666943_6955_675_6975_675_with_camera_labels.tfrecord
segment-5691636094473163491_6889_470_6909_470_with_camera_labels.tfrecord
segment-5707035891877485758_2573_000_2593_000_with_camera_labels.tfrecord
segment-57132587708734824_1020_000_1040_000_with_camera_labels.tfrecord
segment-5718418936283106890_1200_000_1220_000_with_camera_labels.tfrecord
segment-5731414711882954246_1990_250_2010_250_with_camera_labels.tfrecord
segment-574762194520856849_1660_000_1680_000_with_camera_labels.tfrecord
segment-575209926587730008_3880_000_3900_000_with_camera_labels.tfrecord
segment-580580436928611523_792_500_812_500_with_camera_labels.tfrecord
segment-5835049423600303130_180_000_200_000_with_camera_labels.tfrecord
segment-5846229052615948000_2120_000_2140_000_with_camera_labels.tfrecord
segment-5861181219697109969_1732_000_1752_000_with_camera_labels.tfrecord
segment-5870668058140631588_1180_000_1200_000_with_camera_labels.tfrecord
segment-5871373218498789285_3360_000_3380_000_with_camera_labels.tfrecord
segment-5973788713714489548_2179_770_2199_770_with_camera_labels.tfrecord
segment-6037403592521973757_3260_000_3280_000_with_camera_labels.tfrecord
segment-6038200663843287458_283_000_303_000_with_camera_labels.tfrecord
segment-6104545334635651714_2780_000_2800_000_with_camera_labels.tfrecord
segment-6128311556082453976_2520_000_2540_000_with_camera_labels.tfrecord
segment-6142170920525844857_2080_000_2100_000_with_camera_labels.tfrecord
segment-6148393791213790916_4960_000_4980_000_with_camera_labels.tfrecord
segment-6150191934425217908_2747_800_2767_800_with_camera_labels.tfrecord
segment-616184888931414205_2020_000_2040_000_with_camera_labels.tfrecord
segment-6172160122069514875_6866_560_6886_560_with_camera_labels.tfrecord
segment-6177474146670383260_4200_000_4220_000_with_camera_labels.tfrecord
segment-6193696614129429757_2420_000_2440_000_with_camera_labels.tfrecord
segment-6207195415812436731_805_000_825_000_with_camera_labels.tfrecord
segment-6229371035421550389_2220_000_2240_000_with_camera_labels.tfrecord
segment-6234738900256277070_320_000_340_000_with_camera_labels.tfrecord
segment-6242822583398487496_73_000_93_000_with_camera_labels.tfrecord
segment-6280779486809627179_760_000_780_000_with_camera_labels.tfrecord
segment-6290334089075942139_1340_000_1360_000_with_camera_labels.tfrecord
segment-6303332643743862144_5600_000_5620_000_with_camera_labels.tfrecord
segment-634378055350569306_280_000_300_000_with_camera_labels.tfrecord
segment-6350707596465488265_2393_900_2413_900_with_camera_labels.tfrecord
segment-6378340771722906187_1120_000_1140_000_with_camera_labels.tfrecord
segment-6386303598440879824_1520_000_1540_000_with_camera_labels.tfrecord
segment-6390847454531723238_6000_000_6020_000_with_camera_labels.tfrecord
segment-6410495600874495447_5287_500_5307_500_with_camera_labels.tfrecord
segment-6417523992887712896_1180_000_1200_000_with_camera_labels.tfrecord
segment-6433401807220119698_4560_000_4580_000_with_camera_labels.tfrecord
segment-6456165750159303330_1770_080_1790_080_with_camera_labels.tfrecord
segment-6559997992780479765_1039_000_1059_000_with_camera_labels.tfrecord
segment-6561206763751799279_2348_600_2368_600_with_camera_labels.tfrecord
segment-6606076833441976341_1340_000_1360_000_with_camera_labels.tfrecord
segment-6625150143263637936_780_000_800_000_with_camera_labels.tfrecord
segment-6638427309837298695_220_000_240_000_with_camera_labels.tfrecord
segment-6674547510992884047_1560_000_1580_000_with_camera_labels.tfrecord
segment-6694593639447385226_1040_000_1060_000_with_camera_labels.tfrecord
segment-6722602826685649765_2280_000_2300_000_with_camera_labels.tfrecord
segment-6740694556948402155_3040_000_3060_000_with_camera_labels.tfrecord
segment-6742105013468660925_3645_000_3665_000_with_camera_labels.tfrecord
segment-6763005717101083473_3880_000_3900_000_with_camera_labels.tfrecord
segment-6771783338734577946_6105_840_6125_840_with_camera_labels.tfrecord
segment-6771922013310347577_4249_290_4269_290_with_camera_labels.tfrecord
segment-6791933003490312185_2607_000_2627_000_with_camera_labels.tfrecord
segment-6792191642931213648_1522_000_1542_000_with_camera_labels.tfrecord
segment-6799055159715949496_2503_000_2523_000_with_camera_labels.tfrecord
segment-6813611334239274394_535_000_555_000_with_camera_labels.tfrecord
segment-6814918034011049245_134_170_154_170_with_camera_labels.tfrecord
segment-6904827860701329567_960_000_980_000_with_camera_labels.tfrecord
segment-6935841224766931310_2770_310_2790_310_with_camera_labels.tfrecord
segment-7000927478052605119_1052_330_1072_330_with_camera_labels.tfrecord
segment-7007702792982559244_4400_000_4420_000_with_camera_labels.tfrecord
segment-7019385869759035132_4270_850_4290_850_with_camera_labels.tfrecord
segment-7038362761309539946_4207_130_4227_130_with_camera_labels.tfrecord
segment-7089765864827567005_1020_000_1040_000_with_camera_labels.tfrecord
segment-7101099554331311287_5320_000_5340_000_with_camera_labels.tfrecord
segment-7120839653809570957_1060_000_1080_000_with_camera_labels.tfrecord
segment-7187601925763611197_4384_300_4404_300_with_camera_labels.tfrecord
segment-7189996641300362130_3360_000_3380_000_with_camera_labels.tfrecord
segment-7239123081683545077_4044_370_4064_370_with_camera_labels.tfrecord
segment-7290499689576448085_3960_000_3980_000_with_camera_labels.tfrecord
segment-7313718849795510302_280_000_300_000_with_camera_labels.tfrecord
segment-7324192826315818756_620_000_640_000_with_camera_labels.tfrecord
segment-7331965392247645851_1005_940_1025_940_with_camera_labels.tfrecord
segment-7344536712079322768_1360_000_1380_000_with_camera_labels.tfrecord
segment-7373597180370847864_6020_000_6040_000_with_camera_labels.tfrecord
segment-744006317457557752_2080_000_2100_000_with_camera_labels.tfrecord
segment-7440437175443450101_94_000_114_000_with_camera_labels.tfrecord
segment-7447927974619745860_820_000_840_000_with_camera_labels.tfrecord
segment-7458568461947999548_700_000_720_000_with_camera_labels.tfrecord
segment-7466751345307077932_585_000_605_000_with_camera_labels.tfrecord
segment-7517545172000568481_2325_000_2345_000_with_camera_labels.tfrecord
segment-7543690094688232666_4945_350_4965_350_with_camera_labels.tfrecord
segment-7554208726220851641_380_000_400_000_with_camera_labels.tfrecord
segment-7566697458525030390_1440_000_1460_000_with_camera_labels.tfrecord
segment-759208896257112298_184_000_204_000_with_camera_labels.tfrecord
segment-7643597152739318064_3979_000_3999_000_with_camera_labels.tfrecord
segment-7670103006580549715_360_000_380_000_with_camera_labels.tfrecord
segment-7727809428114700355_2960_000_2980_000_with_camera_labels.tfrecord
segment-7741361323303179462_1230_310_1250_310_with_camera_labels.tfrecord
segment-7761658966964621355_1000_000_1020_000_with_camera_labels.tfrecord
segment-7768517933263896280_1120_000_1140_000_with_camera_labels.tfrecord
segment-7799671367768576481_260_000_280_000_with_camera_labels.tfrecord
segment-7837172662136597262_1140_000_1160_000_with_camera_labels.tfrecord
segment-7850521592343484282_4576_090_4596_090_with_camera_labels.tfrecord
segment-7861168750216313148_1305_290_1325_290_with_camera_labels.tfrecord
segment-786582060300383668_2944_060_2964_060_with_camera_labels.tfrecord
segment-7885161619764516373_289_280_309_280_with_camera_labels.tfrecord
segment-7890808800227629086_6162_700_6182_700_with_camera_labels.tfrecord
segment-7912728502266478772_1202_200_1222_200_with_camera_labels.tfrecord
segment-7920326980177504058_2454_310_2474_310_with_camera_labels.tfrecord
segment-7921369793217703814_1060_000_1080_000_with_camera_labels.tfrecord
segment-7934693355186591404_73_000_93_000_with_camera_labels.tfrecord
segment-7940496892864900543_4783_540_4803_540_with_camera_labels.tfrecord
segment-7950869827763684964_8685_000_8705_000_with_camera_labels.tfrecord
segment-7996500550445322129_2333_304_2353_304_with_camera_labels.tfrecord
segment-7999729608823422351_1483_600_1503_600_with_camera_labels.tfrecord
segment-8031709558315183746_491_220_511_220_with_camera_labels.tfrecord
segment-80599353855279550_2604_480_2624_480_with_camera_labels.tfrecord
segment-809159138284604331_3355_840_3375_840_with_camera_labels.tfrecord
segment-8099457465580871094_4764_380_4784_380_with_camera_labels.tfrecord
segment-8120716761799622510_862_120_882_120_with_camera_labels.tfrecord
segment-8123909110537564436_7220_000_7240_000_with_camera_labels.tfrecord
segment-8126606965364870152_985_090_1005_090_with_camera_labels.tfrecord
segment-8148053503558757176_4240_000_4260_000_with_camera_labels.tfrecord
segment-8158128948493708501_7477_230_7497_230_with_camera_labels.tfrecord
segment-8207498713503609786_3005_450_3025_450_with_camera_labels.tfrecord
segment-8222208340265444449_1400_000_1420_000_with_camera_labels.tfrecord
segment-8323028393459455521_2105_000_2125_000_with_camera_labels.tfrecord
segment-8327447186504415549_5200_000_5220_000_with_camera_labels.tfrecord
segment-8345535260120974350_1980_000_2000_000_with_camera_labels.tfrecord
segment-8399876466981146110_2560_000_2580_000_with_camera_labels.tfrecord
segment-8424573439186068308_3460_000_3480_000_with_camera_labels.tfrecord
segment-8454755173123314088_3202_000_3222_000_with_camera_labels.tfrecord
segment-8487809726845917818_4779_870_4799_870_with_camera_labels.tfrecord
segment-8494653877777333091_540_000_560_000_with_camera_labels.tfrecord
segment-8513241054672631743_115_960_135_960_with_camera_labels.tfrecord
segment-8543158371164842559_4131_530_4151_530_with_camera_labels.tfrecord
segment-857746300435138193_1869_000_1889_000_with_camera_labels.tfrecord
segment-8582923946352460474_2360_000_2380_000_with_camera_labels.tfrecord
segment-8603916601243187272_540_000_560_000_with_camera_labels.tfrecord
segment-8633296376655504176_514_000_534_000_with_camera_labels.tfrecord
segment-8659567063494726263_2480_000_2500_000_with_camera_labels.tfrecord
segment-8663006751916427679_1520_000_1540_000_with_camera_labels.tfrecord
segment-8700094808505895018_7272_488_7292_488_with_camera_labels.tfrecord
segment-8722413665055769182_2840_000_2860_000_with_camera_labels.tfrecord
segment-8745106945249251942_1207_000_1227_000_with_camera_labels.tfrecord
segment-8763126149209091146_1843_320_1863_320_with_camera_labels.tfrecord
segment-8796914080594559459_4284_170_4304_170_with_camera_labels.tfrecord
segment-8806931859563747931_1160_000_1180_000_with_camera_labels.tfrecord
segment-8811210064692949185_3066_770_3086_770_with_camera_labels.tfrecord
segment-8822503619482926605_1080_000_1100_000_with_camera_labels.tfrecord
segment-8859409804103625626_2760_000_2780_000_with_camera_labels.tfrecord
segment-8938046348067069210_3800_000_3820_000_with_camera_labels.tfrecord
segment-8965112222692085704_4860_000_4880_000_with_camera_labels.tfrecord
segment-898816942644052013_20_000_40_000_with_camera_labels.tfrecord
segment-9015546800913584551_4431_180_4451_180_with_camera_labels.tfrecord
segment-9016865488168499365_4780_000_4800_000_with_camera_labels.tfrecord
segment-9058545212382992974_5236_200_5256_200_with_camera_labels.tfrecord
segment-9062286840846668802_31_000_51_000_with_camera_labels.tfrecord
segment-9105380625923157726_4420_000_4440_000_with_camera_labels.tfrecord
segment-9110125340505914899_380_000_400_000_with_camera_labels.tfrecord
segment-9123867659877264673_3569_950_3589_950_with_camera_labels.tfrecord
segment-912496333665446669_1680_000_1700_000_with_camera_labels.tfrecord
segment-913274067754539885_913_000_933_000_with_camera_labels.tfrecord
segment-9142545919543484617_86_000_106_000_with_camera_labels.tfrecord
segment-915935412356143375_1740_030_1760_030_with_camera_labels.tfrecord
segment-9175749307679169289_5933_260_5953_260_with_camera_labels.tfrecord
segment-9179922063516210200_157_000_177_000_with_camera_labels.tfrecord
segment-9250355398701464051_4166_132_4186_132_with_camera_labels.tfrecord
segment-9288629315134424745_4360_000_4380_000_with_camera_labels.tfrecord
segment-9295161125729168140_1270_000_1290_000_with_camera_labels.tfrecord
segment-9311322119128915594_5285_000_5305_000_with_camera_labels.tfrecord
segment-9320169289978396279_1040_000_1060_000_with_camera_labels.tfrecord
segment-9325580606626376787_4509_140_4529_140_with_camera_labels.tfrecord
segment-9334364225104959137_661_000_681_000_with_camera_labels.tfrecord
segment-9350921499281634194_2403_251_2423_251_with_camera_labels.tfrecord
segment-9385013624094020582_2547_650_2567_650_with_camera_labels.tfrecord
segment-9415086857375798767_4760_000_4780_000_with_camera_labels.tfrecord
segment-9465500459680839281_1100_000_1120_000_with_camera_labels.tfrecord
segment-9509506420470671704_4049_100_4069_100_with_camera_labels.tfrecord
segment-9521653920958139982_940_000_960_000_with_camera_labels.tfrecord
segment-9529958888589376527_640_000_660_000_with_camera_labels.tfrecord
segment-9547911055204230158_1567_950_1587_950_with_camera_labels.tfrecord
segment-9568394837328971633_466_365_486_365_with_camera_labels.tfrecord
segment-9653249092275997647_980_000_1000_000_with_camera_labels.tfrecord
segment-9654060644653474834_3905_000_3925_000_with_camera_labels.tfrecord
segment-9696413700515401320_1690_000_1710_000_with_camera_labels.tfrecord
segment-972142630887801133_642_740_662_740_with_camera_labels.tfrecord
segment-9747453753779078631_940_000_960_000_with_camera_labels.tfrecord
segment-9758342966297863572_875_230_895_230_with_camera_labels.tfrecord
segment-9820553434532681355_2820_000_2840_000_with_camera_labels.tfrecord
segment-9907794657177651763_1126_570_1146_570_with_camera_labels.tfrecord
segment-990914685337955114_980_000_1000_000_with_camera_labels.tfrecord
segment-9985243312780923024_3049_720_3069_720_with_camera_labels.tfrecord
segment-10203656353524179475_7625_000_7645_000_with_camera_labels.tfrecord
segment-1024360143612057520_3580_000_3600_000_with_camera_labels.tfrecord
segment-10247954040621004675_2180_000_2200_000_with_camera_labels.tfrecord
segment-10289507859301986274_4200_000_4220_000_with_camera_labels.tfrecord
segment-10335539493577748957_1372_870_1392_870_with_camera_labels.tfrecord
segment-10359308928573410754_720_000_740_000_with_camera_labels.tfrecord
segment-10448102132863604198_472_000_492_000_with_camera_labels.tfrecord
segment-10689101165701914459_2072_300_2092_300_with_camera_labels.tfrecord
segment-1071392229495085036_1844_790_1864_790_with_camera_labels.tfrecord
segment-10837554759555844344_6525_000_6545_000_with_camera_labels.tfrecord
segment-10868756386479184868_3000_000_3020_000_with_camera_labels.tfrecord
segment-11037651371539287009_77_670_97_670_with_camera_labels.tfrecord
segment-11048712972908676520_545_000_565_000_with_camera_labels.tfrecord
segment-1105338229944737854_1280_000_1300_000_with_camera_labels.tfrecord
segment-11356601648124485814_409_000_429_000_with_camera_labels.tfrecord
segment-11387395026864348975_3820_000_3840_000_with_camera_labels.tfrecord
segment-11406166561185637285_1753_750_1773_750_with_camera_labels.tfrecord
segment-11434627589960744626_4829_660_4849_660_with_camera_labels.tfrecord
segment-11450298750351730790_1431_750_1451_750_with_camera_labels.tfrecord
segment-11616035176233595745_3548_820_3568_820_with_camera_labels.tfrecord
segment-11660186733224028707_420_000_440_000_with_camera_labels.tfrecord
segment-11901761444769610243_556_000_576_000_with_camera_labels.tfrecord
segment-12102100359426069856_3931_470_3951_470_with_camera_labels.tfrecord
segment-12134738431513647889_3118_000_3138_000_with_camera_labels.tfrecord
segment-12306251798468767010_560_000_580_000_with_camera_labels.tfrecord
segment-12358364923781697038_2232_990_2252_990_with_camera_labels.tfrecord
segment-12374656037744638388_1412_711_1432_711_with_camera_labels.tfrecord
segment-12496433400137459534_120_000_140_000_with_camera_labels.tfrecord
segment-12657584952502228282_3940_000_3960_000_with_camera_labels.tfrecord
segment-12820461091157089924_5202_916_5222_916_with_camera_labels.tfrecord
segment-12831741023324393102_2673_230_2693_230_with_camera_labels.tfrecord
segment-12866817684252793621_480_000_500_000_with_camera_labels.tfrecord
segment-12940710315541930162_2660_000_2680_000_with_camera_labels.tfrecord
segment-13178092897340078601_5118_604_5138_604_with_camera_labels.tfrecord
segment-13184115878756336167_1354_000_1374_000_with_camera_labels.tfrecord
segment-13299463771883949918_4240_000_4260_000_with_camera_labels.tfrecord
segment-1331771191699435763_440_000_460_000_with_camera_labels.tfrecord
segment-13336883034283882790_7100_000_7120_000_with_camera_labels.tfrecord
segment-13356997604177841771_3360_000_3380_000_with_camera_labels.tfrecord
segment-13415985003725220451_6163_000_6183_000_with_camera_labels.tfrecord
segment-13469905891836363794_4429_660_4449_660_with_camera_labels.tfrecord
segment-13573359675885893802_1985_970_2005_970_with_camera_labels.tfrecord
segment-13694146168933185611_800_000_820_000_with_camera_labels.tfrecord
segment-13941626351027979229_3363_930_3383_930_with_camera_labels.tfrecord
segment-13982731384839979987_1680_000_1700_000_with_camera_labels.tfrecord
segment-1405149198253600237_160_000_180_000_with_camera_labels.tfrecord
segment-14081240615915270380_4399_000_4419_000_with_camera_labels.tfrecord
segment-14107757919671295130_3546_370_3566_370_with_camera_labels.tfrecord
segment-14127943473592757944_2068_000_2088_000_with_camera_labels.tfrecord
segment-14165166478774180053_1786_000_1806_000_with_camera_labels.tfrecord
segment-14244512075981557183_1226_840_1246_840_with_camera_labels.tfrecord
segment-14262448332225315249_1280_000_1300_000_with_camera_labels.tfrecord
segment-14300007604205869133_1160_000_1180_000_with_camera_labels.tfrecord
segment-14333744981238305769_5658_260_5678_260_with_camera_labels.tfrecord
segment-14383152291533557785_240_000_260_000_with_camera_labels.tfrecord
segment-14486517341017504003_3406_349_3426_349_with_camera_labels.tfrecord
segment-1457696187335927618_595_027_615_027_with_camera_labels.tfrecord
segment-14624061243736004421_1840_000_1860_000_with_camera_labels.tfrecord
segment-1464917900451858484_1960_000_1980_000_with_camera_labels.tfrecord
segment-14663356589561275673_935_195_955_195_with_camera_labels.tfrecord
segment-14687328292438466674_892_000_912_000_with_camera_labels.tfrecord
segment-14739149465358076158_4740_000_4760_000_with_camera_labels.tfrecord
segment-14811410906788672189_373_113_393_113_with_camera_labels.tfrecord
segment-14931160836268555821_5778_870_5798_870_with_camera_labels.tfrecord
segment-14956919859981065721_1759_980_1779_980_with_camera_labels.tfrecord
segment-15021599536622641101_556_150_576_150_with_camera_labels.tfrecord
segment-15028688279822984888_1560_000_1580_000_with_camera_labels.tfrecord
segment-1505698981571943321_1186_773_1206_773_with_camera_labels.tfrecord
segment-15096340672898807711_3765_000_3785_000_with_camera_labels.tfrecord
segment-15224741240438106736_960_000_980_000_with_camera_labels.tfrecord
segment-15396462829361334065_4265_000_4285_000_with_camera_labels.tfrecord
segment-15488266120477489949_3162_920_3182_920_with_camera_labels.tfrecord
segment-15496233046893489569_4551_550_4571_550_with_camera_labels.tfrecord
segment-15611747084548773814_3740_000_3760_000_with_camera_labels.tfrecord
segment-15724298772299989727_5386_410_5406_410_with_camera_labels.tfrecord
segment-15948509588157321530_7187_290_7207_290_with_camera_labels.tfrecord
segment-15959580576639476066_5087_580_5107_580_with_camera_labels.tfrecord
segment-16204463896543764114_5340_000_5360_000_with_camera_labels.tfrecord
segment-16213317953898915772_1597_170_1617_170_with_camera_labels.tfrecord
segment-16229547658178627464_380_000_400_000_with_camera_labels.tfrecord
segment-16751706457322889693_4475_240_4495_240_with_camera_labels.tfrecord
segment-16767575238225610271_5185_000_5205_000_with_camera_labels.tfrecord
segment-16979882728032305374_2719_000_2739_000_with_camera_labels.tfrecord
segment-17065833287841703_2980_000_3000_000_with_camera_labels.tfrecord
segment-17135518413411879545_1480_000_1500_000_with_camera_labels.tfrecord
segment-17136314889476348164_979_560_999_560_with_camera_labels.tfrecord
segment-17152649515605309595_3440_000_3460_000_with_camera_labels.tfrecord
segment-17244566492658384963_2540_000_2560_000_with_camera_labels.tfrecord
segment-17344036177686610008_7852_160_7872_160_with_camera_labels.tfrecord
segment-17539775446039009812_440_000_460_000_with_camera_labels.tfrecord
segment-17612470202990834368_2800_000_2820_000_with_camera_labels.tfrecord
segment-17626999143001784258_2760_000_2780_000_with_camera_labels.tfrecord
segment-17694030326265859208_2340_000_2360_000_with_camera_labels.tfrecord
segment-17703234244970638241_220_000_240_000_with_camera_labels.tfrecord
segment-17763730878219536361_3144_635_3164_635_with_camera_labels.tfrecord
segment-17791493328130181905_1480_000_1500_000_with_camera_labels.tfrecord
segment-17860546506509760757_6040_000_6060_000_with_camera_labels.tfrecord
segment-17962792089966876718_2210_933_2230_933_with_camera_labels.tfrecord
segment-18024188333634186656_1566_600_1586_600_with_camera_labels.tfrecord
segment-18045724074935084846_6615_900_6635_900_with_camera_labels.tfrecord
segment-18252111882875503115_378_471_398_471_with_camera_labels.tfrecord
segment-18305329035161925340_4466_730_4486_730_with_camera_labels.tfrecord
segment-18331704533904883545_1560_000_1580_000_with_camera_labels.tfrecord
segment-18333922070582247333_320_280_340_280_with_camera_labels.tfrecord
segment-18446264979321894359_3700_000_3720_000_with_camera_labels.tfrecord
segment-1906113358876584689_1359_560_1379_560_with_camera_labels.tfrecord
segment-191862526745161106_1400_000_1420_000_with_camera_labels.tfrecord
segment-1943605865180232897_680_000_700_000_with_camera_labels.tfrecord
segment-2094681306939952000_2972_300_2992_300_with_camera_labels.tfrecord
segment-2105808889850693535_2295_720_2315_720_with_camera_labels.tfrecord
segment-2308204418431899833_3575_000_3595_000_with_camera_labels.tfrecord
segment-2335854536382166371_2709_426_2729_426_with_camera_labels.tfrecord
segment-2367305900055174138_1881_827_1901_827_with_camera_labels.tfrecord
segment-2506799708748258165_6455_000_6475_000_with_camera_labels.tfrecord
segment-2551868399007287341_3100_000_3120_000_with_camera_labels.tfrecord
segment-260994483494315994_2797_545_2817_545_with_camera_labels.tfrecord
segment-2624187140172428292_73_000_93_000_with_camera_labels.tfrecord
segment-271338158136329280_2541_070_2561_070_with_camera_labels.tfrecord
segment-272435602399417322_2884_130_2904_130_with_camera_labels.tfrecord
segment-2736377008667623133_2676_410_2696_410_with_camera_labels.tfrecord
segment-2834723872140855871_1615_000_1635_000_with_camera_labels.tfrecord
segment-3015436519694987712_1300_000_1320_000_with_camera_labels.tfrecord
segment-3039251927598134881_1240_610_1260_610_with_camera_labels.tfrecord
segment-3077229433993844199_1080_000_1100_000_with_camera_labels.tfrecord
segment-30779396576054160_1880_000_1900_000_with_camera_labels.tfrecord
segment-3126522626440597519_806_440_826_440_with_camera_labels.tfrecord
segment-346889320598157350_798_187_818_187_with_camera_labels.tfrecord
segment-3577352947946244999_3980_000_4000_000_with_camera_labels.tfrecord
segment-3651243243762122041_3920_000_3940_000_with_camera_labels.tfrecord
segment-366934253670232570_2229_530_2249_530_with_camera_labels.tfrecord
segment-3731719923709458059_1540_000_1560_000_with_camera_labels.tfrecord
segment-3915587593663172342_10_000_30_000_with_camera_labels.tfrecord
segment-4013125682946523088_3540_000_3560_000_with_camera_labels.tfrecord
segment-4195774665746097799_7300_960_7320_960_with_camera_labels.tfrecord
segment-4246537812751004276_1560_000_1580_000_with_camera_labels.tfrecord
segment-4409585400955983988_3500_470_3520_470_with_camera_labels.tfrecord
segment-4423389401016162461_4235_900_4255_900_with_camera_labels.tfrecord
segment-4426410228514970291_1620_000_1640_000_with_camera_labels.tfrecord
segment-447576862407975570_4360_000_4380_000_with_camera_labels.tfrecord
segment-4490196167747784364_616_569_636_569_with_camera_labels.tfrecord
segment-4575389405178805994_4900_000_4920_000_with_camera_labels.tfrecord
segment-4612525129938501780_340_000_360_000_with_camera_labels.tfrecord
segment-4690718861228194910_1980_000_2000_000_with_camera_labels.tfrecord
segment-4759225533437988401_800_000_820_000_with_camera_labels.tfrecord
segment-4764167778917495793_860_000_880_000_with_camera_labels.tfrecord
segment-4816728784073043251_5273_410_5293_410_with_camera_labels.tfrecord
segment-4854173791890687260_2880_000_2900_000_with_camera_labels.tfrecord
segment-5183174891274719570_3464_030_3484_030_with_camera_labels.tfrecord
segment-5289247502039512990_2640_000_2660_000_with_camera_labels.tfrecord
segment-5302885587058866068_320_000_340_000_with_camera_labels.tfrecord
segment-5372281728627437618_2005_000_2025_000_with_camera_labels.tfrecord
segment-5373876050695013404_3817_170_3837_170_with_camera_labels.tfrecord
segment-5574146396199253121_6759_360_6779_360_with_camera_labels.tfrecord
segment-5772016415301528777_1400_000_1420_000_with_camera_labels.tfrecord
segment-5832416115092350434_60_000_80_000_with_camera_labels.tfrecord
segment-5847910688643719375_180_000_200_000_with_camera_labels.tfrecord
segment-5990032395956045002_6600_000_6620_000_with_camera_labels.tfrecord
segment-6001094526418694294_4609_470_4629_470_with_camera_labels.tfrecord
segment-6074871217133456543_1000_000_1020_000_with_camera_labels.tfrecord
segment-6161542573106757148_585_030_605_030_with_camera_labels.tfrecord
segment-6183008573786657189_5414_000_5434_000_with_camera_labels.tfrecord
segment-6324079979569135086_2372_300_2392_300_with_camera_labels.tfrecord
segment-6491418762940479413_6520_000_6540_000_with_camera_labels.tfrecord
segment-662188686397364823_3248_800_3268_800_with_camera_labels.tfrecord
segment-6637600600814023975_2235_000_2255_000_with_camera_labels.tfrecord
segment-6680764940003341232_2260_000_2280_000_with_camera_labels.tfrecord
segment-6707256092020422936_2352_392_2372_392_with_camera_labels.tfrecord
segment-7119831293178745002_1094_720_1114_720_with_camera_labels.tfrecord
segment-7163140554846378423_2717_820_2737_820_with_camera_labels.tfrecord
segment-7253952751374634065_1100_000_1120_000_with_camera_labels.tfrecord
segment-7493781117404461396_2140_000_2160_000_with_camera_labels.tfrecord
segment-7650923902987369309_2380_000_2400_000_with_camera_labels.tfrecord
segment-7732779227944176527_2120_000_2140_000_with_camera_labels.tfrecord
segment-7799643635310185714_680_000_700_000_with_camera_labels.tfrecord
segment-7932945205197754811_780_000_800_000_with_camera_labels.tfrecord
segment-7988627150403732100_1487_540_1507_540_with_camera_labels.tfrecord
segment-8079607115087394458_1240_000_1260_000_with_camera_labels.tfrecord
segment-8133434654699693993_1162_020_1182_020_with_camera_labels.tfrecord
segment-8137195482049459160_3100_000_3120_000_with_camera_labels.tfrecord
segment-8302000153252334863_6020_000_6040_000_with_camera_labels.tfrecord
segment-8331804655557290264_4351_740_4371_740_with_camera_labels.tfrecord
segment-8398516118967750070_3958_000_3978_000_with_camera_labels.tfrecord
segment-8506432817378693815_4860_000_4880_000_with_camera_labels.tfrecord
segment-8679184381783013073_7740_000_7760_000_with_camera_labels.tfrecord
segment-8845277173853189216_3828_530_3848_530_with_camera_labels.tfrecord
segment-8888517708810165484_1549_770_1569_770_with_camera_labels.tfrecord
segment-8907419590259234067_1960_000_1980_000_with_camera_labels.tfrecord
segment-89454214745557131_3160_000_3180_000_with_camera_labels.tfrecord
segment-8956556778987472864_3404_790_3424_790_with_camera_labels.tfrecord
segment-902001779062034993_2880_000_2900_000_with_camera_labels.tfrecord
segment-9024872035982010942_2578_810_2598_810_with_camera_labels.tfrecord
segment-9041488218266405018_6454_030_6474_030_with_camera_labels.tfrecord
segment-9114112687541091312_1100_000_1120_000_with_camera_labels.tfrecord
segment-9164052963393400298_4692_970_4712_970_with_camera_labels.tfrecord
segment-9231652062943496183_1740_000_1760_000_with_camera_labels.tfrecord
segment-9243656068381062947_1297_428_1317_428_with_camera_labels.tfrecord
segment-9265793588137545201_2981_960_3001_960_with_camera_labels.tfrecord
segment-933621182106051783_4160_000_4180_000_with_camera_labels.tfrecord
segment-9443948810903981522_6538_870_6558_870_with_camera_labels.tfrecord
segment-9472420603764812147_850_000_870_000_with_camera_labels.tfrecord
segment-9579041874842301407_1300_000_1320_000_with_camera_labels.tfrecord
segment-967082162553397800_5102_900_5122_900_with_camera_labels.tfrecord
......@@ -23,7 +23,7 @@ y-axis points towards to the left direction, and z-axis points towards to the to
...
# Save it to the file.
# The shape of points should be (num_points, 4), that is [x, y, z, intensity],
# The shape of points should be (num_points, 4), that is [x, y, z, intensity] (Only for KITTI dataset).
# If you doesn't have the intensity information, just set them to zeros.
# If you have the intensity information, you should normalize them to [0, 1].
points[:, 3] = 0
......
......@@ -57,6 +57,43 @@ python -m pcdet.datasets.nuscenes.nuscenes_dataset --func create_nuscenes_infos
--version v1.0-trainval
```
### Waymo Open Dataset
* Please download the official [Waymo Open Dataset](https://waymo.com/open/download/),
including the training data `training_0000.tar~training_0031.tar` and the validation
data `validation_0000.tar~validation_0007.tar`.
* Unzip all the above `xxxx.tar` files to the directory of `data/waymo/raw_data` as follows (You could get 798 *train* tfrecord and 202 *val* tfrecord ):
```
OpenPCDet
├── data
│ ├── waymo
│ │ │── ImageSets
│ │ │── raw_data
│ │ │ │── segment-xxxxxxxx.tfrecord
| | | |── ...
| | |── waymo_processed_data
│ │ │ │── segment-xxxxxxxx/
| | | |── ...
│ │ │── pcdet_gt_database_train_sampled_xx/
│ │ │── pcdet_waymo_dbinfos_train_sampled_xx.pkl
├── pcdet
├── tools
```
* Install the official `waymo-open-dataset` by running the following command:
```shell script
pip3 install --upgrade pip
# tf 2.0.0
pip3 install waymo-open-dataset-tf-2-0-0==1.2.0 --user
```
* Extract point cloud data from tfrecord and generate data infos by running the following command (it takes several hours,
and you could refer to `data/waymo/waymo_processed_data` to see how many records that have been processed):
```python
python -m pcdet.datasets.waymo.waymo_dataset --func create_waymo_infos \
--cfg_file tools/cfgs/dataset_configs/waymo_dataset.yaml
```
Note that you do not need to install `waymo-open-dataset` if you have already processed the data before and do not need to evaluate with official Waymo Metrics.
## Training & Testing
......
......@@ -7,11 +7,13 @@ from pcdet.utils import common_utils
from .dataset import DatasetTemplate
from .kitti.kitti_dataset import KittiDataset
from .nuscenes.nuscenes_dataset import NuScenesDataset
from .waymo.waymo_dataset import WaymoDataset
__all__ = {
'DatasetTemplate': DatasetTemplate,
'KittiDataset': KittiDataset,
'NuScenesDataset': NuScenesDataset
'NuScenesDataset': NuScenesDataset,
'WaymoDataset': WaymoDataset
}
......
# OpenPCDet PyTorch Dataloader and Evaluation Tools for Waymo Open Dataset
# Reference https://github.com/open-mmlab/OpenPCDet
# Written by Shaoshuai Shi, Chaoxu Guo
# All Rights Reserved 2019-2020.
import os
import pickle
import copy
import numpy as np
import torch
from pathlib import Path
from ...ops.roiaware_pool3d import roiaware_pool3d_utils
from ...utils import box_utils, common_utils
from ..dataset import DatasetTemplate
class WaymoDataset(DatasetTemplate):
def __init__(self, dataset_cfg, class_names, training=True, root_path=None, logger=None):
super().__init__(
dataset_cfg=dataset_cfg, class_names=class_names, training=training, root_path=root_path, logger=logger
)
self.data_path = self.root_path / self.dataset_cfg.PROCESSED_DATA_TAG
self.split = self.dataset_cfg.DATA_SPLIT[self.mode]
split_dir = self.root_path / 'ImageSets' / (self.split + '.txt')
self.sample_sequence_list = [x.strip() for x in open(split_dir).readlines()]
self.infos = []
self.include_waymo_data(self.mode)
def set_split(self, split):
super().__init__(
dataset_cfg=self.dataset_cfg, class_names=self.class_names, training=self.training,
root_path=self.root_path, logger=self.logger
)
self.split = split
split_dir = self.root_path / 'ImageSets' / (self.split + '.txt')
self.sample_sequence_list = [x.strip() for x in open(split_dir).readlines()]
self.infos = []
self.include_waymo_data(self.mode)
def include_waymo_data(self, mode):
self.logger.info('Loading Waymo dataset')
waymo_infos = []
num_skipped_infos = 0
for k in range(len(self.sample_sequence_list)):
sequence_name = os.path.splitext(self.sample_sequence_list[k])[0]
info_path = self.data_path / sequence_name / ('%s.pkl' % sequence_name)
info_path = self.check_sequence_name_with_all_version(info_path)
if not info_path.exists():
num_skipped_infos += 1
continue
with open(info_path, 'rb') as f:
infos = pickle.load(f)
waymo_infos.extend(infos)
self.infos.extend(waymo_infos[:])
self.logger.info('Total skipped info %s' % num_skipped_infos)
self.logger.info('Total samples for Waymo dataset: %d' % (len(waymo_infos)))
if self.dataset_cfg.SAMPLED_INTERVAL[mode] > 1:
sampled_waymo_infos = []
for k in range(0, len(self.infos), self.dataset_cfg.SAMPLED_INTERVAL[mode]):
sampled_waymo_infos.append(self.infos[k])
self.infos = sampled_waymo_infos
self.logger.info('Total sampled samples for Waymo dataset: %d' % len(self.infos))
@staticmethod
def check_sequence_name_with_all_version(sequence_file):
if '_with_camera_labels' not in str(sequence_file) and not sequence_file.exists():
sequence_file = Path(str(sequence_file[:-9]) + '_with_camera_labels.tfrecord')
if '_with_camera_labels' in str(sequence_file) and not sequence_file.exists():
sequence_file = Path(str(sequence_file).replace('_with_camera_labels', ''))
return sequence_file
def get_infos(self, raw_data_path, save_path, num_workers=4, has_label=True, sampled_interval=1):
import concurrent.futures as futures
from functools import partial
from . import waymo_utils
print('---------------The waymo sample interval is %d, total sequecnes is %d-----------------'
% (sampled_interval, len(self.sample_sequence_list)))
process_single_sequence = partial(
waymo_utils.process_single_sequence,
save_path=save_path, sampled_interval=sampled_interval, has_label=has_label
)
sample_sequence_file_list = [
self.check_sequence_name_with_all_version(raw_data_path / sequence_file)
for sequence_file in self.sample_sequence_list
]
# process_single_sequence(sample_sequence_file_list[0])
with futures.ThreadPoolExecutor(num_workers) as executor:
sequence_infos = executor.map(process_single_sequence, sample_sequence_file_list)
sequence_infos = list(sequence_infos)
all_sequences_infos = [item for infos in sequence_infos for item in infos]
return all_sequences_infos
def get_lidar(self, sequence_name, sample_idx):
lidar_file = self.data_path / sequence_name / ('%04d.npy' % sample_idx)
point_features = np.load(lidar_file) # (N, 7): [x, y, z, intensity, elongation, NLZ_flag]
points_all, NLZ_flag = point_features[:, 0:5], point_features[:, 5]
points_all = points_all[NLZ_flag == -1]
points_all[:, 3] = np.tanh(points_all[:, 3])
return points_all
def __len__(self):
if self._merge_all_iters_to_one_epoch:
return len(self.infos) * self.total_epochs
return len(self.infos)
def __getitem__(self, index):
if self._merge_all_iters_to_one_epoch:
index = index % len(self.infos)
info = copy.deepcopy(self.infos[index])
pc_info = info['point_cloud']
sequence_name = pc_info['lidar_sequence']
sample_idx = pc_info['sample_idx']
points = self.get_lidar(sequence_name, sample_idx)
input_dict = {
'points': points,
'frame_id': info['frame_id'],
}
if 'annos' in info:
annos = info['annos']
annos = common_utils.drop_info_with_name(annos, name='unknown')
if self.dataset_cfg.get('INFO_WITH_FAKELIDAR', False):
gt_boxes_lidar = box_utils.boxes3d_kitti_fakelidar_to_lidar(annos['gt_boxes_lidar'])
else:
gt_boxes_lidar = annos['gt_boxes_lidar']
input_dict.update({
'gt_names': annos['name'],
'gt_boxes': gt_boxes_lidar,
'num_points_in_gt': annos.get('num_points_in_gt', None)
})
data_dict = self.prepare_data(data_dict=input_dict)
data_dict['metadata'] = info.get('metadata', info['frame_id'])
data_dict.pop('num_points_in_gt', None)
return data_dict
@staticmethod
def generate_prediction_dicts(batch_dict, pred_dicts, class_names, output_path=None):
"""
Args:
batch_dict:
frame_id:
pred_dicts: list of pred_dicts
pred_boxes: (N, 7), Tensor
pred_scores: (N), Tensor
pred_labels: (N), Tensor
class_names:
output_path:
Returns:
"""
def get_template_prediction(num_samples):
ret_dict = {
'name': np.zeros(num_samples), 'score': np.zeros(num_samples),
'boxes_lidar': np.zeros([num_samples, 7])
}
return ret_dict
def generate_single_sample_dict(box_dict):
pred_scores = box_dict['pred_scores'].cpu().numpy()
pred_boxes = box_dict['pred_boxes'].cpu().numpy()
pred_labels = box_dict['pred_labels'].cpu().numpy()
pred_dict = get_template_prediction(pred_scores.shape[0])
if pred_scores.shape[0] == 0:
return pred_dict
pred_dict['name'] = np.array(class_names)[pred_labels - 1]
pred_dict['score'] = pred_scores
pred_dict['boxes_lidar'] = pred_boxes
return pred_dict
annos = []
for index, box_dict in enumerate(pred_dicts):
single_pred_dict = generate_single_sample_dict(box_dict)
single_pred_dict['frame_id'] = batch_dict['frame_id'][index]
single_pred_dict['metadata'] = batch_dict['metadata'][index]
annos.append(single_pred_dict)
return annos
def evaluation(self, det_annos, class_names, **kwargs):
if 'annos' not in self.infos[0].keys():
return 'No ground-truth boxes for evaluation', {}
def kitti_eval(eval_det_annos, eval_gt_annos):
from ..kitti.kitti_object_eval_python import eval as kitti_eval
from ..kitti import kitti_utils
map_name_to_kitti = {
'Vehicle': 'Car',
'Pedestrian': 'Pedestrian',
'Cyclist': 'Cyclist',
'Sign': 'Sign',
'Car': 'Car'
}
kitti_utils.transform_annotations_to_kitti_format(eval_det_annos, map_name_to_kitti=map_name_to_kitti)
kitti_utils.transform_annotations_to_kitti_format(
eval_gt_annos, map_name_to_kitti=map_name_to_kitti,
info_with_fakelidar=self.dataset_cfg.get('INFO_WITH_FAKELIDAR', False)
)
kitti_class_names = [map_name_to_kitti[x] for x in class_names]
ap_result_str, ap_dict = kitti_eval.get_official_eval_result(
gt_annos=eval_gt_annos, dt_annos=eval_det_annos, current_classes=kitti_class_names
)
return ap_result_str, ap_dict
def waymo_eval(eval_det_annos, eval_gt_annos):
from .waymo_eval import OpenPCDetWaymoDetectionMetricsEstimator
eval = OpenPCDetWaymoDetectionMetricsEstimator()
ap_dict = eval.waymo_evaluation(
eval_det_annos, eval_gt_annos, class_name=class_names,
distance_thresh=1000, fake_gt_infos=self.dataset_cfg.get('INFO_WITH_FAKELIDAR', False)
)
ap_result_str = '\n'
for key in ap_dict:
ap_dict[key] = ap_dict[key][0]
ap_result_str += '%s: %.4f \n' % (key, ap_dict[key])
return ap_result_str, ap_dict
eval_det_annos = copy.deepcopy(det_annos)
eval_gt_annos = [copy.deepcopy(info['annos']) for info in self.infos]
if kwargs['eval_metric'] == 'kitti':
ap_result_str, ap_dict = kitti_eval(eval_det_annos, eval_gt_annos)
elif kwargs['eval_metric'] == 'waymo':
ap_result_str, ap_dict = waymo_eval(eval_det_annos, eval_gt_annos)
else:
raise NotImplementedError
return ap_result_str, ap_dict
def create_groundtruth_database(self, info_path, save_path, used_classes=None, split='train', sampled_interval=10,
processed_data_tag=None):
database_save_path = save_path / ('pcdet_gt_database_%s_sampled_%d' % (split, sampled_interval))
db_info_save_path = save_path / ('pcdet_waymo_dbinfos_%s_sampled_%d.pkl' % (split, sampled_interval))
database_save_path.mkdir(parents=True, exist_ok=True)
all_db_infos = {}
with open(info_path, 'rb') as f:
infos = pickle.load(f)
for k in range(0, len(infos), sampled_interval):
print('gt_database sample: %d/%d' % (k + 1, len(infos)))
info = infos[k]
pc_info = info['point_cloud']
sequence_name = pc_info['lidar_sequence']
sample_idx = pc_info['sample_idx']
points = self.get_lidar(sequence_name, sample_idx)
annos = info['annos']
names = annos['name']
difficulty = annos['difficulty']
gt_boxes = annos['gt_boxes_lidar']
num_obj = gt_boxes.shape[0]
box_idxs_of_pts = roiaware_pool3d_utils.points_in_boxes_gpu(
torch.from_numpy(points[:, 0:3]).unsqueeze(dim=0).float().cuda(),
torch.from_numpy(gt_boxes[:, 0:7]).unsqueeze(dim=0).float().cuda()
).long().squeeze(dim=0).cpu().numpy()
for i in range(num_obj):
filename = '%s_%04d_%s_%d.bin' % (sequence_name, sample_idx, names[i], i)
filepath = database_save_path / filename
gt_points = points[box_idxs_of_pts == i]
gt_points[:, :3] -= gt_boxes[i, :3]
if (used_classes is None) or names[i] in used_classes:
with open(filepath, 'w') as f:
gt_points.tofile(f)
db_path = str(filepath.relative_to(self.root_path)) # gt_database/xxxxx.bin
db_info = {'name': names[i], 'path': db_path, 'sequence_name': sequence_name,
'sample_idx': sample_idx, 'gt_idx': i, 'box3d_lidar': gt_boxes[i],
'num_points_in_gt': gt_points.shape[0], 'difficulty': difficulty[i]}
if names[i] in all_db_infos:
all_db_infos[names[i]].append(db_info)
else:
all_db_infos[names[i]] = [db_info]
for k, v in all_db_infos.items():
print('Database %s: %d' % (k, len(v)))
with open(db_info_save_path, 'wb') as f:
pickle.dump(all_db_infos, f)
def create_waymo_infos(dataset_cfg, class_names, data_path, save_path,
raw_data_tag='raw_data', processed_data_tag='waymo_processed_data', workers=4):
dataset = WaymoDataset(
dataset_cfg=dataset_cfg, class_names=class_names, root_path=data_path,
training=False, logger=common_utils.create_logger()
)
train_split, val_split = 'train', 'val'
train_filename = save_path / ('waymo_infos_%s.pkl' % train_split)
val_filename = save_path / ('waymo_infos_%s.pkl' % val_split)
print('---------------Start to generate data infos---------------')
dataset.set_split(train_split)
waymo_infos_train = dataset.get_infos(
raw_data_path=data_path / raw_data_tag,
save_path=save_path / processed_data_tag, num_workers=workers, has_label=True,
sampled_interval=1
)
with open(train_filename, 'wb') as f:
pickle.dump(waymo_infos_train, f)
print('----------------Waymo info train file is saved to %s----------------' % train_filename)
dataset.set_split(val_split)
waymo_infos_val = dataset.get_infos(
raw_data_path=data_path / raw_data_tag,
save_path=save_path / processed_data_tag, num_workers=workers, has_label=True,
sampled_interval=1
)
with open(val_filename, 'wb') as f:
pickle.dump(waymo_infos_val, f)
print('----------------Waymo info val file is saved to %s----------------' % val_filename)
print('---------------Start create groundtruth database for data augmentation---------------')
dataset.set_split(train_split)
dataset.create_groundtruth_database(
info_path=train_filename, save_path=save_path, split='train', sampled_interval=10,
used_classes=['Vehicle', 'Pedestrian', 'Cyclist']
)
print('---------------Data preparation Done---------------')
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description='arg parser')
parser.add_argument('--cfg_file', type=str, default=None, help='specify the config of dataset')
parser.add_argument('--func', type=str, default='create_waymo_infos', help='')
args = parser.parse_args()
if args.func == 'create_waymo_infos':
import yaml
from easydict import EasyDict
dataset_cfg = EasyDict(yaml.load(open(args.cfg_file)))
ROOT_DIR = (Path(__file__).resolve().parent / '../../../').resolve()
create_waymo_infos(
dataset_cfg=dataset_cfg,
class_names=['Vehicle', 'Pedestrian', 'Cyclist'],
data_path=ROOT_DIR / 'data' / 'waymo',
save_path=ROOT_DIR / 'data' / 'waymo',
raw_data_tag='raw_data',
processed_data_tag=dataset_cfg.PROCESSED_DATA_TAG
)
# OpenPCDet PyTorch Dataloader and Evaluation Tools for Waymo Open Dataset
# Reference https://github.com/open-mmlab/OpenPCDet
# Written by Shaoshuai Shi, Chaoxu Guo
# All Rights Reserved 2019-2020.
import numpy as np
import pickle
import tensorflow as tf
from google.protobuf import text_format
from waymo_open_dataset.metrics.python import detection_metrics
from waymo_open_dataset.protos import metrics_pb2
import argparse
tf.get_logger().setLevel('INFO')
def limit_period(val, offset=0.5, period=np.pi):
return val - np.floor(val / period + offset) * period
class OpenPCDetWaymoDetectionMetricsEstimator(tf.test.TestCase):
WAYMO_CLASSES = ['unknown', 'Vehicle', 'Pedestrian', 'Truck', 'Cyclist']
def generate_waymo_type_results(self, infos, class_names, is_gt=False, fake_gt_infos=True):
def boxes3d_kitti_fakelidar_to_lidar(boxes3d_lidar):
"""
Args:
boxes3d_fakelidar: (N, 7) [x, y, z, w, l, h, r] in old LiDAR coordinates, z is bottom center
Returns:
boxes3d_lidar: [x, y, z, dx, dy, dz, heading], (x, y, z) is the box center
"""
w, l, h, r = boxes3d_lidar[:, 3:4], boxes3d_lidar[:, 4:5], boxes3d_lidar[:, 5:6], boxes3d_lidar[:, 6:7]
boxes3d_lidar[:, 2] += h[:, 0] / 2
return np.concatenate([boxes3d_lidar[:, 0:3], l, w, h, -(r + np.pi / 2)], axis=-1)
frame_id, boxes3d, obj_type, score, overlap_nlz, difficulty = [], [], [], [], [], []
for frame_index, info in enumerate(infos):
if is_gt:
box_mask = np.array([n in class_names for n in info['name']], dtype=np.bool_)
if 'num_points_in_gt' in info:
zero_difficulty_mask = info['difficulty'] == 0
info['difficulty'][(info['num_points_in_gt'] > 5) & zero_difficulty_mask] = 1
info['difficulty'][(info['num_points_in_gt'] <= 5) & zero_difficulty_mask] = 2
nonzero_mask = info['num_points_in_gt'] > 0
box_mask = box_mask & nonzero_mask
num_boxes = box_mask.sum()
box_name = info['name'][box_mask]
difficulty.append(info['difficulty'][box_mask])
score.append(np.ones(num_boxes))
if fake_gt_infos:
info['gt_boxes_lidar'] = boxes3d_kitti_fakelidar_to_lidar(info['gt_boxes_lidar'])
boxes3d.append(info['gt_boxes_lidar'][box_mask])
else:
num_boxes = len(info['boxes_lidar'])
difficulty.append([0] * num_boxes)
score.append(info['score'])
boxes3d.append(np.array(info['boxes_lidar']))
box_name = info['name']
obj_type += [self.WAYMO_CLASSES.index(name) for i, name in enumerate(box_name)]
frame_id.append(np.array([frame_index] * num_boxes))
overlap_nlz.append(np.zeros(num_boxes)) # set zero currently
frame_id = np.concatenate(frame_id).reshape(-1).astype(np.int64)
boxes3d = np.concatenate(boxes3d, axis=0)
obj_type = np.array(obj_type).reshape(-1)
score = np.concatenate(score).reshape(-1)
overlap_nlz = np.concatenate(overlap_nlz).reshape(-1)
difficulty = np.concatenate(difficulty).reshape(-1).astype(np.int8)
boxes3d[:, -1] = limit_period(boxes3d[:, -1], offset=0.5, period=np.pi * 2)
return frame_id, boxes3d, obj_type, score, overlap_nlz, difficulty
def build_config(self):
config = metrics_pb2.Config()
config_text = """
breakdown_generator_ids: OBJECT_TYPE
difficulties {
levels:1
levels:2
}
matcher_type: TYPE_HUNGARIAN
iou_thresholds: 0.0
iou_thresholds: 0.7
iou_thresholds: 0.5
iou_thresholds: 0.5
iou_thresholds: 0.5
box_type: TYPE_3D
"""
for x in range(0, 100):
config.score_cutoffs.append(x * 0.01)
config.score_cutoffs.append(1.0)
text_format.Merge(config_text, config)
return config
def build_graph(self, graph):
with graph.as_default():
self._pd_frame_id = tf.compat.v1.placeholder(dtype=tf.int64)
self._pd_bbox = tf.compat.v1.placeholder(dtype=tf.float32)
self._pd_type = tf.compat.v1.placeholder(dtype=tf.uint8)
self._pd_score = tf.compat.v1.placeholder(dtype=tf.float32)
self._pd_overlap_nlz = tf.compat.v1.placeholder(dtype=tf.bool)
self._gt_frame_id = tf.compat.v1.placeholder(dtype=tf.int64)
self._gt_bbox = tf.compat.v1.placeholder(dtype=tf.float32)
self._gt_type = tf.compat.v1.placeholder(dtype=tf.uint8)
self._gt_difficulty = tf.compat.v1.placeholder(dtype=tf.uint8)
metrics = detection_metrics.get_detection_metric_ops(
config=self.build_config(),
prediction_frame_id=self._pd_frame_id,
prediction_bbox=self._pd_bbox,
prediction_type=self._pd_type,
prediction_score=self._pd_score,
prediction_overlap_nlz=self._pd_overlap_nlz,
ground_truth_bbox=self._gt_bbox,
ground_truth_type=self._gt_type,
ground_truth_frame_id=self._gt_frame_id,
ground_truth_difficulty=self._gt_difficulty,
)
return metrics
def run_eval_ops(
self,
sess,
graph,
metrics,
prediction_frame_id,
prediction_bbox,
prediction_type,
prediction_score,
prediction_overlap_nlz,
ground_truth_frame_id,
ground_truth_bbox,
ground_truth_type,
ground_truth_difficulty,
):
sess.run(
[tf.group([value[1] for value in metrics.values()])],
feed_dict={
self._pd_bbox: prediction_bbox,
self._pd_frame_id: prediction_frame_id,
self._pd_type: prediction_type,
self._pd_score: prediction_score,
self._pd_overlap_nlz: prediction_overlap_nlz,
self._gt_bbox: ground_truth_bbox,
self._gt_type: ground_truth_type,
self._gt_frame_id: ground_truth_frame_id,
self._gt_difficulty: ground_truth_difficulty,
},
)
def eval_value_ops(self, sess, graph, metrics):
return {item[0]: sess.run([item[1][0]]) for item in metrics.items()}
def mask_by_distance(self, distance_thresh, boxes_3d, *args):
mask = np.linalg.norm(boxes_3d[:, 0:2], axis=1) < distance_thresh + 0.5
boxes_3d = boxes_3d[mask]
ret_ans = [boxes_3d]
for arg in args:
ret_ans.append(arg[mask])
return tuple(ret_ans)
def waymo_evaluation(self, prediction_infos, gt_infos, class_name, distance_thresh=100, fake_gt_infos=True):
print('Start the waymo evaluation...')
assert len(prediction_infos) == len(gt_infos), '%d vs %d' % (prediction_infos.__len__(), gt_infos.__len__())
tf.compat.v1.disable_eager_execution()
pd_frameid, pd_boxes3d, pd_type, pd_score, pd_overlap_nlz, _ = self.generate_waymo_type_results(
prediction_infos, class_name, is_gt=False
)
gt_frameid, gt_boxes3d, gt_type, gt_score, gt_overlap_nlz, gt_difficulty = self.generate_waymo_type_results(
gt_infos, class_name, is_gt=True, fake_gt_infos=fake_gt_infos
)
pd_boxes3d, pd_frameid, pd_type, pd_score, pd_overlap_nlz = self.mask_by_distance(
distance_thresh, pd_boxes3d, pd_frameid, pd_type, pd_score, pd_overlap_nlz
)
gt_boxes3d, gt_frameid, gt_type, gt_score, gt_difficulty = self.mask_by_distance(
distance_thresh, gt_boxes3d, gt_frameid, gt_type, gt_score, gt_difficulty
)
print('Number: (pd, %d) VS. (gt, %d)' % (len(pd_boxes3d), len(gt_boxes3d)))
print('Level 1: %d, Level2: %d)' % ((gt_difficulty == 1).sum(), (gt_difficulty == 2).sum()))
if pd_score.max() > 1:
# assert pd_score.max() <= 1.0, 'Waymo evaluation only supports normalized scores'
pd_score = 1 / (1 + np.exp(-pd_score))
print('Warning: Waymo evaluation only supports normalized scores')
graph = tf.Graph()
metrics = self.build_graph(graph)
with self.test_session(graph=graph) as sess:
sess.run(tf.compat.v1.initializers.local_variables())
self.run_eval_ops(
sess, graph, metrics, pd_frameid, pd_boxes3d, pd_type, pd_score, pd_overlap_nlz,
gt_frameid, gt_boxes3d, gt_type, gt_difficulty,
)
with tf.compat.v1.variable_scope('detection_metrics', reuse=True):
aps = self.eval_value_ops(sess, graph, metrics)
return aps
def main():
parser = argparse.ArgumentParser(description='arg parser')
parser.add_argument('--pred_infos', type=str, default=None, help='pickle file')
parser.add_argument('--gt_infos', type=str, default=None, help='pickle file')
parser.add_argument('--class_names', type=str, nargs='+', default=['Vehicle', 'Pedestrian', 'Cyclist'], help='')
parser.add_argument('--sampled_interval', type=int, default=5, help='sampled interval for GT sequences')
args = parser.parse_args()
pred_infos = pickle.load(open(args.pred_infos, 'rb'))
gt_infos = pickle.load(open(args.gt_infos, 'rb'))
print('Start to evaluate the waymo format results...')
eval = OpenPCDetWaymoDetectionMetricsEstimator()
gt_infos_dst = []
for idx in range(0, len(gt_infos), args.sampled_interval):
cur_info = gt_infos[idx]['annos']
cur_info['frame_id'] = gt_infos[idx]['frame_id']
gt_infos_dst.append(cur_info)
waymo_AP = eval.waymo_evaluation(
pred_infos, gt_infos_dst, class_name=args.class_names, distance_thresh=1000, fake_gt_infos=True
)
print(waymo_AP)
if __name__ == '__main__':
main()
# OpenPCDet PyTorch Dataloader and Evaluation Tools for Waymo Open Dataset
# Reference https://github.com/open-mmlab/OpenPCDet
# Written by Shaoshuai Shi, Chaoxu Guo
# All Rights Reserved 2019-2020.
import os
import pickle
import numpy as np
from ...utils import common_utils
import tensorflow as tf
from waymo_open_dataset.utils import frame_utils, transform_utils, range_image_utils
from waymo_open_dataset import dataset_pb2
try:
tf.enable_eager_execution()
except:
pass
WAYMO_CLASSES = ['unknown', 'Vehicle', 'Pedestrian', 'Sign', 'Cyclist']
def generate_labels(frame):
obj_name, difficulty, dimensions, locations, heading_angles = [], [], [], [], []
tracking_difficulty, speeds, accelerations, obj_ids = [], [], [], []
laser_labels = frame.laser_labels
for i in range(len(laser_labels)):
box = laser_labels[i].box
class_ind = laser_labels[i].type
loc = [box.center_x, box.center_y, box.center_z]
heading_angles.append(box.heading)
obj_name.append(WAYMO_CLASSES[class_ind])
difficulty.append(laser_labels[i].detection_difficulty_level)
tracking_difficulty.append(laser_labels[i].tracking_difficulty_level)
dimensions.append([box.length, box.width, box.height]) # lwh in unified coordinate of OpenPCDet
locations.append(loc)
obj_ids.append(laser_labels[i].id)
annotations = {}
annotations['name'] = np.array(obj_name)
annotations['difficulty'] = np.array(difficulty)
annotations['dimensions'] = np.array(dimensions)
annotations['location'] = np.array(locations)
annotations['heading_angles'] = np.array(heading_angles)
annotations['obj_ids'] = np.array(obj_ids)
annotations['tracking_difficulty'] = np.array(tracking_difficulty)
annotations = common_utils.drop_info_with_name(annotations, name='unknown')
if annotations['name'].__len__() > 0:
gt_boxes_lidar = np.concatenate([
annotations['location'], annotations['dimensions'], annotations['heading_angles'][..., np.newaxis]],
axis=1
)
else:
gt_boxes_lidar = np.zeros((0, 7))
annotations['gt_boxes_lidar'] = gt_boxes_lidar
return annotations
def convert_range_image_to_point_cloud(frame, range_images, camera_projections, range_image_top_pose, ri_index=0):
"""
Modified from the codes of Waymo Open Dataset.
Convert range images to point cloud.
Args:
frame: open dataset frame
range_images: A dict of {laser_name, [range_image_first_return, range_image_second_return]}.
camera_projections: A dict of {laser_name,
[camera_projection_from_first_return, camera_projection_from_second_return]}.
range_image_top_pose: range image pixel pose for top lidar.
ri_index: 0 for the first return, 1 for the second return.
Returns:
points: {[N, 3]} list of 3d lidar points of length 5 (number of lidars).
cp_points: {[N, 6]} list of camera projections of length 5 (number of lidars).
"""
calibrations = sorted(frame.context.laser_calibrations, key=lambda c: c.name)
points = []
cp_points = []
points_NLZ = []
points_intensity = []
points_elongation = []
frame_pose = tf.convert_to_tensor(np.reshape(np.array(frame.pose.transform), [4, 4]))
# [H, W, 6]
range_image_top_pose_tensor = tf.reshape(
tf.convert_to_tensor(range_image_top_pose.data), range_image_top_pose.shape.dims
)
# [H, W, 3, 3]
range_image_top_pose_tensor_rotation = transform_utils.get_rotation_matrix(
range_image_top_pose_tensor[..., 0], range_image_top_pose_tensor[..., 1],
range_image_top_pose_tensor[..., 2])
range_image_top_pose_tensor_translation = range_image_top_pose_tensor[..., 3:]
range_image_top_pose_tensor = transform_utils.get_transform(
range_image_top_pose_tensor_rotation,
range_image_top_pose_tensor_translation)
for c in calibrations:
range_image = range_images[c.name][ri_index]
if len(c.beam_inclinations) == 0: # pylint: disable=g-explicit-length-test
beam_inclinations = range_image_utils.compute_inclination(
tf.constant([c.beam_inclination_min, c.beam_inclination_max]),
height=range_image.shape.dims[0])
else:
beam_inclinations = tf.constant(c.beam_inclinations)
beam_inclinations = tf.reverse(beam_inclinations, axis=[-1])
extrinsic = np.reshape(np.array(c.extrinsic.transform), [4, 4])
range_image_tensor = tf.reshape(
tf.convert_to_tensor(range_image.data), range_image.shape.dims)
pixel_pose_local = None
frame_pose_local = None
if c.name == dataset_pb2.LaserName.TOP:
pixel_pose_local = range_image_top_pose_tensor
pixel_pose_local = tf.expand_dims(pixel_pose_local, axis=0)
frame_pose_local = tf.expand_dims(frame_pose, axis=0)
range_image_mask = range_image_tensor[..., 0] > 0
range_image_NLZ = range_image_tensor[..., 3]
range_image_intensity = range_image_tensor[..., 1]
range_image_elongation = range_image_tensor[..., 2]
range_image_cartesian = range_image_utils.extract_point_cloud_from_range_image(
tf.expand_dims(range_image_tensor[..., 0], axis=0),
tf.expand_dims(extrinsic, axis=0),
tf.expand_dims(tf.convert_to_tensor(beam_inclinations), axis=0),
pixel_pose=pixel_pose_local,
frame_pose=frame_pose_local)
range_image_cartesian = tf.squeeze(range_image_cartesian, axis=0)
points_tensor = tf.gather_nd(range_image_cartesian,
tf.where(range_image_mask))
points_NLZ_tensor = tf.gather_nd(range_image_NLZ, tf.compat.v1.where(range_image_mask))
points_intensity_tensor = tf.gather_nd(range_image_intensity, tf.compat.v1.where(range_image_mask))
points_elongation_tensor = tf.gather_nd(range_image_elongation, tf.compat.v1.where(range_image_mask))
cp = camera_projections[c.name][0]
cp_tensor = tf.reshape(tf.convert_to_tensor(cp.data), cp.shape.dims)
cp_points_tensor = tf.gather_nd(cp_tensor, tf.where(range_image_mask))
points.append(points_tensor.numpy())
cp_points.append(cp_points_tensor.numpy())
points_NLZ.append(points_NLZ_tensor.numpy())
points_intensity.append(points_intensity_tensor.numpy())
points_elongation.append(points_elongation_tensor.numpy())
return points, cp_points, points_NLZ, points_intensity, points_elongation
def save_lidar_points(frame, cur_save_path):
range_images, camera_projections, range_image_top_pose = \
frame_utils.parse_range_image_and_camera_projection(frame)
points, cp_points, points_in_NLZ_flag, points_intensity, points_elongation = \
convert_range_image_to_point_cloud(frame, range_images, camera_projections, range_image_top_pose)
# 3d points in vehicle frame.
points_all = np.concatenate(points, axis=0)
points_in_NLZ_flag = np.concatenate(points_in_NLZ_flag, axis=0).reshape(-1, 1)
points_intensity = np.concatenate(points_intensity, axis=0).reshape(-1, 1)
points_elongation = np.concatenate(points_elongation, axis=0).reshape(-1, 1)
num_points_of_each_lidar = [point.shape[0] for point in points]
save_points = np.concatenate([
points_all, points_intensity, points_elongation, points_in_NLZ_flag
], axis=-1).astype(np.float32)
np.save(cur_save_path, save_points)
# print('saving to ', cur_save_path)
return num_points_of_each_lidar
def process_single_sequence(sequence_file, save_path, sampled_interval, has_label=True):
sequence_name = os.path.splitext(os.path.basename(sequence_file))[0]
# print('Load record (sampled_interval=%d): %s' % (sampled_interval, sequence_name))
if not sequence_file.exists():
print('NotFoundError: %s' % sequence_file)
return []
dataset = tf.data.TFRecordDataset(str(sequence_file), compression_type='')
cur_save_dir = save_path / sequence_name
cur_save_dir.mkdir(parents=True, exist_ok=True)
pkl_file = cur_save_dir / ('%s.pkl' % sequence_name)
sequence_infos = []
if pkl_file.exists():
sequence_infos = pickle.load(open(pkl_file, 'rb'))
print('Skip sequence since it has been processed before: %s' % pkl_file)
return sequence_infos
for cnt, data in enumerate(dataset):
if cnt % sampled_interval != 0:
continue
# print(sequence_name, cnt)
frame = dataset_pb2.Frame()
frame.ParseFromString(bytearray(data.numpy()))
info = {}
pc_info = {'num_features': 5, 'lidar_sequence': sequence_name, 'sample_idx': cnt}
info['point_cloud'] = pc_info
info['frame_id'] = sequence_name + ('_%03d' % cnt)
image_info = {}
for j in range(5):
width = frame.context.camera_calibrations[j].width
height = frame.context.camera_calibrations[j].height
image_info.update({'image_shape_%d' % j: (height, width)})
info['image'] = image_info
pose = np.array(frame.pose.transform, dtype=np.float32).reshape(4, 4)
info['pose'] = pose
if has_label:
annotations = generate_labels(frame)
info['annos'] = annotations
num_points_of_each_lidar = save_lidar_points(frame, cur_save_dir / ('%04d.npy' % cnt))
info['num_points_of_each_lidar'] = num_points_of_each_lidar
sequence_infos.append(info)
with open(pkl_file, 'wb') as f:
pickle.dump(sequence_infos, f)
print('Infos are saved to (sampled_interval=%d): %s' % (sampled_interval, pkl_file))
return sequence_infos
DATASET: 'WaymoDataset'
DATA_PATH: '../data/waymo'
PROCESSED_DATA_TAG: 'waymo_processed_data'
POINT_CLOUD_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4]
DATA_SPLIT: {
'train': train,
'test': val
}
SAMPLED_INTERVAL: {
'train': 5,
'test': 5
}
DATA_AUGMENTOR:
DISABLE_AUG_LIST: ['placeholder']
AUG_CONFIG_LIST:
- NAME: gt_sampling
USE_ROAD_PLANE: False
DB_INFO_PATH:
- pcdet_waymo_dbinfos_train_sampled_10.pkl
PREPARE: {
filter_by_min_points: ['Vehicle:5', 'Pedestrian:5', 'Cyclist:5'],
filter_by_difficulty: [-1],
}
SAMPLE_GROUPS: ['Vehicle:15', 'Pedestrian:10', 'Cyclist:10']
NUM_POINT_FEATURES: 5
REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0]
LIMIT_WHOLE_SCENE: True
- NAME: random_world_flip
ALONG_AXIS_LIST: ['x', 'y']
- NAME: random_world_rotation
WORLD_ROT_ANGLE: [-0.78539816, 0.78539816]
- NAME: random_world_scaling
WORLD_SCALE_RANGE: [0.95, 1.05]
POINT_FEATURE_ENCODING: {
encoding_type: absolute_coordinates_encoding,
used_feature_list: ['x', 'y', 'z', 'intensity', 'elongation'],
src_feature_list: ['x', 'y', 'z', 'intensity', 'elongation'],
}
DATA_PROCESSOR:
- NAME: mask_points_and_boxes_outside_range
REMOVE_OUTSIDE_BOXES: True
- NAME: shuffle_points
SHUFFLE_ENABLED: {
'train': True,
'test': True
}
- NAME: transform_points_to_voxels
VOXEL_SIZE: [0.1, 0.1, 0.15]
MAX_POINTS_PER_VOXEL: 5
MAX_NUMBER_OF_VOXELS: {
'train': 80000,
'test': 90000
}
CLASS_NAMES: ['Vehicle', 'Pedestrian', 'Cyclist']
DATA_CONFIG:
_BASE_CONFIG_: cfgs/dataset_configs/waymo_dataset.yaml
MODEL:
NAME: PartA2Net
VFE:
NAME: MeanVFE
BACKBONE_3D:
NAME: UNetV2
MAP_TO_BEV:
NAME: HeightCompression
NUM_BEV_FEATURES: 256
BACKBONE_2D:
NAME: BaseBEVBackbone
LAYER_NUMS: [5, 5]
LAYER_STRIDES: [1, 2]
NUM_FILTERS: [128, 256]
UPSAMPLE_STRIDES: [1, 2]
NUM_UPSAMPLE_FILTERS: [256, 256]
DENSE_HEAD:
NAME: AnchorHeadSingle
CLASS_AGNOSTIC: False
USE_DIRECTION_CLASSIFIER: True
DIR_OFFSET: 0.78539
DIR_LIMIT_OFFSET: 0.0
NUM_DIR_BINS: 2
ANCHOR_GENERATOR_CONFIG: [
{
'class_name': 'Vehicle',
'anchor_sizes': [[4.7, 2.1, 1.7]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.55,
'unmatched_threshold': 0.4
},
{
'class_name': 'Pedestrian',
'anchor_sizes': [[0.91, 0.86, 1.73]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.5,
'unmatched_threshold': 0.35
},
{
'class_name': 'Cyclist',
'anchor_sizes': [[1.78, 0.84, 1.78]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.5,
'unmatched_threshold': 0.35
}
]
TARGET_ASSIGNER_CONFIG:
NAME: AxisAlignedTargetAssigner
POS_FRACTION: -1.0
SAMPLE_SIZE: 512
NORM_BY_NUM_EXAMPLES: False
MATCH_HEIGHT: False
BOX_CODER: ResidualCoder
LOSS_CONFIG:
LOSS_WEIGHTS: {
'cls_weight': 1.0,
'loc_weight': 2.0,
'dir_weight': 0.2,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
POINT_HEAD:
NAME: PointIntraPartOffsetHead
CLS_FC: []
PART_FC: []
CLASS_AGNOSTIC: True
TARGET_CONFIG:
GT_EXTRA_WIDTH: [0.2, 0.2, 0.2]
LOSS_CONFIG:
LOSS_REG: smooth-l1
LOSS_WEIGHTS: {
'point_cls_weight': 1.0,
'point_part_weight': 1.0
}
ROI_HEAD:
NAME: PartA2FCHead
CLASS_AGNOSTIC: True
SHARED_FC: [256, 256, 256]
CLS_FC: [256, 256]
REG_FC: [256, 256]
DP_RATIO: 0.3
SEG_MASK_SCORE_THRESH: 0.3
NMS_CONFIG:
TRAIN:
NMS_TYPE: nms_gpu
MULTI_CLASSES_NMS: False
NMS_PRE_MAXSIZE: 9000
NMS_POST_MAXSIZE: 512
NMS_THRESH: 0.8
TEST:
NMS_TYPE: nms_gpu
MULTI_CLASSES_NMS: False
NMS_PRE_MAXSIZE: 1024
NMS_POST_MAXSIZE: 100
NMS_THRESH: 0.7
ROI_AWARE_POOL:
POOL_SIZE: 10
NUM_FEATURES: 128
MAX_POINTS_PER_VOXEL: 128
TARGET_CONFIG:
BOX_CODER: ResidualCoder
ROI_PER_IMAGE: 128
FG_RATIO: 0.5
SAMPLE_ROI_BY_EACH_CLASS: True
CLS_SCORE_TYPE: roi_iou
CLS_FG_THRESH: 0.75
CLS_BG_THRESH: 0.25
CLS_BG_THRESH_LO: 0.1
HARD_BG_RATIO: 0.8
REG_FG_THRESH: 0.65
LOSS_CONFIG:
CLS_LOSS: BinaryCrossEntropy
REG_LOSS: smooth-l1
CORNER_LOSS_REGULARIZATION: True
LOSS_WEIGHTS: {
'rcnn_cls_weight': 1.0,
'rcnn_reg_weight': 1.0,
'rcnn_corner_weight': 1.0,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
POST_PROCESSING:
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
SCORE_THRESH: 0.1
OUTPUT_RAW_SCORE: False
EVAL_METRIC: waymo
NMS_CONFIG:
MULTI_CLASSES_NMS: False
NMS_TYPE: nms_gpu
NMS_THRESH: 0.1
NMS_PRE_MAXSIZE: 4096
NMS_POST_MAXSIZE: 500
OPTIMIZATION:
BATCH_SIZE_PER_GPU: 3
NUM_EPOCHS: 30
OPTIMIZER: adam_onecycle
LR: 0.01
WEIGHT_DECAY: 0.01
MOMENTUM: 0.9
MOMS: [0.95, 0.85]
PCT_START: 0.4
DIV_FACTOR: 10
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001
LR_WARMUP: False
WARMUP_EPOCH: 1
GRAD_NORM_CLIP: 10
\ No newline at end of file
CLASS_NAMES: ['Vehicle', 'Pedestrian', 'Cyclist']
DATA_CONFIG:
_BASE_CONFIG_: cfgs/dataset_configs/waymo_dataset.yaml
MODEL:
NAME: PVRCNN
VFE:
NAME: MeanVFE
BACKBONE_3D:
NAME: VoxelBackBone8x
MAP_TO_BEV:
NAME: HeightCompression
NUM_BEV_FEATURES: 256
BACKBONE_2D:
NAME: BaseBEVBackbone
LAYER_NUMS: [5, 5]
LAYER_STRIDES: [1, 2]
NUM_FILTERS: [128, 256]
UPSAMPLE_STRIDES: [1, 2]
NUM_UPSAMPLE_FILTERS: [256, 256]
DENSE_HEAD:
NAME: AnchorHeadSingle
CLASS_AGNOSTIC: False
USE_DIRECTION_CLASSIFIER: True
DIR_OFFSET: 0.78539
DIR_LIMIT_OFFSET: 0.0
NUM_DIR_BINS: 2
ANCHOR_GENERATOR_CONFIG: [
{
'class_name': 'Vehicle',
'anchor_sizes': [[4.7, 2.1, 1.7]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.55,
'unmatched_threshold': 0.4
},
{
'class_name': 'Pedestrian',
'anchor_sizes': [[0.91, 0.86, 1.73]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.5,
'unmatched_threshold': 0.35
},
{
'class_name': 'Cyclist',
'anchor_sizes': [[1.78, 0.84, 1.78]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.5,
'unmatched_threshold': 0.35
}
]
TARGET_ASSIGNER_CONFIG:
NAME: AxisAlignedTargetAssigner
POS_FRACTION: -1.0
SAMPLE_SIZE: 512
NORM_BY_NUM_EXAMPLES: False
MATCH_HEIGHT: False
BOX_CODER: ResidualCoder
LOSS_CONFIG:
LOSS_WEIGHTS: {
'cls_weight': 1.0,
'loc_weight': 2.0,
'dir_weight': 0.2,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
PFE:
NAME: VoxelSetAbstraction
POINT_SOURCE: raw_points
NUM_KEYPOINTS: 4096
NUM_OUTPUT_FEATURES: 128
SAMPLE_METHOD: FPS
FEATURES_SOURCE: ['bev', 'x_conv3', 'x_conv4', 'raw_points']
SA_LAYER:
raw_points:
MLPS: [[16, 16], [16, 16]]
POOL_RADIUS: [0.4, 0.8]
NSAMPLE: [16, 16]
x_conv1:
DOWNSAMPLE_FACTOR: 1
MLPS: [[16, 16], [16, 16]]
POOL_RADIUS: [0.4, 0.8]
NSAMPLE: [16, 16]
x_conv2:
DOWNSAMPLE_FACTOR: 2
MLPS: [[32, 32], [32, 32]]
POOL_RADIUS: [0.8, 1.2]
NSAMPLE: [16, 32]
x_conv3:
DOWNSAMPLE_FACTOR: 4
MLPS: [[64, 64], [64, 64]]
POOL_RADIUS: [1.2, 2.4]
NSAMPLE: [16, 32]
x_conv4:
DOWNSAMPLE_FACTOR: 8
MLPS: [[64, 64], [64, 64]]
POOL_RADIUS: [2.4, 4.8]
NSAMPLE: [16, 32]
POINT_HEAD:
NAME: PointHeadSimple
CLS_FC: [256, 256]
CLASS_AGNOSTIC: True
USE_POINT_FEATURES_BEFORE_FUSION: True
TARGET_CONFIG:
GT_EXTRA_WIDTH: [0.2, 0.2, 0.2]
LOSS_CONFIG:
LOSS_REG: smooth-l1
LOSS_WEIGHTS: {
'point_cls_weight': 1.0,
}
ROI_HEAD:
NAME: PVRCNNHead
CLASS_AGNOSTIC: True
SHARED_FC: [256, 256]
CLS_FC: [256, 256]
REG_FC: [256, 256]
DP_RATIO: 0.3
NMS_CONFIG:
TRAIN:
NMS_TYPE: nms_gpu
MULTI_CLASSES_NMS: False
NMS_PRE_MAXSIZE: 9000
NMS_POST_MAXSIZE: 512
NMS_THRESH: 0.8
TEST:
NMS_TYPE: nms_gpu
MULTI_CLASSES_NMS: False
NMS_PRE_MAXSIZE: 1024
NMS_POST_MAXSIZE: 100
NMS_THRESH: 0.7
ROI_GRID_POOL:
GRID_SIZE: 6
MLPS: [[64, 64], [64, 64]]
POOL_RADIUS: [0.8, 1.6]
NSAMPLE: [16, 16]
POOL_METHOD: max_pool
TARGET_CONFIG:
BOX_CODER: ResidualCoder
ROI_PER_IMAGE: 128
FG_RATIO: 0.5
SAMPLE_ROI_BY_EACH_CLASS: True
CLS_SCORE_TYPE: roi_iou
CLS_FG_THRESH: 0.75
CLS_BG_THRESH: 0.25
CLS_BG_THRESH_LO: 0.1
HARD_BG_RATIO: 0.8
REG_FG_THRESH: 0.55
LOSS_CONFIG:
CLS_LOSS: BinaryCrossEntropy
REG_LOSS: smooth-l1
CORNER_LOSS_REGULARIZATION: True
LOSS_WEIGHTS: {
'rcnn_cls_weight': 1.0,
'rcnn_reg_weight': 1.0,
'rcnn_corner_weight': 1.0,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
POST_PROCESSING:
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
SCORE_THRESH: 0.1
OUTPUT_RAW_SCORE: False
EVAL_METRIC: waymo
NMS_CONFIG:
MULTI_CLASSES_NMS: False
NMS_TYPE: nms_gpu
NMS_THRESH: 0.1
NMS_PRE_MAXSIZE: 4096
NMS_POST_MAXSIZE: 500
OPTIMIZATION:
BATCH_SIZE_PER_GPU: 2
NUM_EPOCHS: 30
OPTIMIZER: adam_onecycle
LR: 0.01
WEIGHT_DECAY: 0.001
MOMENTUM: 0.9
MOMS: [0.95, 0.85]
PCT_START: 0.4
DIV_FACTOR: 10
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001
LR_WARMUP: False
WARMUP_EPOCH: 1
GRAD_NORM_CLIP: 10
\ No newline at end of file
CLASS_NAMES: ['Vehicle', 'Pedestrian', 'Cyclist']
DATA_CONFIG:
_BASE_CONFIG_: cfgs/dataset_configs/waymo_dataset.yaml
MODEL:
NAME: SECONDNet
VFE:
NAME: MeanVFE
BACKBONE_3D:
NAME: VoxelBackBone8x
MAP_TO_BEV:
NAME: HeightCompression
NUM_BEV_FEATURES: 256
BACKBONE_2D:
NAME: BaseBEVBackbone
LAYER_NUMS: [5, 5]
LAYER_STRIDES: [1, 2]
NUM_FILTERS: [128, 256]
UPSAMPLE_STRIDES: [1, 2]
NUM_UPSAMPLE_FILTERS: [256, 256]
DENSE_HEAD:
NAME: AnchorHeadSingle
CLASS_AGNOSTIC: False
USE_DIRECTION_CLASSIFIER: True
DIR_OFFSET: 0.78539
DIR_LIMIT_OFFSET: 0.0
NUM_DIR_BINS: 2
ANCHOR_GENERATOR_CONFIG: [
{
'class_name': 'Vehicle',
'anchor_sizes': [[4.7, 2.1, 1.7]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.55,
'unmatched_threshold': 0.4
},
{
'class_name': 'Pedestrian',
'anchor_sizes': [[0.91, 0.86, 1.73]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.5,
'unmatched_threshold': 0.35
},
{
'class_name': 'Cyclist',
'anchor_sizes': [[1.78, 0.84, 1.78]],
'anchor_rotations': [0, 1.57],
'anchor_bottom_heights': [0],
'align_center': False,
'feature_map_stride': 8,
'matched_threshold': 0.5,
'unmatched_threshold': 0.35
}
]
TARGET_ASSIGNER_CONFIG:
NAME: AxisAlignedTargetAssigner
POS_FRACTION: -1.0
SAMPLE_SIZE: 512
NORM_BY_NUM_EXAMPLES: False
MATCH_HEIGHT: False
BOX_CODER: ResidualCoder
LOSS_CONFIG:
LOSS_WEIGHTS: {
'cls_weight': 1.0,
'loc_weight': 2.0,
'dir_weight': 0.2,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
POST_PROCESSING:
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
SCORE_THRESH: 0.1
OUTPUT_RAW_SCORE: False
EVAL_METRIC: waymo
NMS_CONFIG:
MULTI_CLASSES_NMS: False
NMS_TYPE: nms_gpu
NMS_THRESH: 0.01
NMS_PRE_MAXSIZE: 4096
NMS_POST_MAXSIZE: 500
OPTIMIZATION:
BATCH_SIZE_PER_GPU: 4
NUM_EPOCHS: 30
OPTIMIZER: adam_onecycle
LR: 0.003
WEIGHT_DECAY: 0.01
MOMENTUM: 0.9
MOMS: [0.95, 0.85]
PCT_START: 0.4
DIV_FACTOR: 10
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001
LR_WARMUP: False
WARMUP_EPOCH: 1
GRAD_NORM_CLIP: 10
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment