├── .gitignore
└── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── _static
├── example.png
└── example_no_refine.png
├── chainer_dense_fusion
├── __init__.py
├── datasets
│ ├── __init__.py
│ └── ycb
│ │ ├── __init__.py
│ │ ├── config
│ │ ├── label_names.txt
│ │ ├── train.txt
│ │ └── val.txt
│ │ └── ycb_video_dataset.py
├── links
│ ├── __init__.py
│ └── model
│ │ ├── __init__.py
│ │ ├── dense_fusion.py
│ │ ├── posenet.py
│ │ ├── pspnet.py
│ │ └── resnet.py
├── utils.py
└── visualizations
│ ├── __init__.py
│ └── vis_6d_pose_estimation.py
├── examples
├── dense_fusion
│ ├── README.md
│ ├── demo.py
│ ├── pth2npz.py
│ └── pth2npz_posenet.py
└── ycb
│ ├── README.md
│ └── visualize_dataset.py
├── requirements.txt
└── setup.py
/.gitignore/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 | MANIFEST
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 | .pytest_cache/
49 |
50 | # Translations
51 | *.mo
52 | *.pot
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 | db.sqlite3
58 |
59 | # Flask stuff:
60 | instance/
61 | .webassets-cache
62 |
63 | # Scrapy stuff:
64 | .scrapy
65 |
66 | # Sphinx documentation
67 | docs/_build/
68 |
69 | # PyBuilder
70 | target/
71 |
72 | # Jupyter Notebook
73 | .ipynb_checkpoints
74 |
75 | # pyenv
76 | .python-version
77 |
78 | # celery beat schedule file
79 | celerybeat-schedule
80 |
81 | # SageMath parsed files
82 | *.sage.py
83 |
84 | # Environments
85 | .env
86 | .venv
87 | env/
88 | venv/
89 | ENV/
90 | env.bak/
91 | venv.bak/
92 |
93 | # Spyder project settings
94 | .spyderproject
95 | .spyproject
96 |
97 | # Rope project settings
98 | .ropeproject
99 |
100 | # mkdocs documentation
101 | /site
102 |
103 | # mypy
104 | .mypy_cache/
105 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: python
2 |
3 | cache:
4 | - ccache
5 | - pip
6 |
7 | jobs:
8 | include:
9 | - os: linux
10 | python: 2.7
11 | - os: linux
12 | python: 3.6
13 | - os: linux
14 | python: 3.7
15 | - os: linux
16 | python: 3.8
17 | allow_failures:
18 | - os: linux
19 | python: 2.7
20 |
21 | before_install:
22 | - wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -O miniconda.sh
23 | - bash miniconda.sh -b -p $HOME/miniconda
24 | - export PATH="$HOME/miniconda/bin:$PATH"
25 | - conda config --set always_yes yes --set changeps1 no
26 | - conda update -q conda
27 | - conda info -a
28 |
29 | install:
30 | - conda create --name=dense-fusion python=$TRAVIS_PYTHON_VERSION -q -y
31 | - source activate dense-fusion
32 | - pip install opencv-python
33 | - pip install -r requirements.txt
34 | - pip install -e .
35 |
36 | before_script:
37 | - pip install flake8
38 | - pip install hacking
39 | - pip install autopep8
40 |
41 | script:
42 | - flake8 .
43 |
44 | notifications:
45 | email: false
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Shingo Kitagawa
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | chainer-dense-fusion
2 | ====================
3 |
4 | [](https://travis-ci.com/knorth55/chainer-dense-fusion)
5 |
6 |
7 |
8 | This is [Chainer](https://github.com/chainer/chainer) implementation of [DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion](https://arxiv.org/abs/1901.04780).
9 |
10 | Original PyTorch repository is [j96w/DenseFusion](https://github.com/j96w/DenseFusion).
11 |
12 | Requirement
13 | -----------
14 |
15 | - [CuPy](https://github.com/cupy/cupy)
16 | - [Chainer](https://github.com/chainer/chainer)
17 | - [ChainerCV](https://github.com/chainer/chainercv)
18 | - OpenCV
19 |
20 | Installation
21 | ------------
22 |
23 | We recommend to use [Anacoda](https://anaconda.org/).
24 |
25 | ```bash
26 | # Requirement installation
27 | conda create -n dense-fusion python=3.6
28 | source activate dense-fusion
29 | pip install opencv-python
30 | pip install cupy
31 |
32 | # Installation
33 | git clone https://github.com/knorth55/chainer-dense-fusion.git
34 | cd chainer-dense-fusion/
35 | pip install -e .
36 | ```
37 |
38 | Inference
39 | ---------
40 |
41 | ```bash
42 | cd examples/dense_fusion/
43 | python demo.py --random
44 | ```
45 |
46 | TODO
47 | ----
48 | - YCB Video Dataset
49 | - [x] Add estimator inference script.
50 | - [x] Add refiner inference script.
51 | - [ ] Add training script.
52 | - [ ] Reproduce original accuracy.
53 |
54 | LICENSE
55 | -------
56 | [MIT LICENSE](LICENSE)
57 |
--------------------------------------------------------------------------------
/_static/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/knorth55/chainer-dense-fusion/8ff53173d7071fc2cfcd05b1e0b2c544aeed090b/_static/example.png
--------------------------------------------------------------------------------
/_static/example_no_refine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/knorth55/chainer-dense-fusion/8ff53173d7071fc2cfcd05b1e0b2c544aeed090b/_static/example_no_refine.png
--------------------------------------------------------------------------------
/chainer_dense_fusion/__init__.py:
--------------------------------------------------------------------------------
1 | from chainer_dense_fusion import datasets # NOQA
2 | from chainer_dense_fusion import links # NOQA
3 | from chainer_dense_fusion import visualizations # NOQA
4 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/datasets/__init__.py:
--------------------------------------------------------------------------------
1 | from chainer_dense_fusion.datasets import ycb # NOQA
2 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/datasets/ycb/__init__.py:
--------------------------------------------------------------------------------
1 | from chainer_dense_fusion.datasets.ycb.ycb_video_dataset import YCBVideoDataset # NOQA
2 | from chainer_dense_fusion.datasets.ycb.ycb_video_dataset import YCBVideoDatasetPoseCNNSegmented # NOQA
3 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/datasets/ycb/config/label_names.txt:
--------------------------------------------------------------------------------
1 | 002_master_chef_can
2 | 003_cracker_box
3 | 004_sugar_box
4 | 005_tomato_soup_can
5 | 006_mustard_bottle
6 | 007_tuna_fish_can
7 | 008_pudding_box
8 | 009_gelatin_box
9 | 010_potted_meat_can
10 | 011_banana
11 | 019_pitcher_base
12 | 021_bleach_cleanser
13 | 024_bowl
14 | 025_mug
15 | 035_power_drill
16 | 036_wood_block
17 | 037_scissors
18 | 040_large_marker
19 | 051_large_clamp
20 | 052_extra_large_clamp
21 | 061_foam_brick
22 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/datasets/ycb/config/val.txt:
--------------------------------------------------------------------------------
1 | data/0048/000001
2 | data/0048/000036
3 | data/0048/000047
4 | data/0048/000083
5 | data/0048/000112
6 | data/0048/000135
7 | data/0048/000155
8 | data/0048/000168
9 | data/0048/000181
10 | data/0048/000204
11 | data/0048/000220
12 | data/0048/000235
13 | data/0048/000252
14 | data/0048/000257
15 | data/0048/000261
16 | data/0048/000265
17 | data/0048/000277
18 | data/0048/000292
19 | data/0048/000294
20 | data/0048/000310
21 | data/0048/000311
22 | data/0048/000322
23 | data/0048/000326
24 | data/0048/000335
25 | data/0048/000337
26 | data/0048/000353
27 | data/0048/000356
28 | data/0048/000364
29 | data/0048/000373
30 | data/0048/000380
31 | data/0048/000388
32 | data/0048/000398
33 | data/0048/000401
34 | data/0048/000404
35 | data/0048/000415
36 | data/0048/000422
37 | data/0048/000435
38 | data/0048/000448
39 | data/0048/000464
40 | data/0048/000476
41 | data/0048/000485
42 | data/0048/000494
43 | data/0048/000510
44 | data/0048/000516
45 | data/0048/000529
46 | data/0048/000541
47 | data/0048/000549
48 | data/0048/000556
49 | data/0048/000567
50 | data/0048/000573
51 | data/0048/000581
52 | data/0048/000592
53 | data/0048/000605
54 | data/0048/000614
55 | data/0048/000626
56 | data/0048/000636
57 | data/0048/000648
58 | data/0048/000653
59 | data/0048/000656
60 | data/0048/000664
61 | data/0048/000672
62 | data/0048/000685
63 | data/0048/000694
64 | data/0048/000733
65 | data/0048/000734
66 | data/0048/000756
67 | data/0048/000779
68 | data/0048/000786
69 | data/0048/000803
70 | data/0048/000806
71 | data/0048/000818
72 | data/0048/000820
73 | data/0048/000821
74 | data/0048/000834
75 | data/0048/000836
76 | data/0048/000854
77 | data/0048/000855
78 | data/0048/000858
79 | data/0048/000862
80 | data/0048/000871
81 | data/0048/000874
82 | data/0048/000884
83 | data/0048/000892
84 | data/0048/000899
85 | data/0048/000902
86 | data/0048/000905
87 | data/0048/000907
88 | data/0048/000913
89 | data/0048/000919
90 | data/0048/000927
91 | data/0048/000937
92 | data/0048/000942
93 | data/0048/000943
94 | data/0048/000950
95 | data/0048/000958
96 | data/0048/000959
97 | data/0048/000971
98 | data/0048/000991
99 | data/0048/000996
100 | data/0048/001002
101 | data/0048/001012
102 | data/0048/001024
103 | data/0048/001027
104 | data/0048/001059
105 | data/0048/001065
106 | data/0048/001074
107 | data/0048/001075
108 | data/0048/001083
109 | data/0048/001087
110 | data/0048/001090
111 | data/0048/001094
112 | data/0048/001097
113 | data/0048/001103
114 | data/0048/001104
115 | data/0048/001107
116 | data/0048/001113
117 | data/0048/001119
118 | data/0048/001120
119 | data/0048/001122
120 | data/0048/001124
121 | data/0048/001126
122 | data/0048/001128
123 | data/0048/001132
124 | data/0048/001133
125 | data/0048/001135
126 | data/0048/001137
127 | data/0048/001146
128 | data/0048/001147
129 | data/0048/001149
130 | data/0048/001151
131 | data/0048/001154
132 | data/0048/001155
133 | data/0048/001156
134 | data/0048/001157
135 | data/0048/001158
136 | data/0048/001160
137 | data/0048/001165
138 | data/0048/001168
139 | data/0048/001169
140 | data/0048/001170
141 | data/0048/001171
142 | data/0048/001172
143 | data/0048/001173
144 | data/0048/001175
145 | data/0048/001177
146 | data/0048/001195
147 | data/0048/001199
148 | data/0048/001202
149 | data/0048/001205
150 | data/0048/001207
151 | data/0048/001211
152 | data/0048/001212
153 | data/0048/001219
154 | data/0048/001226
155 | data/0048/001231
156 | data/0048/001233
157 | data/0048/001235
158 | data/0048/001251
159 | data/0048/001261
160 | data/0048/001267
161 | data/0048/001275
162 | data/0048/001289
163 | data/0048/001296
164 | data/0048/001299
165 | data/0048/001300
166 | data/0048/001301
167 | data/0048/001302
168 | data/0048/001303
169 | data/0048/001304
170 | data/0048/001305
171 | data/0048/001307
172 | data/0048/001308
173 | data/0048/001309
174 | data/0048/001310
175 | data/0048/001313
176 | data/0048/001319
177 | data/0048/001328
178 | data/0048/001330
179 | data/0048/001333
180 | data/0048/001334
181 | data/0048/001337
182 | data/0048/001338
183 | data/0048/001343
184 | data/0048/001367
185 | data/0048/001397
186 | data/0048/001405
187 | data/0048/001412
188 | data/0048/001413
189 | data/0048/001426
190 | data/0048/001442
191 | data/0048/001457
192 | data/0048/001478
193 | data/0048/001493
194 | data/0048/001494
195 | data/0048/001513
196 | data/0048/001533
197 | data/0048/001534
198 | data/0048/001539
199 | data/0048/001540
200 | data/0048/001542
201 | data/0048/001543
202 | data/0048/001568
203 | data/0048/001569
204 | data/0048/001571
205 | data/0048/001572
206 | data/0048/001576
207 | data/0048/001577
208 | data/0048/001579
209 | data/0048/001580
210 | data/0048/001583
211 | data/0048/001586
212 | data/0048/001587
213 | data/0048/001588
214 | data/0048/001589
215 | data/0048/001595
216 | data/0048/001597
217 | data/0048/001602
218 | data/0048/001603
219 | data/0048/001604
220 | data/0048/001605
221 | data/0048/001608
222 | data/0048/001609
223 | data/0048/001611
224 | data/0048/001617
225 | data/0048/001619
226 | data/0048/001621
227 | data/0048/001622
228 | data/0048/001623
229 | data/0048/001624
230 | data/0048/001626
231 | data/0048/001627
232 | data/0048/001629
233 | data/0048/001631
234 | data/0048/001639
235 | data/0048/001641
236 | data/0048/001643
237 | data/0048/001644
238 | data/0048/001645
239 | data/0048/001647
240 | data/0048/001648
241 | data/0048/001649
242 | data/0048/001654
243 | data/0048/001656
244 | data/0048/001658
245 | data/0048/001666
246 | data/0048/001667
247 | data/0048/001669
248 | data/0048/001671
249 | data/0048/001672
250 | data/0048/001674
251 | data/0048/001675
252 | data/0048/001676
253 | data/0048/001678
254 | data/0048/001679
255 | data/0048/001682
256 | data/0048/001684
257 | data/0048/001685
258 | data/0048/001690
259 | data/0048/001691
260 | data/0048/001693
261 | data/0048/001696
262 | data/0048/001699
263 | data/0048/001701
264 | data/0048/001705
265 | data/0048/001707
266 | data/0048/001708
267 | data/0048/001709
268 | data/0048/001714
269 | data/0048/001715
270 | data/0048/001717
271 | data/0048/001719
272 | data/0048/001722
273 | data/0048/001723
274 | data/0048/001724
275 | data/0048/001725
276 | data/0048/001730
277 | data/0048/001731
278 | data/0048/001733
279 | data/0048/001735
280 | data/0048/001742
281 | data/0048/001744
282 | data/0048/001745
283 | data/0048/001749
284 | data/0048/001750
285 | data/0048/001753
286 | data/0048/001754
287 | data/0048/001759
288 | data/0048/001760
289 | data/0048/001763
290 | data/0048/001765
291 | data/0048/001766
292 | data/0048/001768
293 | data/0048/001769
294 | data/0048/001771
295 | data/0048/001772
296 | data/0048/001773
297 | data/0048/001776
298 | data/0048/001777
299 | data/0048/001779
300 | data/0048/001780
301 | data/0048/001783
302 | data/0048/001784
303 | data/0048/001785
304 | data/0048/001786
305 | data/0048/001787
306 | data/0048/001789
307 | data/0048/001794
308 | data/0048/001795
309 | data/0048/001796
310 | data/0048/001805
311 | data/0048/001806
312 | data/0048/001808
313 | data/0048/001810
314 | data/0048/001814
315 | data/0048/001819
316 | data/0048/001822
317 | data/0048/001823
318 | data/0048/001825
319 | data/0048/001826
320 | data/0048/001831
321 | data/0048/001834
322 | data/0048/001838
323 | data/0048/001840
324 | data/0048/001841
325 | data/0048/001842
326 | data/0048/001849
327 | data/0048/001854
328 | data/0048/001859
329 | data/0048/001862
330 | data/0048/001866
331 | data/0048/001870
332 | data/0048/001871
333 | data/0048/001872
334 | data/0048/001874
335 | data/0048/001879
336 | data/0048/001881
337 | data/0048/001884
338 | data/0048/001886
339 | data/0048/001888
340 | data/0048/001890
341 | data/0048/001892
342 | data/0048/001893
343 | data/0048/001894
344 | data/0048/001897
345 | data/0048/001898
346 | data/0048/001901
347 | data/0048/001902
348 | data/0048/001907
349 | data/0048/001913
350 | data/0048/001917
351 | data/0048/001921
352 | data/0048/001931
353 | data/0048/001932
354 | data/0048/001934
355 | data/0048/001939
356 | data/0048/001942
357 | data/0048/001945
358 | data/0048/001947
359 | data/0048/001949
360 | data/0048/001954
361 | data/0048/001957
362 | data/0048/001964
363 | data/0048/001965
364 | data/0048/001983
365 | data/0048/001985
366 | data/0048/001988
367 | data/0048/001991
368 | data/0048/001994
369 | data/0048/002004
370 | data/0048/002007
371 | data/0048/002015
372 | data/0048/002016
373 | data/0048/002021
374 | data/0048/002029
375 | data/0048/002037
376 | data/0048/002039
377 | data/0048/002040
378 | data/0048/002050
379 | data/0048/002051
380 | data/0048/002066
381 | data/0048/002069
382 | data/0048/002070
383 | data/0048/002083
384 | data/0048/002090
385 | data/0048/002104
386 | data/0048/002118
387 | data/0048/002133
388 | data/0048/002144
389 | data/0048/002160
390 | data/0048/002173
391 | data/0048/002175
392 | data/0048/002192
393 | data/0048/002198
394 | data/0048/002217
395 | data/0049/000001
396 | data/0049/000036
397 | data/0049/000047
398 | data/0049/000058
399 | data/0049/000065
400 | data/0049/000073
401 | data/0049/000091
402 | data/0049/000109
403 | data/0049/000125
404 | data/0049/000148
405 | data/0049/000170
406 | data/0049/000187
407 | data/0049/000206
408 | data/0049/000222
409 | data/0049/000230
410 | data/0049/000231
411 | data/0049/000235
412 | data/0049/000239
413 | data/0049/000242
414 | data/0049/000246
415 | data/0049/000247
416 | data/0049/000251
417 | data/0049/000252
418 | data/0049/000261
419 | data/0049/000262
420 | data/0049/000270
421 | data/0049/000273
422 | data/0049/000282
423 | data/0049/000289
424 | data/0049/000295
425 | data/0049/000304
426 | data/0049/000310
427 | data/0049/000315
428 | data/0049/000316
429 | data/0049/000324
430 | data/0049/000326
431 | data/0049/000333
432 | data/0049/000335
433 | data/0049/000348
434 | data/0049/000352
435 | data/0049/000357
436 | data/0049/000370
437 | data/0049/000376
438 | data/0049/000394
439 | data/0049/000405
440 | data/0049/000422
441 | data/0049/000427
442 | data/0049/000457
443 | data/0049/000461
444 | data/0049/000470
445 | data/0049/000474
446 | data/0049/000485
447 | data/0049/000489
448 | data/0049/000509
449 | data/0049/000511
450 | data/0049/000521
451 | data/0049/000526
452 | data/0049/000537
453 | data/0049/000542
454 | data/0049/000552
455 | data/0049/000558
456 | data/0049/000564
457 | data/0049/000570
458 | data/0049/000576
459 | data/0049/000591
460 | data/0049/000594
461 | data/0049/000617
462 | data/0049/000629
463 | data/0049/000631
464 | data/0049/000651
465 | data/0049/000669
466 | data/0049/000671
467 | data/0049/000693
468 | data/0049/000695
469 | data/0049/000711
470 | data/0049/000714
471 | data/0049/000735
472 | data/0049/000751
473 | data/0049/000762
474 | data/0049/000769
475 | data/0049/000783
476 | data/0049/000785
477 | data/0049/000798
478 | data/0049/000802
479 | data/0049/000811
480 | data/0049/000817
481 | data/0049/000825
482 | data/0049/000833
483 | data/0049/000840
484 | data/0049/000849
485 | data/0049/000858
486 | data/0049/000884
487 | data/0049/000900
488 | data/0049/000914
489 | data/0049/000949
490 | data/0049/000951
491 | data/0049/000981
492 | data/0049/000983
493 | data/0049/001009
494 | data/0049/001024
495 | data/0049/001036
496 | data/0049/001052
497 | data/0049/001067
498 | data/0049/001095
499 | data/0049/001102
500 | data/0049/001130
501 | data/0049/001144
502 | data/0049/001150
503 | data/0049/001157
504 | data/0049/001168
505 | data/0049/001172
506 | data/0049/001179
507 | data/0049/001187
508 | data/0049/001190
509 | data/0049/001205
510 | data/0049/001222
511 | data/0049/001229
512 | data/0049/001234
513 | data/0049/001247
514 | data/0049/001250
515 | data/0049/001262
516 | data/0049/001266
517 | data/0049/001269
518 | data/0049/001280
519 | data/0049/001283
520 | data/0049/001304
521 | data/0049/001305
522 | data/0049/001319
523 | data/0049/001321
524 | data/0049/001340
525 | data/0049/001344
526 | data/0049/001353
527 | data/0049/001356
528 | data/0049/001391
529 | data/0049/001408
530 | data/0049/001413
531 | data/0049/001429
532 | data/0049/001431
533 | data/0049/001441
534 | data/0049/001446
535 | data/0049/001461
536 | data/0049/001466
537 | data/0049/001474
538 | data/0049/001477
539 | data/0049/001488
540 | data/0049/001491
541 | data/0049/001499
542 | data/0049/001515
543 | data/0049/001518
544 | data/0049/001554
545 | data/0049/001557
546 | data/0049/001565
547 | data/0049/001568
548 | data/0049/001575
549 | data/0049/001582
550 | data/0049/001587
551 | data/0049/001592
552 | data/0049/001595
553 | data/0049/001614
554 | data/0049/001615
555 | data/0049/001618
556 | data/0049/001631
557 | data/0049/001641
558 | data/0049/001644
559 | data/0049/001655
560 | data/0049/001671
561 | data/0049/001677
562 | data/0049/001682
563 | data/0049/001688
564 | data/0049/001699
565 | data/0049/001704
566 | data/0049/001707
567 | data/0049/001719
568 | data/0049/001732
569 | data/0049/001743
570 | data/0049/001759
571 | data/0049/001760
572 | data/0049/001773
573 | data/0049/001776
574 | data/0049/001784
575 | data/0049/001789
576 | data/0049/001796
577 | data/0049/001804
578 | data/0049/001816
579 | data/0049/001828
580 | data/0049/001842
581 | data/0049/001848
582 | data/0049/001854
583 | data/0049/001857
584 | data/0049/001869
585 | data/0049/001875
586 | data/0049/001881
587 | data/0049/001886
588 | data/0049/001889
589 | data/0049/001902
590 | data/0049/001909
591 | data/0049/001926
592 | data/0049/001934
593 | data/0049/001936
594 | data/0049/001937
595 | data/0049/001968
596 | data/0049/001969
597 | data/0049/001988
598 | data/0049/001994
599 | data/0049/002012
600 | data/0049/002014
601 | data/0049/002035
602 | data/0049/002037
603 | data/0049/002043
604 | data/0049/002061
605 | data/0049/002064
606 | data/0049/002089
607 | data/0049/002097
608 | data/0049/002119
609 | data/0049/002123
610 | data/0049/002146
611 | data/0049/002151
612 | data/0049/002173
613 | data/0049/002196
614 | data/0049/002207
615 | data/0049/002219
616 | data/0049/002235
617 | data/0049/002275
618 | data/0049/002287
619 | data/0049/002315
620 | data/0049/002337
621 | data/0049/002365
622 | data/0050/000001
623 | data/0050/000041
624 | data/0050/000055
625 | data/0050/000076
626 | data/0050/000099
627 | data/0050/000111
628 | data/0050/000122
629 | data/0050/000142
630 | data/0050/000181
631 | data/0050/000204
632 | data/0050/000222
633 | data/0050/000231
634 | data/0050/000237
635 | data/0050/000241
636 | data/0050/000249
637 | data/0050/000252
638 | data/0050/000263
639 | data/0050/000265
640 | data/0050/000273
641 | data/0050/000275
642 | data/0050/000290
643 | data/0050/000293
644 | data/0050/000303
645 | data/0050/000315
646 | data/0050/000327
647 | data/0050/000337
648 | data/0050/000345
649 | data/0050/000347
650 | data/0050/000363
651 | data/0050/000366
652 | data/0050/000381
653 | data/0050/000386
654 | data/0050/000405
655 | data/0050/000413
656 | data/0050/000420
657 | data/0050/000437
658 | data/0050/000438
659 | data/0050/000464
660 | data/0050/000466
661 | data/0050/000483
662 | data/0050/000505
663 | data/0050/000509
664 | data/0050/000558
665 | data/0050/000588
666 | data/0050/000605
667 | data/0050/000610
668 | data/0050/000620
669 | data/0050/000623
670 | data/0050/000629
671 | data/0050/000633
672 | data/0050/000640
673 | data/0050/000642
674 | data/0050/000644
675 | data/0050/000651
676 | data/0050/000653
677 | data/0050/000660
678 | data/0050/000662
679 | data/0050/000671
680 | data/0050/000681
681 | data/0050/000682
682 | data/0050/000701
683 | data/0050/000712
684 | data/0050/000721
685 | data/0050/000722
686 | data/0050/000735
687 | data/0050/000737
688 | data/0050/000751
689 | data/0050/000757
690 | data/0050/000769
691 | data/0050/000775
692 | data/0050/000786
693 | data/0050/000790
694 | data/0050/000798
695 | data/0050/000802
696 | data/0050/000811
697 | data/0050/000822
698 | data/0050/000830
699 | data/0050/000831
700 | data/0050/000846
701 | data/0050/000850
702 | data/0050/000876
703 | data/0050/000887
704 | data/0050/000891
705 | data/0050/000902
706 | data/0050/000905
707 | data/0050/000916
708 | data/0050/000918
709 | data/0050/000923
710 | data/0050/000926
711 | data/0050/000928
712 | data/0050/000943
713 | data/0050/000961
714 | data/0050/000963
715 | data/0050/000978
716 | data/0050/000979
717 | data/0050/000988
718 | data/0050/000994
719 | data/0050/001000
720 | data/0050/001008
721 | data/0050/001014
722 | data/0050/001023
723 | data/0050/001026
724 | data/0050/001044
725 | data/0050/001052
726 | data/0050/001058
727 | data/0050/001066
728 | data/0050/001077
729 | data/0050/001094
730 | data/0050/001098
731 | data/0050/001105
732 | data/0050/001113
733 | data/0050/001125
734 | data/0050/001130
735 | data/0050/001145
736 | data/0050/001150
737 | data/0050/001169
738 | data/0050/001189
739 | data/0050/001192
740 | data/0050/001209
741 | data/0050/001216
742 | data/0050/001242
743 | data/0050/001246
744 | data/0050/001263
745 | data/0050/001266
746 | data/0050/001280
747 | data/0050/001284
748 | data/0050/001297
749 | data/0050/001305
750 | data/0050/001324
751 | data/0050/001335
752 | data/0050/001346
753 | data/0050/001350
754 | data/0050/001364
755 | data/0050/001371
756 | data/0050/001389
757 | data/0050/001391
758 | data/0050/001402
759 | data/0050/001412
760 | data/0050/001414
761 | data/0050/001421
762 | data/0050/001433
763 | data/0050/001446
764 | data/0050/001448
765 | data/0050/001455
766 | data/0050/001457
767 | data/0050/001461
768 | data/0050/001462
769 | data/0050/001466
770 | data/0050/001470
771 | data/0050/001475
772 | data/0050/001480
773 | data/0050/001485
774 | data/0050/001492
775 | data/0050/001499
776 | data/0050/001509
777 | data/0050/001514
778 | data/0050/001526
779 | data/0050/001542
780 | data/0050/001564
781 | data/0050/001592
782 | data/0050/001593
783 | data/0050/001613
784 | data/0050/001629
785 | data/0050/001656
786 | data/0050/001658
787 | data/0050/001669
788 | data/0050/001678
789 | data/0050/001695
790 | data/0050/001708
791 | data/0050/001711
792 | data/0050/001713
793 | data/0050/001714
794 | data/0050/001718
795 | data/0050/001719
796 | data/0050/001733
797 | data/0050/001743
798 | data/0050/001745
799 | data/0050/001756
800 | data/0050/001778
801 | data/0050/001782
802 | data/0050/001800
803 | data/0050/001828
804 | data/0050/001844
805 | data/0050/001849
806 | data/0050/001850
807 | data/0050/001866
808 | data/0050/001868
809 | data/0050/001874
810 | data/0050/001893
811 | data/0050/001897
812 | data/0051/000001
813 | data/0051/000035
814 | data/0051/000056
815 | data/0051/000083
816 | data/0051/000100
817 | data/0051/000116
818 | data/0051/000138
819 | data/0051/000169
820 | data/0051/000197
821 | data/0051/000208
822 | data/0051/000219
823 | data/0051/000237
824 | data/0051/000240
825 | data/0051/000249
826 | data/0051/000263
827 | data/0051/000275
828 | data/0051/000284
829 | data/0051/000295
830 | data/0051/000304
831 | data/0051/000313
832 | data/0051/000318
833 | data/0051/000335
834 | data/0051/000339
835 | data/0051/000347
836 | data/0051/000353
837 | data/0051/000366
838 | data/0051/000368
839 | data/0051/000371
840 | data/0051/000387
841 | data/0051/000389
842 | data/0051/000402
843 | data/0051/000407
844 | data/0051/000417
845 | data/0051/000421
846 | data/0051/000431
847 | data/0051/000439
848 | data/0051/000444
849 | data/0051/000454
850 | data/0051/000464
851 | data/0051/000475
852 | data/0051/000482
853 | data/0051/000497
854 | data/0051/000501
855 | data/0051/000515
856 | data/0051/000520
857 | data/0051/000532
858 | data/0051/000546
859 | data/0051/000553
860 | data/0051/000571
861 | data/0051/000582
862 | data/0051/000601
863 | data/0051/000611
864 | data/0051/000618
865 | data/0051/000636
866 | data/0051/000637
867 | data/0051/000649
868 | data/0051/000654
869 | data/0051/000669
870 | data/0051/000672
871 | data/0051/000675
872 | data/0051/000681
873 | data/0051/000685
874 | data/0051/000694
875 | data/0051/000698
876 | data/0051/000713
877 | data/0051/000721
878 | data/0051/000736
879 | data/0051/000740
880 | data/0051/000756
881 | data/0051/000762
882 | data/0051/000773
883 | data/0051/000777
884 | data/0051/000780
885 | data/0051/000789
886 | data/0051/000793
887 | data/0051/000798
888 | data/0051/000803
889 | data/0051/000814
890 | data/0051/000819
891 | data/0051/000834
892 | data/0051/000840
893 | data/0051/000848
894 | data/0051/000852
895 | data/0051/000864
896 | data/0051/000868
897 | data/0051/000893
898 | data/0051/000897
899 | data/0051/000912
900 | data/0051/000916
901 | data/0051/000929
902 | data/0051/000930
903 | data/0051/000939
904 | data/0051/000943
905 | data/0051/000946
906 | data/0051/000961
907 | data/0051/000964
908 | data/0051/000982
909 | data/0051/000986
910 | data/0051/000997
911 | data/0051/001005
912 | data/0051/001014
913 | data/0051/001021
914 | data/0051/001038
915 | data/0051/001045
916 | data/0051/001057
917 | data/0051/001063
918 | data/0051/001076
919 | data/0051/001080
920 | data/0051/001091
921 | data/0051/001092
922 | data/0051/001110
923 | data/0051/001111
924 | data/0051/001149
925 | data/0051/001150
926 | data/0051/001160
927 | data/0051/001182
928 | data/0051/001220
929 | data/0051/001251
930 | data/0051/001275
931 | data/0051/001316
932 | data/0051/001330
933 | data/0051/001339
934 | data/0051/001366
935 | data/0051/001368
936 | data/0051/001393
937 | data/0051/001399
938 | data/0051/001424
939 | data/0051/001431
940 | data/0051/001445
941 | data/0051/001452
942 | data/0051/001471
943 | data/0051/001474
944 | data/0051/001497
945 | data/0051/001499
946 | data/0051/001518
947 | data/0051/001521
948 | data/0051/001528
949 | data/0051/001531
950 | data/0051/001536
951 | data/0051/001545
952 | data/0051/001566
953 | data/0051/001571
954 | data/0051/001584
955 | data/0051/001588
956 | data/0051/001603
957 | data/0051/001611
958 | data/0051/001617
959 | data/0051/001628
960 | data/0051/001629
961 | data/0051/001645
962 | data/0051/001650
963 | data/0051/001673
964 | data/0051/001674
965 | data/0051/001687
966 | data/0051/001693
967 | data/0051/001698
968 | data/0051/001699
969 | data/0051/001700
970 | data/0051/001708
971 | data/0051/001709
972 | data/0051/001715
973 | data/0051/001717
974 | data/0051/001729
975 | data/0051/001734
976 | data/0051/001749
977 | data/0051/001753
978 | data/0051/001767
979 | data/0051/001780
980 | data/0051/001788
981 | data/0051/001803
982 | data/0051/001819
983 | data/0051/001833
984 | data/0051/001867
985 | data/0051/001883
986 | data/0051/001914
987 | data/0051/001924
988 | data/0051/001927
989 | data/0051/001932
990 | data/0051/001968
991 | data/0051/001990
992 | data/0051/001996
993 | data/0052/000001
994 | data/0052/000021
995 | data/0052/000034
996 | data/0052/000039
997 | data/0052/000048
998 | data/0052/000052
999 | data/0052/000057
1000 | data/0052/000061
1001 | data/0052/000065
1002 | data/0052/000071
1003 | data/0052/000080
1004 | data/0052/000081
1005 | data/0052/000084
1006 | data/0052/000088
1007 | data/0052/000092
1008 | data/0052/000097
1009 | data/0052/000098
1010 | data/0052/000114
1011 | data/0052/000116
1012 | data/0052/000121
1013 | data/0052/000127
1014 | data/0052/000132
1015 | data/0052/000136
1016 | data/0052/000143
1017 | data/0052/000150
1018 | data/0052/000156
1019 | data/0052/000164
1020 | data/0052/000165
1021 | data/0052/000167
1022 | data/0052/000169
1023 | data/0052/000170
1024 | data/0052/000171
1025 | data/0052/000173
1026 | data/0052/000175
1027 | data/0052/000178
1028 | data/0052/000179
1029 | data/0052/000190
1030 | data/0052/000195
1031 | data/0052/000202
1032 | data/0052/000213
1033 | data/0052/000214
1034 | data/0052/000227
1035 | data/0052/000236
1036 | data/0052/000245
1037 | data/0052/000256
1038 | data/0052/000257
1039 | data/0052/000259
1040 | data/0052/000265
1041 | data/0052/000266
1042 | data/0052/000272
1043 | data/0052/000275
1044 | data/0052/000282
1045 | data/0052/000292
1046 | data/0052/000293
1047 | data/0052/000304
1048 | data/0052/000313
1049 | data/0052/000325
1050 | data/0052/000341
1051 | data/0052/000343
1052 | data/0052/000357
1053 | data/0052/000361
1054 | data/0052/000365
1055 | data/0052/000385
1056 | data/0052/000388
1057 | data/0052/000389
1058 | data/0052/000396
1059 | data/0052/000403
1060 | data/0052/000407
1061 | data/0052/000413
1062 | data/0052/000414
1063 | data/0052/000418
1064 | data/0052/000426
1065 | data/0052/000432
1066 | data/0052/000434
1067 | data/0052/000442
1068 | data/0052/000448
1069 | data/0052/000451
1070 | data/0052/000483
1071 | data/0052/000484
1072 | data/0052/000493
1073 | data/0052/000494
1074 | data/0052/000502
1075 | data/0052/000511
1076 | data/0052/000516
1077 | data/0052/000520
1078 | data/0052/000524
1079 | data/0052/000526
1080 | data/0052/000527
1081 | data/0052/000532
1082 | data/0052/000537
1083 | data/0052/000539
1084 | data/0052/000543
1085 | data/0052/000544
1086 | data/0052/000550
1087 | data/0052/000556
1088 | data/0052/000561
1089 | data/0052/000567
1090 | data/0052/000574
1091 | data/0052/000575
1092 | data/0052/000582
1093 | data/0052/000587
1094 | data/0052/000589
1095 | data/0052/000593
1096 | data/0052/000594
1097 | data/0052/000604
1098 | data/0052/000608
1099 | data/0052/000622
1100 | data/0052/000625
1101 | data/0052/000632
1102 | data/0052/000638
1103 | data/0052/000643
1104 | data/0052/000650
1105 | data/0052/000653
1106 | data/0052/000656
1107 | data/0052/000662
1108 | data/0052/000666
1109 | data/0052/000669
1110 | data/0052/000678
1111 | data/0052/000688
1112 | data/0052/000694
1113 | data/0052/000699
1114 | data/0052/000707
1115 | data/0052/000714
1116 | data/0052/000720
1117 | data/0052/000722
1118 | data/0052/000725
1119 | data/0052/000732
1120 | data/0052/000733
1121 | data/0052/000741
1122 | data/0052/000742
1123 | data/0052/000745
1124 | data/0052/000747
1125 | data/0052/000750
1126 | data/0052/000751
1127 | data/0052/000752
1128 | data/0052/000756
1129 | data/0052/000758
1130 | data/0052/000759
1131 | data/0052/000760
1132 | data/0052/000763
1133 | data/0052/000765
1134 | data/0052/000770
1135 | data/0052/000771
1136 | data/0052/000774
1137 | data/0052/000777
1138 | data/0052/000790
1139 | data/0052/000799
1140 | data/0052/000806
1141 | data/0052/000810
1142 | data/0052/000813
1143 | data/0052/000815
1144 | data/0052/000817
1145 | data/0052/000820
1146 | data/0052/000823
1147 | data/0052/000825
1148 | data/0052/000826
1149 | data/0052/000833
1150 | data/0052/000844
1151 | data/0052/000853
1152 | data/0052/000855
1153 | data/0052/000860
1154 | data/0052/000875
1155 | data/0052/000880
1156 | data/0052/000885
1157 | data/0052/000886
1158 | data/0052/000892
1159 | data/0052/000897
1160 | data/0053/000001
1161 | data/0053/000014
1162 | data/0053/000033
1163 | data/0053/000043
1164 | data/0053/000052
1165 | data/0053/000061
1166 | data/0053/000075
1167 | data/0053/000084
1168 | data/0053/000093
1169 | data/0053/000103
1170 | data/0053/000111
1171 | data/0053/000118
1172 | data/0053/000123
1173 | data/0053/000126
1174 | data/0053/000131
1175 | data/0053/000135
1176 | data/0053/000138
1177 | data/0053/000139
1178 | data/0053/000142
1179 | data/0053/000145
1180 | data/0053/000147
1181 | data/0053/000152
1182 | data/0053/000153
1183 | data/0053/000155
1184 | data/0053/000158
1185 | data/0053/000162
1186 | data/0053/000164
1187 | data/0053/000165
1188 | data/0053/000167
1189 | data/0053/000168
1190 | data/0053/000171
1191 | data/0053/000176
1192 | data/0053/000179
1193 | data/0053/000183
1194 | data/0053/000187
1195 | data/0053/000190
1196 | data/0053/000193
1197 | data/0053/000196
1198 | data/0053/000199
1199 | data/0053/000204
1200 | data/0053/000207
1201 | data/0053/000210
1202 | data/0053/000213
1203 | data/0053/000216
1204 | data/0053/000219
1205 | data/0053/000221
1206 | data/0053/000225
1207 | data/0053/000227
1208 | data/0053/000230
1209 | data/0053/000243
1210 | data/0053/000247
1211 | data/0053/000250
1212 | data/0053/000254
1213 | data/0053/000256
1214 | data/0053/000260
1215 | data/0053/000263
1216 | data/0053/000268
1217 | data/0053/000272
1218 | data/0053/000274
1219 | data/0053/000281
1220 | data/0053/000285
1221 | data/0053/000289
1222 | data/0053/000293
1223 | data/0053/000295
1224 | data/0053/000299
1225 | data/0053/000301
1226 | data/0053/000303
1227 | data/0053/000308
1228 | data/0053/000309
1229 | data/0053/000314
1230 | data/0053/000315
1231 | data/0053/000316
1232 | data/0053/000318
1233 | data/0053/000319
1234 | data/0053/000324
1235 | data/0053/000328
1236 | data/0053/000330
1237 | data/0053/000340
1238 | data/0053/000341
1239 | data/0053/000345
1240 | data/0053/000348
1241 | data/0053/000356
1242 | data/0053/000357
1243 | data/0053/000364
1244 | data/0053/000366
1245 | data/0053/000367
1246 | data/0053/000373
1247 | data/0053/000374
1248 | data/0053/000407
1249 | data/0053/000414
1250 | data/0053/000421
1251 | data/0053/000425
1252 | data/0053/000430
1253 | data/0053/000434
1254 | data/0053/000435
1255 | data/0053/000439
1256 | data/0053/000441
1257 | data/0053/000443
1258 | data/0053/000449
1259 | data/0053/000452
1260 | data/0053/000454
1261 | data/0053/000455
1262 | data/0053/000457
1263 | data/0053/000458
1264 | data/0053/000459
1265 | data/0053/000460
1266 | data/0053/000463
1267 | data/0053/000467
1268 | data/0053/000468
1269 | data/0053/000469
1270 | data/0053/000471
1271 | data/0053/000472
1272 | data/0053/000474
1273 | data/0053/000476
1274 | data/0053/000477
1275 | data/0053/000479
1276 | data/0053/000483
1277 | data/0053/000484
1278 | data/0053/000486
1279 | data/0053/000490
1280 | data/0053/000501
1281 | data/0053/000505
1282 | data/0053/000508
1283 | data/0053/000509
1284 | data/0053/000513
1285 | data/0053/000519
1286 | data/0053/000523
1287 | data/0053/000526
1288 | data/0053/000533
1289 | data/0053/000534
1290 | data/0053/000538
1291 | data/0053/000539
1292 | data/0053/000542
1293 | data/0053/000545
1294 | data/0053/000547
1295 | data/0053/000550
1296 | data/0053/000551
1297 | data/0053/000552
1298 | data/0053/000555
1299 | data/0053/000556
1300 | data/0053/000567
1301 | data/0053/000569
1302 | data/0053/000576
1303 | data/0053/000579
1304 | data/0053/000583
1305 | data/0053/000587
1306 | data/0053/000591
1307 | data/0053/000592
1308 | data/0053/000602
1309 | data/0053/000604
1310 | data/0053/000610
1311 | data/0053/000616
1312 | data/0053/000628
1313 | data/0053/000638
1314 | data/0053/000647
1315 | data/0053/000655
1316 | data/0053/000665
1317 | data/0053/000677
1318 | data/0053/000686
1319 | data/0053/000687
1320 | data/0053/000692
1321 | data/0053/000700
1322 | data/0053/000708
1323 | data/0053/000716
1324 | data/0053/000722
1325 | data/0053/000730
1326 | data/0053/000732
1327 | data/0053/000735
1328 | data/0053/000738
1329 | data/0053/000740
1330 | data/0053/000742
1331 | data/0053/000752
1332 | data/0053/000768
1333 | data/0053/000779
1334 | data/0053/000789
1335 | data/0053/000797
1336 | data/0053/000802
1337 | data/0053/000817
1338 | data/0053/000834
1339 | data/0054/000001
1340 | data/0054/000022
1341 | data/0054/000032
1342 | data/0054/000038
1343 | data/0054/000043
1344 | data/0054/000050
1345 | data/0054/000056
1346 | data/0054/000063
1347 | data/0054/000069
1348 | data/0054/000081
1349 | data/0054/000086
1350 | data/0054/000090
1351 | data/0054/000092
1352 | data/0054/000098
1353 | data/0054/000099
1354 | data/0054/000101
1355 | data/0054/000105
1356 | data/0054/000110
1357 | data/0054/000114
1358 | data/0054/000118
1359 | data/0054/000121
1360 | data/0054/000124
1361 | data/0054/000126
1362 | data/0054/000127
1363 | data/0054/000130
1364 | data/0054/000132
1365 | data/0054/000133
1366 | data/0054/000134
1367 | data/0054/000135
1368 | data/0054/000136
1369 | data/0054/000137
1370 | data/0054/000139
1371 | data/0054/000140
1372 | data/0054/000142
1373 | data/0054/000143
1374 | data/0054/000146
1375 | data/0054/000147
1376 | data/0054/000152
1377 | data/0054/000153
1378 | data/0054/000159
1379 | data/0054/000161
1380 | data/0054/000173
1381 | data/0054/000175
1382 | data/0054/000184
1383 | data/0054/000186
1384 | data/0054/000191
1385 | data/0054/000195
1386 | data/0054/000196
1387 | data/0054/000202
1388 | data/0054/000204
1389 | data/0054/000209
1390 | data/0054/000214
1391 | data/0054/000223
1392 | data/0054/000232
1393 | data/0054/000236
1394 | data/0054/000244
1395 | data/0054/000249
1396 | data/0054/000255
1397 | data/0054/000259
1398 | data/0054/000266
1399 | data/0054/000269
1400 | data/0054/000313
1401 | data/0054/000334
1402 | data/0054/000345
1403 | data/0054/000350
1404 | data/0054/000359
1405 | data/0054/000365
1406 | data/0054/000366
1407 | data/0054/000376
1408 | data/0054/000378
1409 | data/0054/000385
1410 | data/0054/000387
1411 | data/0054/000390
1412 | data/0054/000393
1413 | data/0054/000398
1414 | data/0054/000405
1415 | data/0054/000411
1416 | data/0054/000413
1417 | data/0054/000414
1418 | data/0054/000420
1419 | data/0054/000423
1420 | data/0054/000426
1421 | data/0054/000433
1422 | data/0054/000437
1423 | data/0054/000445
1424 | data/0054/000447
1425 | data/0054/000457
1426 | data/0054/000460
1427 | data/0054/000470
1428 | data/0054/000473
1429 | data/0054/000479
1430 | data/0054/000480
1431 | data/0054/000483
1432 | data/0054/000491
1433 | data/0054/000495
1434 | data/0054/000501
1435 | data/0054/000504
1436 | data/0054/000511
1437 | data/0054/000514
1438 | data/0054/000520
1439 | data/0054/000524
1440 | data/0054/000530
1441 | data/0054/000537
1442 | data/0054/000543
1443 | data/0054/000560
1444 | data/0054/000561
1445 | data/0054/000568
1446 | data/0054/000577
1447 | data/0054/000583
1448 | data/0054/000588
1449 | data/0054/000589
1450 | data/0054/000595
1451 | data/0054/000598
1452 | data/0054/000603
1453 | data/0054/000604
1454 | data/0054/000609
1455 | data/0054/000611
1456 | data/0054/000615
1457 | data/0054/000619
1458 | data/0054/000620
1459 | data/0054/000624
1460 | data/0054/000626
1461 | data/0054/000628
1462 | data/0054/000634
1463 | data/0054/000636
1464 | data/0054/000642
1465 | data/0054/000644
1466 | data/0054/000649
1467 | data/0054/000653
1468 | data/0054/000656
1469 | data/0054/000661
1470 | data/0054/000666
1471 | data/0054/000672
1472 | data/0054/000673
1473 | data/0054/000679
1474 | data/0054/000681
1475 | data/0054/000687
1476 | data/0054/000689
1477 | data/0054/000693
1478 | data/0054/000697
1479 | data/0054/000701
1480 | data/0054/000705
1481 | data/0054/000707
1482 | data/0054/000711
1483 | data/0054/000715
1484 | data/0054/000719
1485 | data/0054/000721
1486 | data/0054/000724
1487 | data/0054/000725
1488 | data/0054/000730
1489 | data/0054/000731
1490 | data/0054/000736
1491 | data/0054/000741
1492 | data/0054/000746
1493 | data/0054/000748
1494 | data/0054/000752
1495 | data/0054/000756
1496 | data/0054/000766
1497 | data/0054/000777
1498 | data/0054/000786
1499 | data/0054/000800
1500 | data/0054/000802
1501 | data/0054/000817
1502 | data/0054/000819
1503 | data/0054/000830
1504 | data/0054/000831
1505 | data/0054/000848
1506 | data/0054/000857
1507 | data/0054/000866
1508 | data/0054/000868
1509 | data/0054/000875
1510 | data/0054/000877
1511 | data/0054/000902
1512 | data/0054/000915
1513 | data/0054/000920
1514 | data/0054/000923
1515 | data/0054/000932
1516 | data/0054/000934
1517 | data/0054/000952
1518 | data/0054/000956
1519 | data/0054/000975
1520 | data/0054/000983
1521 | data/0054/000988
1522 | data/0054/000993
1523 | data/0054/000998
1524 | data/0054/001002
1525 | data/0054/001006
1526 | data/0054/001008
1527 | data/0054/001011
1528 | data/0054/001012
1529 | data/0054/001015
1530 | data/0054/001016
1531 | data/0054/001017
1532 | data/0054/001019
1533 | data/0054/001020
1534 | data/0054/001024
1535 | data/0054/001025
1536 | data/0054/001028
1537 | data/0054/001029
1538 | data/0054/001032
1539 | data/0054/001033
1540 | data/0054/001039
1541 | data/0054/001042
1542 | data/0054/001063
1543 | data/0054/001068
1544 | data/0054/001080
1545 | data/0054/001083
1546 | data/0054/001089
1547 | data/0054/001096
1548 | data/0054/001106
1549 | data/0054/001110
1550 | data/0054/001111
1551 | data/0054/001123
1552 | data/0054/001129
1553 | data/0054/001134
1554 | data/0054/001135
1555 | data/0054/001139
1556 | data/0054/001144
1557 | data/0054/001145
1558 | data/0054/001152
1559 | data/0054/001153
1560 | data/0054/001159
1561 | data/0054/001160
1562 | data/0054/001162
1563 | data/0054/001166
1564 | data/0054/001168
1565 | data/0054/001169
1566 | data/0054/001174
1567 | data/0054/001175
1568 | data/0054/001178
1569 | data/0054/001183
1570 | data/0054/001184
1571 | data/0054/001191
1572 | data/0054/001194
1573 | data/0054/001210
1574 | data/0054/001215
1575 | data/0054/001232
1576 | data/0054/001246
1577 | data/0054/001257
1578 | data/0054/001266
1579 | data/0054/001277
1580 | data/0054/001284
1581 | data/0054/001302
1582 | data/0054/001307
1583 | data/0054/001313
1584 | data/0054/001317
1585 | data/0054/001321
1586 | data/0054/001333
1587 | data/0054/001348
1588 | data/0054/001352
1589 | data/0054/001355
1590 | data/0054/001359
1591 | data/0054/001361
1592 | data/0054/001365
1593 | data/0054/001369
1594 | data/0054/001371
1595 | data/0054/001385
1596 | data/0054/001389
1597 | data/0054/001407
1598 | data/0054/001413
1599 | data/0054/001438
1600 | data/0054/001439
1601 | data/0054/001451
1602 | data/0054/001466
1603 | data/0054/001491
1604 | data/0054/001494
1605 | data/0054/001509
1606 | data/0054/001513
1607 | data/0054/001515
1608 | data/0054/001521
1609 | data/0054/001526
1610 | data/0054/001531
1611 | data/0054/001539
1612 | data/0054/001543
1613 | data/0054/001547
1614 | data/0054/001550
1615 | data/0054/001557
1616 | data/0054/001559
1617 | data/0054/001568
1618 | data/0054/001573
1619 | data/0054/001580
1620 | data/0054/001585
1621 | data/0054/001595
1622 | data/0054/001597
1623 | data/0054/001605
1624 | data/0054/001613
1625 | data/0054/001619
1626 | data/0054/001625
1627 | data/0054/001631
1628 | data/0054/001636
1629 | data/0054/001649
1630 | data/0054/001652
1631 | data/0054/001661
1632 | data/0054/001663
1633 | data/0054/001668
1634 | data/0054/001674
1635 | data/0054/001681
1636 | data/0054/001686
1637 | data/0054/001699
1638 | data/0054/001711
1639 | data/0054/001717
1640 | data/0054/001730
1641 | data/0054/001731
1642 | data/0054/001749
1643 | data/0054/001753
1644 | data/0054/001765
1645 | data/0054/001774
1646 | data/0054/001789
1647 | data/0054/001801
1648 | data/0054/001821
1649 | data/0054/001842
1650 | data/0054/001844
1651 | data/0054/001854
1652 | data/0054/001872
1653 | data/0054/001882
1654 | data/0054/001888
1655 | data/0054/001900
1656 | data/0054/001918
1657 | data/0055/000001
1658 | data/0055/000011
1659 | data/0055/000018
1660 | data/0055/000022
1661 | data/0055/000032
1662 | data/0055/000042
1663 | data/0055/000049
1664 | data/0055/000062
1665 | data/0055/000078
1666 | data/0055/000089
1667 | data/0055/000094
1668 | data/0055/000100
1669 | data/0055/000107
1670 | data/0055/000122
1671 | data/0055/000128
1672 | data/0055/000155
1673 | data/0055/000179
1674 | data/0055/000204
1675 | data/0055/000205
1676 | data/0055/000218
1677 | data/0055/000219
1678 | data/0055/000229
1679 | data/0055/000231
1680 | data/0055/000240
1681 | data/0055/000245
1682 | data/0055/000255
1683 | data/0055/000259
1684 | data/0055/000271
1685 | data/0055/000273
1686 | data/0055/000278
1687 | data/0055/000289
1688 | data/0055/000303
1689 | data/0055/000305
1690 | data/0055/000320
1691 | data/0055/000346
1692 | data/0055/000348
1693 | data/0055/000352
1694 | data/0055/000354
1695 | data/0055/000355
1696 | data/0055/000356
1697 | data/0055/000358
1698 | data/0055/000359
1699 | data/0055/000360
1700 | data/0055/000363
1701 | data/0055/000369
1702 | data/0055/000371
1703 | data/0055/000376
1704 | data/0055/000381
1705 | data/0055/000385
1706 | data/0055/000389
1707 | data/0055/000391
1708 | data/0055/000395
1709 | data/0055/000398
1710 | data/0055/000404
1711 | data/0055/000407
1712 | data/0055/000411
1713 | data/0055/000415
1714 | data/0055/000425
1715 | data/0055/000434
1716 | data/0055/000436
1717 | data/0055/000446
1718 | data/0055/000448
1719 | data/0055/000454
1720 | data/0055/000461
1721 | data/0055/000464
1722 | data/0055/000471
1723 | data/0055/000479
1724 | data/0055/000488
1725 | data/0055/000495
1726 | data/0055/000502
1727 | data/0055/000512
1728 | data/0055/000513
1729 | data/0055/000526
1730 | data/0055/000530
1731 | data/0055/000546
1732 | data/0055/000562
1733 | data/0055/000563
1734 | data/0055/000588
1735 | data/0055/000598
1736 | data/0055/000603
1737 | data/0055/000610
1738 | data/0055/000612
1739 | data/0055/000618
1740 | data/0055/000621
1741 | data/0055/000622
1742 | data/0055/000638
1743 | data/0055/000641
1744 | data/0055/000649
1745 | data/0055/000654
1746 | data/0055/000663
1747 | data/0055/000668
1748 | data/0055/000686
1749 | data/0055/000687
1750 | data/0055/000702
1751 | data/0055/000710
1752 | data/0055/000715
1753 | data/0055/000724
1754 | data/0055/000732
1755 | data/0055/000739
1756 | data/0055/000746
1757 | data/0055/000747
1758 | data/0055/000759
1759 | data/0055/000761
1760 | data/0055/000772
1761 | data/0055/000785
1762 | data/0055/000793
1763 | data/0055/000813
1764 | data/0055/000820
1765 | data/0055/000829
1766 | data/0055/000839
1767 | data/0055/000846
1768 | data/0055/000856
1769 | data/0055/000859
1770 | data/0055/000864
1771 | data/0055/000869
1772 | data/0055/000873
1773 | data/0055/000879
1774 | data/0055/000884
1775 | data/0055/000890
1776 | data/0055/000893
1777 | data/0055/000901
1778 | data/0055/000904
1779 | data/0055/000905
1780 | data/0055/000906
1781 | data/0055/000908
1782 | data/0055/000910
1783 | data/0055/000912
1784 | data/0055/000915
1785 | data/0055/000920
1786 | data/0055/000927
1787 | data/0055/000937
1788 | data/0055/000944
1789 | data/0055/000951
1790 | data/0055/000958
1791 | data/0055/000968
1792 | data/0055/000983
1793 | data/0055/000989
1794 | data/0055/000997
1795 | data/0055/001009
1796 | data/0055/001019
1797 | data/0055/001025
1798 | data/0055/001038
1799 | data/0055/001040
1800 | data/0055/001041
1801 | data/0055/001042
1802 | data/0055/001044
1803 | data/0055/001046
1804 | data/0055/001048
1805 | data/0055/001049
1806 | data/0055/001053
1807 | data/0055/001055
1808 | data/0055/001064
1809 | data/0055/001068
1810 | data/0055/001088
1811 | data/0055/001100
1812 | data/0055/001103
1813 | data/0055/001115
1814 | data/0055/001120
1815 | data/0055/001132
1816 | data/0055/001136
1817 | data/0055/001147
1818 | data/0055/001151
1819 | data/0055/001161
1820 | data/0055/001164
1821 | data/0055/001176
1822 | data/0055/001177
1823 | data/0055/001187
1824 | data/0055/001188
1825 | data/0055/001189
1826 | data/0055/001200
1827 | data/0055/001202
1828 | data/0055/001215
1829 | data/0055/001216
1830 | data/0055/001229
1831 | data/0055/001237
1832 | data/0055/001244
1833 | data/0055/001252
1834 | data/0055/001265
1835 | data/0055/001266
1836 | data/0055/001276
1837 | data/0055/001283
1838 | data/0055/001291
1839 | data/0055/001298
1840 | data/0055/001307
1841 | data/0055/001308
1842 | data/0055/001317
1843 | data/0055/001327
1844 | data/0055/001330
1845 | data/0055/001336
1846 | data/0055/001341
1847 | data/0055/001347
1848 | data/0055/001351
1849 | data/0055/001355
1850 | data/0055/001358
1851 | data/0055/001359
1852 | data/0055/001362
1853 | data/0055/001366
1854 | data/0055/001367
1855 | data/0055/001369
1856 | data/0055/001372
1857 | data/0055/001374
1858 | data/0055/001381
1859 | data/0055/001390
1860 | data/0055/001400
1861 | data/0055/001407
1862 | data/0055/001419
1863 | data/0055/001426
1864 | data/0055/001439
1865 | data/0055/001453
1866 | data/0055/001468
1867 | data/0055/001478
1868 | data/0055/001481
1869 | data/0055/001489
1870 | data/0055/001492
1871 | data/0055/001503
1872 | data/0055/001505
1873 | data/0055/001520
1874 | data/0055/001522
1875 | data/0055/001532
1876 | data/0055/001543
1877 | data/0055/001563
1878 | data/0055/001567
1879 | data/0055/001585
1880 | data/0055/001592
1881 | data/0055/001603
1882 | data/0055/001604
1883 | data/0055/001609
1884 | data/0055/001612
1885 | data/0055/001625
1886 | data/0055/001632
1887 | data/0055/001643
1888 | data/0055/001666
1889 | data/0055/001691
1890 | data/0055/001708
1891 | data/0055/001717
1892 | data/0055/001721
1893 | data/0055/001746
1894 | data/0055/001773
1895 | data/0055/001785
1896 | data/0055/001801
1897 | data/0055/001811
1898 | data/0055/001824
1899 | data/0056/000001
1900 | data/0056/000024
1901 | data/0056/000032
1902 | data/0056/000039
1903 | data/0056/000046
1904 | data/0056/000053
1905 | data/0056/000062
1906 | data/0056/000075
1907 | data/0056/000085
1908 | data/0056/000098
1909 | data/0056/000104
1910 | data/0056/000107
1911 | data/0056/000116
1912 | data/0056/000119
1913 | data/0056/000128
1914 | data/0056/000132
1915 | data/0056/000140
1916 | data/0056/000143
1917 | data/0056/000150
1918 | data/0056/000163
1919 | data/0056/000170
1920 | data/0056/000175
1921 | data/0056/000190
1922 | data/0056/000200
1923 | data/0056/000207
1924 | data/0056/000217
1925 | data/0056/000232
1926 | data/0056/000236
1927 | data/0056/000246
1928 | data/0056/000249
1929 | data/0056/000254
1930 | data/0056/000257
1931 | data/0056/000260
1932 | data/0056/000265
1933 | data/0056/000267
1934 | data/0056/000290
1935 | data/0056/000293
1936 | data/0056/000303
1937 | data/0056/000314
1938 | data/0056/000324
1939 | data/0056/000329
1940 | data/0056/000331
1941 | data/0056/000333
1942 | data/0056/000337
1943 | data/0056/000342
1944 | data/0056/000347
1945 | data/0056/000348
1946 | data/0056/000354
1947 | data/0056/000355
1948 | data/0056/000357
1949 | data/0056/000375
1950 | data/0056/000376
1951 | data/0056/000381
1952 | data/0056/000383
1953 | data/0056/000414
1954 | data/0056/000415
1955 | data/0056/000425
1956 | data/0056/000434
1957 | data/0056/000436
1958 | data/0056/000441
1959 | data/0056/000444
1960 | data/0056/000447
1961 | data/0056/000451
1962 | data/0056/000453
1963 | data/0056/000458
1964 | data/0056/000461
1965 | data/0056/000468
1966 | data/0056/000473
1967 | data/0056/000479
1968 | data/0056/000493
1969 | data/0056/000497
1970 | data/0056/000498
1971 | data/0056/000500
1972 | data/0056/000504
1973 | data/0056/000509
1974 | data/0056/000515
1975 | data/0056/000517
1976 | data/0056/000522
1977 | data/0056/000527
1978 | data/0056/000535
1979 | data/0056/000538
1980 | data/0056/000551
1981 | data/0056/000553
1982 | data/0056/000559
1983 | data/0056/000563
1984 | data/0056/000567
1985 | data/0056/000570
1986 | data/0056/000575
1987 | data/0056/000578
1988 | data/0056/000587
1989 | data/0056/000589
1990 | data/0056/000596
1991 | data/0056/000598
1992 | data/0056/000601
1993 | data/0056/000603
1994 | data/0056/000604
1995 | data/0056/000608
1996 | data/0056/000628
1997 | data/0056/000631
1998 | data/0056/000634
1999 | data/0056/000644
2000 | data/0056/000653
2001 | data/0056/000664
2002 | data/0056/000671
2003 | data/0056/000676
2004 | data/0056/000680
2005 | data/0056/000685
2006 | data/0056/000686
2007 | data/0056/000697
2008 | data/0056/000703
2009 | data/0056/000715
2010 | data/0056/000724
2011 | data/0056/000730
2012 | data/0056/000734
2013 | data/0056/000746
2014 | data/0056/000748
2015 | data/0056/000751
2016 | data/0056/000753
2017 | data/0056/000754
2018 | data/0056/000761
2019 | data/0056/000764
2020 | data/0056/000775
2021 | data/0056/000793
2022 | data/0056/000797
2023 | data/0056/000805
2024 | data/0056/000810
2025 | data/0056/000814
2026 | data/0056/000826
2027 | data/0056/000834
2028 | data/0056/000835
2029 | data/0056/000840
2030 | data/0056/000845
2031 | data/0056/000846
2032 | data/0056/000851
2033 | data/0056/000858
2034 | data/0056/000869
2035 | data/0056/000878
2036 | data/0056/000883
2037 | data/0056/000886
2038 | data/0056/000887
2039 | data/0056/000894
2040 | data/0056/000905
2041 | data/0056/000936
2042 | data/0056/000938
2043 | data/0056/000952
2044 | data/0056/000953
2045 | data/0056/000956
2046 | data/0056/000959
2047 | data/0056/000960
2048 | data/0056/000966
2049 | data/0056/000968
2050 | data/0056/000973
2051 | data/0056/000977
2052 | data/0056/000981
2053 | data/0056/000986
2054 | data/0056/000988
2055 | data/0056/000990
2056 | data/0056/000996
2057 | data/0056/001001
2058 | data/0056/001002
2059 | data/0056/001014
2060 | data/0056/001025
2061 | data/0056/001028
2062 | data/0056/001036
2063 | data/0056/001037
2064 | data/0056/001044
2065 | data/0056/001046
2066 | data/0056/001047
2067 | data/0056/001048
2068 | data/0056/001049
2069 | data/0056/001054
2070 | data/0056/001062
2071 | data/0056/001064
2072 | data/0056/001070
2073 | data/0056/001071
2074 | data/0056/001078
2075 | data/0056/001087
2076 | data/0056/001097
2077 | data/0056/001108
2078 | data/0056/001116
2079 | data/0056/001124
2080 | data/0056/001135
2081 | data/0056/001146
2082 | data/0056/001158
2083 | data/0056/001171
2084 | data/0056/001186
2085 | data/0056/001197
2086 | data/0056/001202
2087 | data/0056/001220
2088 | data/0057/000001
2089 | data/0057/000024
2090 | data/0057/000038
2091 | data/0057/000049
2092 | data/0057/000061
2093 | data/0057/000074
2094 | data/0057/000081
2095 | data/0057/000088
2096 | data/0057/000103
2097 | data/0057/000117
2098 | data/0057/000119
2099 | data/0057/000123
2100 | data/0057/000129
2101 | data/0057/000136
2102 | data/0057/000139
2103 | data/0057/000148
2104 | data/0057/000149
2105 | data/0057/000157
2106 | data/0057/000159
2107 | data/0057/000166
2108 | data/0057/000168
2109 | data/0057/000181
2110 | data/0057/000183
2111 | data/0057/000187
2112 | data/0057/000195
2113 | data/0057/000201
2114 | data/0057/000214
2115 | data/0057/000217
2116 | data/0057/000235
2117 | data/0057/000240
2118 | data/0057/000246
2119 | data/0057/000252
2120 | data/0057/000255
2121 | data/0057/000265
2122 | data/0057/000269
2123 | data/0057/000277
2124 | data/0057/000283
2125 | data/0057/000324
2126 | data/0057/000354
2127 | data/0057/000386
2128 | data/0057/000388
2129 | data/0057/000397
2130 | data/0057/000400
2131 | data/0057/000408
2132 | data/0057/000414
2133 | data/0057/000424
2134 | data/0057/000440
2135 | data/0057/000445
2136 | data/0057/000453
2137 | data/0057/000456
2138 | data/0057/000469
2139 | data/0057/000473
2140 | data/0057/000483
2141 | data/0057/000486
2142 | data/0057/000498
2143 | data/0057/000499
2144 | data/0057/000503
2145 | data/0057/000518
2146 | data/0057/000526
2147 | data/0057/000528
2148 | data/0057/000537
2149 | data/0057/000541
2150 | data/0057/000553
2151 | data/0057/000554
2152 | data/0057/000565
2153 | data/0057/000574
2154 | data/0057/000575
2155 | data/0057/000584
2156 | data/0057/000592
2157 | data/0057/000597
2158 | data/0057/000606
2159 | data/0057/000610
2160 | data/0057/000613
2161 | data/0057/000618
2162 | data/0057/000621
2163 | data/0057/000622
2164 | data/0057/000634
2165 | data/0057/000638
2166 | data/0057/000644
2167 | data/0057/000645
2168 | data/0057/000653
2169 | data/0057/000654
2170 | data/0057/000664
2171 | data/0057/000665
2172 | data/0057/000671
2173 | data/0057/000674
2174 | data/0057/000689
2175 | data/0057/000696
2176 | data/0057/000711
2177 | data/0057/000712
2178 | data/0057/000717
2179 | data/0057/000735
2180 | data/0057/000747
2181 | data/0057/000768
2182 | data/0057/000779
2183 | data/0057/000780
2184 | data/0057/000790
2185 | data/0057/000791
2186 | data/0057/000795
2187 | data/0057/000801
2188 | data/0057/000803
2189 | data/0057/000809
2190 | data/0057/000811
2191 | data/0057/000818
2192 | data/0057/000819
2193 | data/0057/000824
2194 | data/0057/000825
2195 | data/0057/000827
2196 | data/0057/000829
2197 | data/0057/000830
2198 | data/0057/000833
2199 | data/0057/000836
2200 | data/0057/000837
2201 | data/0057/000839
2202 | data/0057/000840
2203 | data/0057/000841
2204 | data/0057/000842
2205 | data/0057/000844
2206 | data/0057/000845
2207 | data/0057/000847
2208 | data/0057/000849
2209 | data/0057/000851
2210 | data/0057/000870
2211 | data/0057/000877
2212 | data/0057/000890
2213 | data/0057/000897
2214 | data/0057/000907
2215 | data/0057/000928
2216 | data/0057/000934
2217 | data/0057/000935
2218 | data/0057/000940
2219 | data/0057/000942
2220 | data/0057/000946
2221 | data/0057/000951
2222 | data/0057/000953
2223 | data/0057/000958
2224 | data/0057/000959
2225 | data/0057/000964
2226 | data/0057/000965
2227 | data/0057/000971
2228 | data/0057/000973
2229 | data/0057/000978
2230 | data/0057/000982
2231 | data/0057/000983
2232 | data/0057/000986
2233 | data/0057/000990
2234 | data/0057/000991
2235 | data/0057/000998
2236 | data/0057/001012
2237 | data/0057/001026
2238 | data/0057/001028
2239 | data/0057/001035
2240 | data/0057/001040
2241 | data/0057/001046
2242 | data/0057/001054
2243 | data/0057/001057
2244 | data/0057/001066
2245 | data/0057/001071
2246 | data/0057/001073
2247 | data/0057/001076
2248 | data/0057/001078
2249 | data/0057/001081
2250 | data/0057/001082
2251 | data/0057/001083
2252 | data/0057/001086
2253 | data/0057/001087
2254 | data/0057/001092
2255 | data/0057/001093
2256 | data/0057/001099
2257 | data/0057/001101
2258 | data/0057/001108
2259 | data/0057/001116
2260 | data/0057/001118
2261 | data/0057/001131
2262 | data/0057/001132
2263 | data/0057/001135
2264 | data/0057/001138
2265 | data/0057/001141
2266 | data/0057/001144
2267 | data/0057/001148
2268 | data/0057/001153
2269 | data/0057/001158
2270 | data/0057/001159
2271 | data/0057/001161
2272 | data/0057/001164
2273 | data/0057/001166
2274 | data/0057/001170
2275 | data/0057/001173
2276 | data/0057/001176
2277 | data/0057/001181
2278 | data/0057/001185
2279 | data/0057/001190
2280 | data/0057/001215
2281 | data/0057/001245
2282 | data/0057/001250
2283 | data/0057/001257
2284 | data/0057/001258
2285 | data/0057/001268
2286 | data/0057/001269
2287 | data/0057/001275
2288 | data/0057/001276
2289 | data/0057/001282
2290 | data/0057/001290
2291 | data/0057/001292
2292 | data/0057/001306
2293 | data/0057/001313
2294 | data/0057/001322
2295 | data/0057/001325
2296 | data/0057/001331
2297 | data/0057/001336
2298 | data/0057/001340
2299 | data/0057/001347
2300 | data/0057/001360
2301 | data/0057/001361
2302 | data/0057/001369
2303 | data/0057/001381
2304 | data/0057/001407
2305 | data/0057/001422
2306 | data/0057/001428
2307 | data/0057/001434
2308 | data/0057/001435
2309 | data/0057/001440
2310 | data/0057/001441
2311 | data/0057/001442
2312 | data/0057/001447
2313 | data/0057/001458
2314 | data/0057/001464
2315 | data/0057/001465
2316 | data/0057/001469
2317 | data/0057/001471
2318 | data/0057/001474
2319 | data/0057/001476
2320 | data/0057/001480
2321 | data/0057/001482
2322 | data/0057/001483
2323 | data/0057/001490
2324 | data/0057/001492
2325 | data/0057/001498
2326 | data/0057/001500
2327 | data/0057/001511
2328 | data/0057/001518
2329 | data/0057/001527
2330 | data/0057/001530
2331 | data/0057/001531
2332 | data/0057/001538
2333 | data/0057/001539
2334 | data/0057/001549
2335 | data/0057/001560
2336 | data/0057/001563
2337 | data/0057/001566
2338 | data/0057/001570
2339 | data/0057/001585
2340 | data/0057/001589
2341 | data/0057/001593
2342 | data/0057/001602
2343 | data/0057/001612
2344 | data/0057/001621
2345 | data/0057/001628
2346 | data/0057/001637
2347 | data/0057/001647
2348 | data/0057/001671
2349 | data/0057/001681
2350 | data/0057/001691
2351 | data/0057/001700
2352 | data/0057/001703
2353 | data/0057/001705
2354 | data/0057/001708
2355 | data/0057/001709
2356 | data/0057/001712
2357 | data/0057/001713
2358 | data/0057/001714
2359 | data/0057/001722
2360 | data/0057/001734
2361 | data/0057/001737
2362 | data/0057/001739
2363 | data/0057/001740
2364 | data/0057/001741
2365 | data/0057/001742
2366 | data/0057/001745
2367 | data/0057/001747
2368 | data/0057/001748
2369 | data/0057/001752
2370 | data/0057/001759
2371 | data/0057/001774
2372 | data/0057/001789
2373 | data/0057/001814
2374 | data/0057/001827
2375 | data/0057/001835
2376 | data/0058/000001
2377 | data/0058/000021
2378 | data/0058/000030
2379 | data/0058/000040
2380 | data/0058/000048
2381 | data/0058/000061
2382 | data/0058/000068
2383 | data/0058/000077
2384 | data/0058/000086
2385 | data/0058/000094
2386 | data/0058/000102
2387 | data/0058/000103
2388 | data/0058/000107
2389 | data/0058/000109
2390 | data/0058/000114
2391 | data/0058/000116
2392 | data/0058/000121
2393 | data/0058/000124
2394 | data/0058/000135
2395 | data/0058/000137
2396 | data/0058/000149
2397 | data/0058/000154
2398 | data/0058/000163
2399 | data/0058/000166
2400 | data/0058/000180
2401 | data/0058/000181
2402 | data/0058/000197
2403 | data/0058/000201
2404 | data/0058/000211
2405 | data/0058/000215
2406 | data/0058/000217
2407 | data/0058/000221
2408 | data/0058/000226
2409 | data/0058/000237
2410 | data/0058/000242
2411 | data/0058/000247
2412 | data/0058/000249
2413 | data/0058/000255
2414 | data/0058/000257
2415 | data/0058/000262
2416 | data/0058/000269
2417 | data/0058/000278
2418 | data/0058/000279
2419 | data/0058/000287
2420 | data/0058/000288
2421 | data/0058/000300
2422 | data/0058/000301
2423 | data/0058/000313
2424 | data/0058/000317
2425 | data/0058/000319
2426 | data/0058/000329
2427 | data/0058/000332
2428 | data/0058/000342
2429 | data/0058/000354
2430 | data/0058/000361
2431 | data/0058/000369
2432 | data/0058/000372
2433 | data/0058/000382
2434 | data/0058/000390
2435 | data/0058/000395
2436 | data/0058/000402
2437 | data/0058/000404
2438 | data/0058/000410
2439 | data/0058/000414
2440 | data/0058/000422
2441 | data/0058/000423
2442 | data/0058/000434
2443 | data/0058/000443
2444 | data/0058/000444
2445 | data/0058/000445
2446 | data/0058/000456
2447 | data/0058/000460
2448 | data/0058/000469
2449 | data/0058/000472
2450 | data/0058/000476
2451 | data/0058/000484
2452 | data/0058/000488
2453 | data/0058/000495
2454 | data/0058/000498
2455 | data/0058/000505
2456 | data/0058/000508
2457 | data/0058/000516
2458 | data/0058/000519
2459 | data/0058/000529
2460 | data/0058/000531
2461 | data/0058/000541
2462 | data/0058/000553
2463 | data/0058/000561
2464 | data/0058/000562
2465 | data/0058/000574
2466 | data/0058/000576
2467 | data/0058/000583
2468 | data/0058/000588
2469 | data/0058/000596
2470 | data/0058/000603
2471 | data/0058/000610
2472 | data/0058/000617
2473 | data/0058/000631
2474 | data/0058/000635
2475 | data/0058/000642
2476 | data/0058/000646
2477 | data/0058/000653
2478 | data/0058/000655
2479 | data/0058/000660
2480 | data/0058/000662
2481 | data/0058/000670
2482 | data/0058/000677
2483 | data/0058/000688
2484 | data/0058/000691
2485 | data/0058/000694
2486 | data/0058/000703
2487 | data/0058/000712
2488 | data/0058/000725
2489 | data/0058/000730
2490 | data/0058/000737
2491 | data/0058/000743
2492 | data/0058/000759
2493 | data/0058/000763
2494 | data/0058/000772
2495 | data/0058/000776
2496 | data/0058/000783
2497 | data/0058/000785
2498 | data/0058/000793
2499 | data/0058/000794
2500 | data/0058/000802
2501 | data/0058/000813
2502 | data/0058/000815
2503 | data/0058/000824
2504 | data/0058/000826
2505 | data/0058/000838
2506 | data/0058/000839
2507 | data/0058/000849
2508 | data/0058/000850
2509 | data/0058/000857
2510 | data/0058/000858
2511 | data/0058/000866
2512 | data/0058/000867
2513 | data/0058/000874
2514 | data/0058/000878
2515 | data/0058/000891
2516 | data/0058/000897
2517 | data/0058/000905
2518 | data/0058/000909
2519 | data/0058/000920
2520 | data/0058/000921
2521 | data/0058/000931
2522 | data/0058/000932
2523 | data/0058/000940
2524 | data/0058/000943
2525 | data/0058/000952
2526 | data/0058/000958
2527 | data/0058/000967
2528 | data/0058/000971
2529 | data/0058/000983
2530 | data/0058/000985
2531 | data/0058/000999
2532 | data/0058/001000
2533 | data/0058/001012
2534 | data/0058/001013
2535 | data/0058/001023
2536 | data/0058/001035
2537 | data/0058/001036
2538 | data/0058/001051
2539 | data/0058/001068
2540 | data/0058/001072
2541 | data/0058/001082
2542 | data/0058/001084
2543 | data/0058/001094
2544 | data/0058/001097
2545 | data/0058/001113
2546 | data/0058/001129
2547 | data/0058/001144
2548 | data/0058/001146
2549 | data/0058/001164
2550 | data/0058/001167
2551 | data/0058/001177
2552 | data/0058/001180
2553 | data/0058/001196
2554 | data/0058/001199
2555 | data/0058/001216
2556 | data/0058/001217
2557 | data/0058/001248
2558 | data/0058/001253
2559 | data/0058/001274
2560 | data/0058/001278
2561 | data/0058/001289
2562 | data/0058/001293
2563 | data/0058/001301
2564 | data/0058/001305
2565 | data/0058/001324
2566 | data/0058/001330
2567 | data/0058/001393
2568 | data/0058/001395
2569 | data/0058/001416
2570 | data/0058/001420
2571 | data/0058/001426
2572 | data/0058/001427
2573 | data/0058/001434
2574 | data/0058/001436
2575 | data/0058/001447
2576 | data/0058/001451
2577 | data/0058/001467
2578 | data/0058/001480
2579 | data/0058/001504
2580 | data/0058/001511
2581 | data/0058/001529
2582 | data/0058/001549
2583 | data/0058/001584
2584 | data/0058/001599
2585 | data/0058/001614
2586 | data/0058/001639
2587 | data/0058/001669
2588 | data/0058/001672
2589 | data/0058/001684
2590 | data/0059/000001
2591 | data/0059/000029
2592 | data/0059/000037
2593 | data/0059/000055
2594 | data/0059/000061
2595 | data/0059/000068
2596 | data/0059/000080
2597 | data/0059/000088
2598 | data/0059/000099
2599 | data/0059/000114
2600 | data/0059/000120
2601 | data/0059/000126
2602 | data/0059/000127
2603 | data/0059/000132
2604 | data/0059/000139
2605 | data/0059/000142
2606 | data/0059/000145
2607 | data/0059/000148
2608 | data/0059/000150
2609 | data/0059/000151
2610 | data/0059/000153
2611 | data/0059/000154
2612 | data/0059/000156
2613 | data/0059/000158
2614 | data/0059/000159
2615 | data/0059/000160
2616 | data/0059/000162
2617 | data/0059/000163
2618 | data/0059/000164
2619 | data/0059/000165
2620 | data/0059/000167
2621 | data/0059/000169
2622 | data/0059/000171
2623 | data/0059/000176
2624 | data/0059/000190
2625 | data/0059/000196
2626 | data/0059/000206
2627 | data/0059/000210
2628 | data/0059/000215
2629 | data/0059/000224
2630 | data/0059/000231
2631 | data/0059/000232
2632 | data/0059/000234
2633 | data/0059/000236
2634 | data/0059/000238
2635 | data/0059/000239
2636 | data/0059/000240
2637 | data/0059/000241
2638 | data/0059/000242
2639 | data/0059/000243
2640 | data/0059/000244
2641 | data/0059/000245
2642 | data/0059/000246
2643 | data/0059/000248
2644 | data/0059/000250
2645 | data/0059/000252
2646 | data/0059/000253
2647 | data/0059/000255
2648 | data/0059/000256
2649 | data/0059/000260
2650 | data/0059/000262
2651 | data/0059/000265
2652 | data/0059/000266
2653 | data/0059/000268
2654 | data/0059/000270
2655 | data/0059/000274
2656 | data/0059/000275
2657 | data/0059/000279
2658 | data/0059/000280
2659 | data/0059/000284
2660 | data/0059/000290
2661 | data/0059/000294
2662 | data/0059/000295
2663 | data/0059/000299
2664 | data/0059/000300
2665 | data/0059/000304
2666 | data/0059/000305
2667 | data/0059/000309
2668 | data/0059/000310
2669 | data/0059/000315
2670 | data/0059/000316
2671 | data/0059/000320
2672 | data/0059/000321
2673 | data/0059/000323
2674 | data/0059/000333
2675 | data/0059/000346
2676 | data/0059/000352
2677 | data/0059/000358
2678 | data/0059/000364
2679 | data/0059/000376
2680 | data/0059/000384
2681 | data/0059/000391
2682 | data/0059/000392
2683 | data/0059/000395
2684 | data/0059/000396
2685 | data/0059/000400
2686 | data/0059/000402
2687 | data/0059/000403
2688 | data/0059/000408
2689 | data/0059/000412
2690 | data/0059/000416
2691 | data/0059/000419
2692 | data/0059/000420
2693 | data/0059/000422
2694 | data/0059/000423
2695 | data/0059/000425
2696 | data/0059/000426
2697 | data/0059/000427
2698 | data/0059/000428
2699 | data/0059/000429
2700 | data/0059/000430
2701 | data/0059/000431
2702 | data/0059/000434
2703 | data/0059/000435
2704 | data/0059/000438
2705 | data/0059/000439
2706 | data/0059/000442
2707 | data/0059/000444
2708 | data/0059/000447
2709 | data/0059/000451
2710 | data/0059/000455
2711 | data/0059/000459
2712 | data/0059/000463
2713 | data/0059/000467
2714 | data/0059/000471
2715 | data/0059/000475
2716 | data/0059/000479
2717 | data/0059/000480
2718 | data/0059/000483
2719 | data/0059/000484
2720 | data/0059/000488
2721 | data/0059/000492
2722 | data/0059/000495
2723 | data/0059/000496
2724 | data/0059/000499
2725 | data/0059/000503
2726 | data/0059/000505
2727 | data/0059/000506
2728 | data/0059/000509
2729 | data/0059/000510
2730 | data/0059/000514
2731 | data/0059/000515
2732 | data/0059/000523
2733 | data/0059/000525
2734 | data/0059/000530
2735 | data/0059/000535
2736 | data/0059/000545
2737 | data/0059/000561
2738 | data/0059/000567
2739 | data/0059/000615
2740 | data/0059/000629
2741 | data/0059/000636
2742 | data/0059/000637
2743 | data/0059/000648
2744 | data/0059/000650
2745 | data/0059/000656
2746 | data/0059/000657
2747 | data/0059/000661
2748 | data/0059/000662
2749 | data/0059/000669
2750 | data/0059/000670
2751 | data/0059/000675
2752 | data/0059/000676
2753 | data/0059/000687
2754 | data/0059/000689
2755 | data/0059/000692
2756 | data/0059/000698
2757 | data/0059/000699
2758 | data/0059/000701
2759 | data/0059/000703
2760 | data/0059/000704
2761 | data/0059/000708
2762 | data/0059/000710
2763 | data/0059/000712
2764 | data/0059/000717
2765 | data/0059/000721
2766 | data/0059/000726
2767 | data/0059/000729
2768 | data/0059/000733
2769 | data/0059/000736
2770 | data/0059/000745
2771 | data/0059/000748
2772 | data/0059/000755
2773 | data/0059/000764
2774 | data/0059/000769
2775 | data/0059/000772
2776 | data/0059/000775
2777 | data/0059/000777
2778 | data/0059/000781
2779 | data/0059/000788
2780 | data/0059/000795
2781 | data/0059/000799
2782 | data/0059/000801
2783 | data/0059/000802
2784 | data/0059/000806
2785 | data/0059/000809
2786 | data/0059/000816
2787 | data/0059/000822
2788 | data/0059/000833
2789 | data/0059/000835
2790 | data/0059/000839
2791 | data/0059/000842
2792 | data/0059/000845
2793 | data/0059/000848
2794 | data/0059/000851
2795 | data/0059/000856
2796 | data/0059/000863
2797 | data/0059/000868
2798 | data/0059/000872
2799 | data/0059/000875
2800 | data/0059/000879
2801 | data/0059/000904
2802 | data/0059/000908
2803 | data/0059/000910
2804 | data/0059/000915
2805 | data/0059/000918
2806 | data/0059/000943
2807 | data/0059/000957
2808 | data/0059/000991
2809 | data/0059/001001
2810 | data/0059/001008
2811 | data/0059/001017
2812 | data/0059/001022
2813 | data/0059/001026
2814 | data/0059/001027
2815 | data/0059/001032
2816 | data/0059/001034
2817 | data/0059/001039
2818 | data/0059/001044
2819 | data/0059/001048
2820 | data/0059/001054
2821 | data/0059/001060
2822 | data/0059/001063
2823 | data/0059/001064
2824 | data/0059/001068
2825 | data/0059/001070
2826 | data/0059/001071
2827 | data/0059/001073
2828 | data/0059/001074
2829 | data/0059/001075
2830 | data/0059/001076
2831 | data/0059/001078
2832 | data/0059/001081
2833 | data/0059/001090
2834 | data/0059/001093
2835 | data/0059/001103
2836 | data/0059/001110
2837 | data/0059/001124
2838 | data/0059/001129
2839 | data/0059/001131
2840 | data/0059/001132
2841 | data/0059/001148
2842 | data/0059/001152
2843 | data/0059/001165
2844 | data/0059/001170
2845 | data/0059/001184
2846 | data/0059/001199
2847 | data/0059/001209
2848 | data/0059/001214
2849 | data/0059/001251
2850 | data/0059/001259
2851 | data/0059/001264
2852 | data/0059/001271
2853 | data/0059/001278
2854 | data/0059/001295
2855 | data/0059/001299
2856 | data/0059/001308
2857 | data/0059/001311
2858 | data/0059/001313
2859 | data/0059/001318
2860 | data/0059/001320
2861 | data/0059/001327
2862 | data/0059/001334
2863 | data/0059/001335
2864 | data/0059/001349
2865 | data/0059/001351
2866 | data/0059/001360
2867 | data/0059/001368
2868 | data/0059/001374
2869 | data/0059/001379
2870 | data/0059/001385
2871 | data/0059/001391
2872 | data/0059/001399
2873 | data/0059/001414
2874 | data/0059/001428
2875 | data/0059/001445
2876 | data/0059/001458
2877 | data/0059/001474
2878 | data/0059/001483
2879 | data/0059/001486
2880 | data/0059/001487
2881 | data/0059/001490
2882 | data/0059/001491
2883 | data/0059/001495
2884 | data/0059/001498
2885 | data/0059/001500
2886 | data/0059/001509
2887 | data/0059/001510
2888 | data/0059/001514
2889 | data/0059/001516
2890 | data/0059/001520
2891 | data/0059/001521
2892 | data/0059/001523
2893 | data/0059/001524
2894 | data/0059/001528
2895 | data/0059/001529
2896 | data/0059/001539
2897 | data/0059/001541
2898 | data/0059/001544
2899 | data/0059/001546
2900 | data/0059/001553
2901 | data/0059/001555
2902 | data/0059/001559
2903 | data/0059/001564
2904 | data/0059/001565
2905 | data/0059/001567
2906 | data/0059/001574
2907 | data/0059/001576
2908 | data/0059/001581
2909 | data/0059/001583
2910 | data/0059/001585
2911 | data/0059/001606
2912 | data/0059/001612
2913 | data/0059/001613
2914 | data/0059/001621
2915 | data/0059/001628
2916 | data/0059/001637
2917 | data/0059/001647
2918 | data/0059/001661
2919 | data/0059/001662
2920 | data/0059/001669
2921 | data/0059/001670
2922 | data/0059/001677
2923 | data/0059/001678
2924 | data/0059/001682
2925 | data/0059/001683
2926 | data/0059/001690
2927 | data/0059/001692
2928 | data/0059/001696
2929 | data/0059/001698
2930 | data/0059/001699
2931 | data/0059/001704
2932 | data/0059/001707
2933 | data/0059/001734
2934 | data/0059/001747
2935 | data/0059/001777
2936 | data/0059/001782
2937 | data/0059/001787
2938 | data/0059/001800
2939 | data/0059/001803
2940 | data/0059/001806
2941 | data/0059/001809
2942 | data/0059/001812
2943 | data/0059/001817
2944 | data/0059/001819
2945 | data/0059/001820
2946 | data/0059/001821
2947 | data/0059/001822
2948 | data/0059/001824
2949 | data/0059/001857
--------------------------------------------------------------------------------
/chainer_dense_fusion/datasets/ycb/ycb_video_dataset.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import os.path as osp
3 | from PIL import Image
4 |
5 | from chainer.dataset import download
6 | from chainercv.chainer_experimental.datasets.sliceable import GetterDataset
7 | from chainercv import utils
8 | from chainercv.visualizations import vis_image
9 | from chainercv.visualizations import vis_semantic_segmentation
10 | import matplotlib.pyplot as plt
11 | import open3d
12 | from open3d import create_point_cloud_from_rgbd_image
13 | from open3d import create_rgbd_image_from_color_and_depth
14 | from open3d import PinholeCameraIntrinsic
15 | import scipy.io
16 |
17 | from chainer_dense_fusion.visualizations import vis_6d_pose_estimation
18 |
19 |
20 | ycb_root = 'pfnet/chainer-dense-fusion/ycb'
21 | tool_root = 'pfnet/chainer-dense-fusion/YCB_Video_toolbox'
22 | this_dir = osp.dirname(osp.realpath(__file__))
23 |
24 |
25 | class YCBVideoDataset(GetterDataset):
26 |
27 | def __init__(self, split='train'):
28 | if split not in ['train', 'val']:
29 | raise ValueError(
30 | 'YCB video dataset split {} is not supported'.format(split))
31 | super(YCBVideoDataset, self).__init__()
32 |
33 | self.data_dir = download.get_dataset_directory(ycb_root)
34 | self.tool_dir = download.get_dataset_directory(tool_root)
35 | with open(osp.join(this_dir, './config/label_names.txt')) as f:
36 | self.label_names = f.read().split('\n')[:-1]
37 |
38 | with open(osp.join(this_dir, './config/{}.txt'.format(split))) as f:
39 | self.ids = f.read().split('\n')
40 |
41 | self.add_getter('img', self._get_image)
42 | self.add_getter('depth', self._get_depth)
43 | self.add_getter('pose', self._get_pose)
44 | self.add_getter('pose_label', self._get_pose_label)
45 | self.add_getter('intrinsic', self._get_intrinsic)
46 | self.keys = ('img', 'depth', 'pose', 'pose_label', 'intrinsic')
47 |
48 | def __len__(self):
49 | return len(self.ids)
50 |
51 | def _get_image(self, i):
52 | imgpath = osp.join(self.data_dir, '{}-color.png'.format(self.ids[i]))
53 | img = utils.read_image(imgpath, dtype=np.float32, color=True)
54 | return img
55 |
56 | def _get_depth(self, i):
57 | depthpath = osp.join(self.data_dir, '{}-depth.png'.format(self.ids[i]))
58 | depth = np.asarray(Image.open(depthpath)).astype(np.float32)
59 | depth_scale = self._get_depth_scale(i)
60 | depth = depth / depth_scale
61 | return depth
62 |
63 | def _get_pose(self, i):
64 | metapath = osp.join(self.data_dir, '{}-meta.mat'.format(self.ids[i]))
65 | rt = scipy.io.loadmat(metapath)['poses'].transpose((2, 0, 1))
66 | pose = np.zeros((len(rt), 4, 4), dtype=np.float32)
67 | pose[:, 3, 3] = 1
68 | pose[:, :3, :3] = rt[:, :, :3]
69 | pose[:, :3, 3] = rt[:, :, 3]
70 | pose = pose.transpose((0, 2, 1))
71 | return pose
72 |
73 | def _get_pose_label(self, i):
74 | metapath = osp.join(self.data_dir, '{}-meta.mat'.format(self.ids[i]))
75 | object_ids = scipy.io.loadmat(metapath)['cls_indexes'].flatten()
76 | object_ids = object_ids - 1
77 | return object_ids
78 |
79 | def _get_depth_scale(self, i):
80 | metapath = osp.join(self.data_dir, '{}-meta.mat'.format(self.ids[i]))
81 | depth_scale = scipy.io.loadmat(metapath)['factor_depth'][0][0]
82 | return depth_scale
83 |
84 | def _get_intrinsic(self, i):
85 | metapath = osp.join(self.data_dir, '{}-meta.mat'.format(self.ids[i]))
86 | intrinsic_matrix = scipy.io.loadmat(metapath)['intrinsic_matrix']
87 | fx = intrinsic_matrix[0][0]
88 | fy = intrinsic_matrix[1][1]
89 | cx = intrinsic_matrix[0][2]
90 | cy = intrinsic_matrix[1][2]
91 | return fx, fy, cx, cy
92 |
93 | def get_object_pcd(self, lbl):
94 | xyzpath = osp.join(
95 | self.data_dir,
96 | './models/{}/points.xyz'.format(self.label_names[lbl]))
97 | obj_pcd = open3d.read_point_cloud(xyzpath)
98 | return obj_pcd
99 |
100 | def get_camera_pcd(self, i):
101 | img = self._get_image(i)
102 | depth = self._get_depth(i)
103 | _, H, W = img.shape
104 | fx, fy, cx, cy = self._get_intrinsic(i)
105 | intrinsic = PinholeCameraIntrinsic(W, H, fx, fy, cx, cy)
106 | img = open3d.Image(img.transpose((1, 2, 0)).astype(np.uint8))
107 | depth = open3d.Image(depth)
108 | rgbd = create_rgbd_image_from_color_and_depth(
109 | img, depth, depth_scale=1.0, convert_rgb_to_intensity=False)
110 | pcd = create_point_cloud_from_rgbd_image(rgbd, intrinsic)
111 | return pcd
112 |
113 | def visualize(self, i):
114 | img = self._get_image(i)
115 | depth = self._get_depth(i)
116 | f, axes = plt.subplots(1, 2, sharey=True)
117 | vis_image(img, ax=axes[0])
118 | axes[1].imshow(depth)
119 | plt.show()
120 |
121 | def visualize_3d(self, i):
122 | label = self._get_label(i)
123 | pose = self._get_pose(i)
124 |
125 | # camera pcd
126 | camera_pcd = self.get_camera_pcd(i)
127 | # model pcd
128 | object_pcds = []
129 | for lbl in label:
130 | object_pcds.append(self.get_object_pcd(lbl))
131 | vis_6d_pose_estimation(
132 | camera_pcd, object_pcds, pose)
133 |
134 |
135 | class YCBVideoDatasetPoseCNNSegmented(YCBVideoDataset):
136 |
137 | def __init__(self, split='val'):
138 | if split != 'val':
139 | raise ValueError(
140 | 'YCB video segmented dataset split {} is not supported'
141 | .format(split))
142 |
143 | super(YCBVideoDatasetPoseCNNSegmented, self).__init__(split)
144 | self.add_getter('lbl_img', self._get_lbl_img)
145 | self.add_getter('bbox', self._get_bbox)
146 | self.add_getter('bbox_label', self._get_bbox_label)
147 | self.keys = ('img', 'depth', 'lbl_img', 'bbox', 'bbox_label',
148 | 'pose', 'pose_label', 'intrinsic')
149 |
150 | def _get_lbl_img(self, i):
151 | datapath = osp.join(
152 | self.tool_dir, './results_PoseCNN_RSS2018/{0:06d}.mat'.format(i))
153 | data = scipy.io.loadmat(datapath)
154 | lbl_img = np.array(data['labels'], dtype=np.int32)
155 | lbl_img = lbl_img - 1
156 | return lbl_img
157 |
158 | def _get_bbox(self, i):
159 | datapath = osp.join(
160 | self.tool_dir, './results_PoseCNN_RSS2018/{0:06d}.mat'.format(i))
161 | data = scipy.io.loadmat(datapath)
162 | img = self._get_image(i)
163 | _, H, W = img.shape
164 | rois = np.array(data['rois'][:, 2:6], dtype=np.float32)
165 | bbox = rois[:, [1, 0, 3, 2]]
166 | return bbox
167 |
168 | def _get_bbox_label(self, i):
169 | datapath = osp.join(
170 | self.tool_dir, './results_PoseCNN_RSS2018/{0:06d}.mat'.format(i))
171 | data = scipy.io.loadmat(datapath)
172 | bbox_label = np.array(data['rois'][:, 1], dtype=np.int32) - 1
173 | return bbox_label
174 |
175 | def visualize(self, i):
176 | img = self._get_image(i)
177 | depth = self._get_depth(i)
178 | lbl_img = self._get_lbl_img(i)
179 | f, axes = plt.subplots(1, 3, sharey=True)
180 | vis_image(img, ax=axes[0])
181 | axes[1].imshow(depth)
182 | _, legend_handles = vis_semantic_segmentation(
183 | img, lbl_img + 1,
184 | label_names=['background'] + self.label_names, ax=axes[2])
185 | axes[2].legend(handles=legend_handles, bbox_to_anchor=(1, 1), loc=2)
186 | plt.show()
187 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/links/__init__.py:
--------------------------------------------------------------------------------
1 | from chainer_dense_fusion.links import model # NOQA
2 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/links/model/__init__.py:
--------------------------------------------------------------------------------
1 | from chainer_dense_fusion.links.model.dense_fusion import DenseFusion # NOQA
2 | from chainer_dense_fusion.links.model.posenet import PoseNet # NOQA
3 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/links/model/dense_fusion.py:
--------------------------------------------------------------------------------
1 | from __future__ import division
2 |
3 | import chainer
4 | from chainer.backends import cuda
5 | import chainer.functions as F
6 | import chainer.links as L
7 | from chainercv import utils
8 | import numpy as np
9 |
10 | from chainer_dense_fusion.links.model.posenet import PoseNet
11 | from chainer_dense_fusion.utils import generate_organized_pcd
12 | from chainer_dense_fusion.utils import generate_pose
13 |
14 |
15 | class DenseFusion(chainer.Chain):
16 |
17 | _models = {
18 | 'ycb_converted': {
19 | 'param': {'n_fg_class': 21},
20 | 'url': 'https://github.com/knorth55/'
21 | 'chainer-dense-fusion/releases/download/v0.0.1/'
22 | 'dense_fusion_ycb_converted_2019_02_03.npz',
23 | 'cv2': True
24 | },
25 | }
26 |
27 | def __init__(
28 | self, pretrained_model=None,
29 | n_fg_class=21, n_point=1000, n_iter=2,
30 | mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)
31 | ):
32 | super(DenseFusion, self).__init__()
33 | param, path = utils.prepare_pretrained_model(
34 | {'n_fg_class': n_fg_class}, pretrained_model, self._models)
35 | self.n_fg_class = param['n_fg_class']
36 | self.n_point = n_point
37 | self.n_iter = n_iter
38 |
39 | with self.init_scope():
40 | self.posenet = PoseNet(
41 | None, n_fg_class, n_point, mean, std)
42 | self.refiner = PoseRefineNet(
43 | n_fg_class, n_point)
44 |
45 | if pretrained_model is not None:
46 | chainer.serializers.load_npz(path, self)
47 |
48 | def predict(self, imgs, depths, lbl_imgs, bboxes, bbox_labels, intrinsics):
49 | prepared_imgs = []
50 | for img in imgs:
51 | img = self.posenet.prepare(img.astype(np.float32))
52 | prepared_imgs.append(img)
53 |
54 | poses = []
55 | labels = []
56 | scores = []
57 | for img, depth, lbl_img, bbox, bbox_label, intrinsic in zip(
58 | prepared_imgs, depths, lbl_imgs,
59 | bboxes, bbox_labels, intrinsics):
60 | # generete organized pcd
61 | organized_pcd = generate_organized_pcd(depth, intrinsic)
62 | H, W = img.shape[1:]
63 |
64 | label = []
65 | pose = []
66 | score = []
67 | for bb, bb_lbl in zip(bbox, bbox_label):
68 | if bb_lbl < 0:
69 | continue
70 | prepared_bb = self.posenet.prepare_bb(bb, H, W)
71 | if prepared_bb[0] is None:
72 | continue
73 | pcd_indice = self.posenet.get_pcd_indice(
74 | depth, lbl_img, prepared_bb, bb_lbl)
75 | if pcd_indice is None:
76 | continue
77 |
78 | ymin, xmin, ymax, xmax = prepared_bb
79 | pcd = organized_pcd[:, ymin:ymax, xmin:xmax].reshape((3, -1))
80 | masked_img = img[:, ymin:ymax, xmin:xmax]
81 | masked_pcd = pcd[:, pcd_indice]
82 | rot, trans, conf, h_img_var = self.posenet.predict_each(
83 | masked_img, masked_pcd, pcd_indice, bb_lbl)
84 | pse = generate_pose(rot, trans)
85 |
86 | # refiner
87 | for _ in range(self.n_iter):
88 | # translate: (Tx, Ty, Tz).T, rotation: R.T
89 | # (x', y', z').T = R.T.T * ((x, y, z).T - (Tx, Ty, Tz).T)
90 | refine_pcd = masked_pcd - pse[3, :3, None]
91 | refine_pcd = np.dot(pse[:3, :3], refine_pcd)
92 | with chainer.using_config('train', False), \
93 | chainer.function.no_backprop_mode():
94 | refine_pcd_var = chainer.Variable(
95 | self.xp.array(refine_pcd[None]))
96 | refine_cls_rot, refine_cls_trans = \
97 | self.refiner.__call__(h_img_var, refine_pcd_var)
98 |
99 | # variable -> cpu array
100 | refine_rot = cuda.to_cpu(refine_cls_rot.array)[0, bb_lbl]
101 | refine_trans = cuda.to_cpu(
102 | refine_cls_trans.array)[0, bb_lbl]
103 | refine_rot = refine_rot / np.linalg.norm(refine_rot)
104 | refine_pse = generate_pose(refine_rot, refine_trans)
105 | pse = np.dot(refine_pse, pse)
106 |
107 | pose.append(pse[None])
108 | label.append(bb_lbl)
109 | score.append(conf)
110 |
111 | pose = np.concatenate(pose, axis=0)
112 | label = np.array(label)
113 | score = np.array(score)
114 | poses.append(pose)
115 | labels.append(label)
116 | scores.append(score)
117 | return poses, labels, scores
118 |
119 |
120 | class PoseRefineNet(chainer.Chain):
121 |
122 | def __init__(self, n_fg_class, n_point):
123 | super(PoseRefineNet, self).__init__()
124 | self.n_fg_class = n_fg_class
125 | self.n_point = n_point
126 |
127 | with self.init_scope():
128 | self.extractor = PoseRefineNetExtractor(self.n_point)
129 | self.conv1_rot = L.Linear(1024, 512)
130 | self.conv1_trans = L.Linear(1024, 512)
131 | self.conv2_rot = L.Linear(512, 128)
132 | self.conv2_trans = L.Linear(512, 128)
133 | self.conv3_rot = L.Linear(128, self.n_fg_class * 4)
134 | self.conv3_trans = L.Linear(128, self.n_fg_class * 3)
135 |
136 | def __call__(self, h_img, pcd):
137 | B = pcd.shape[0]
138 | h = self.extractor(h_img, pcd)
139 | # conv1
140 | h_rot = F.relu(self.conv1_rot(h))
141 | h_trans = F.relu(self.conv1_trans(h))
142 | # conv2
143 | h_rot = F.relu(self.conv2_rot(h_rot))
144 | h_trans = F.relu(self.conv2_trans(h_trans))
145 | # conv3
146 | h_rot = self.conv3_rot(h_rot)
147 | h_trans = self.conv3_trans(h_trans)
148 | cls_rot = h_rot.reshape((B, self.n_fg_class, 4))
149 | cls_trans = h_trans.reshape((B, self.n_fg_class, 3))
150 | return cls_rot, cls_trans
151 |
152 |
153 | class PoseRefineNetExtractor(chainer.Chain):
154 |
155 | def __init__(self, n_point):
156 | super(PoseRefineNetExtractor, self).__init__()
157 | self.n_point = n_point
158 |
159 | with self.init_scope():
160 | # conv1
161 | self.conv1_img = L.Convolution1D(32, 64, 1)
162 | self.conv1_pcd = L.Convolution1D(3, 64, 1)
163 | # conv2
164 | self.conv2_img = L.Convolution1D(64, 128, 1)
165 | self.conv2_pcd = L.Convolution1D(64, 128, 1)
166 | # conv3, conv4
167 | self.conv3 = L.Convolution1D(384, 512, 1)
168 | self.conv4 = L.Convolution1D(512, 1024, 1)
169 |
170 | def __call__(self, h_img, pcd):
171 | B = h_img.shape[0]
172 | # conv1
173 | h_img = F.relu(self.conv1_img(h_img))
174 | h_pcd = F.relu(self.conv1_pcd(pcd))
175 | feat1 = F.concat((h_pcd, h_img), axis=1)
176 | # conv2
177 | h_img = F.relu(self.conv2_img(h_img))
178 | h_pcd = F.relu(self.conv2_pcd(h_pcd))
179 | feat2 = F.concat((h_pcd, h_img), axis=1)
180 | # conv3, conv4
181 | feat3 = F.concat((feat1, feat2), axis=1)
182 | h = F.relu(self.conv3(feat3))
183 | h = F.relu(self.conv4(h))
184 | h = F.average_pooling_1d(h, self.n_point)
185 | h = h.reshape((B, 1024))
186 | return h
187 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/links/model/posenet.py:
--------------------------------------------------------------------------------
1 | from __future__ import division
2 |
3 | import chainer
4 | from chainer.backends import cuda
5 | import chainer.functions as F
6 | import chainer.links as L
7 | from chainercv import utils
8 | import numpy as np
9 |
10 | from chainer_dense_fusion.links.model.pspnet import PSPNetExtractor
11 | from chainer_dense_fusion.links.model.resnet import ResNet18Extractor
12 | from chainer_dense_fusion.utils import generate_organized_pcd
13 | from chainer_dense_fusion.utils import generate_pose
14 |
15 |
16 | class PoseNet(chainer.Chain):
17 | _models = {
18 | 'ycb_converted': {
19 | 'param': {'n_fg_class': 21},
20 | 'url': 'https://github.com/knorth55/'
21 | 'chainer-dense-fusion/releases/download/v0.0.0/'
22 | 'posenet_ycb_converted_2019_02_01.npz',
23 | 'cv2': True
24 | },
25 | }
26 |
27 | def __init__(
28 | self, pretrained_model=None,
29 | n_fg_class=21, n_point=1000,
30 | mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)
31 | ):
32 | super(PoseNet, self).__init__()
33 | param, path = utils.prepare_pretrained_model(
34 | {'n_fg_class': n_fg_class}, pretrained_model, self._models)
35 | self.n_fg_class = param['n_fg_class']
36 | self.n_point = n_point
37 | self.mean = np.array(mean, dtype=np.float32)[:, None, None]
38 | self.std = np.array(std, dtype=np.float32)[:, None, None]
39 |
40 | with self.init_scope():
41 | # extractor
42 | self.resnet_extractor = ResNet18Extractor()
43 | self.pspnet_extractor = PSPNetExtractor()
44 | self.posenet_extractor = PoseNetExtractor(self.n_point)
45 | # conv1
46 | self.conv1_rot = L.Convolution1D(1408, 640, 1)
47 | self.conv1_trans = L.Convolution1D(1408, 640, 1)
48 | self.conv1_conf = L.Convolution1D(1408, 640, 1)
49 | # conv2
50 | self.conv2_rot = L.Convolution1D(640, 256, 1)
51 | self.conv2_trans = L.Convolution1D(640, 256, 1)
52 | self.conv2_conf = L.Convolution1D(640, 256, 1)
53 | # conv3
54 | self.conv3_rot = L.Convolution1D(256, 128, 1)
55 | self.conv3_trans = L.Convolution1D(256, 128, 1)
56 | self.conv3_conf = L.Convolution1D(256, 128, 1)
57 | # conv4
58 | self.conv4_rot = L.Convolution1D(128, self.n_fg_class * 4, 1)
59 | self.conv4_trans = L.Convolution1D(128, self.n_fg_class * 3, 1)
60 | self.conv4_conf = L.Convolution1D(128, self.n_fg_class, 1)
61 |
62 | if pretrained_model is not None:
63 | chainer.serializers.load_npz(path, self)
64 |
65 | def __call__(self, img, pcd, pcd_indice):
66 | assert img.shape[0] == 1
67 | pcd_indice = pcd_indice.array[0]
68 |
69 | # resnet extractor
70 | h_img = self.resnet_extractor(img)
71 | # pspnet extractor
72 | h_img = self.pspnet_extractor(h_img)
73 | # posenet extractor
74 | B, C = h_img.shape[:2]
75 | h_img = h_img.reshape((B, C, -1))
76 | h_img = h_img[:, :, pcd_indice]
77 |
78 | h = self.posenet_extractor(h_img, pcd)
79 |
80 | # conv1
81 | h_rot = F.relu(self.conv1_rot(h))
82 | h_trans = F.relu(self.conv1_trans(h))
83 | h_conf = F.relu(self.conv1_conf(h))
84 |
85 | # conv2
86 | h_rot = F.relu(self.conv2_rot(h_rot))
87 | h_trans = F.relu(self.conv2_trans(h_trans))
88 | h_conf = F.relu(self.conv2_conf(h_conf))
89 | # conv3
90 | h_rot = F.relu(self.conv3_rot(h_rot))
91 | h_trans = F.relu(self.conv3_trans(h_trans))
92 | h_conf = F.relu(self.conv3_conf(h_conf))
93 | # conv4
94 | cls_rot = self.conv4_rot(h_rot)
95 | cls_trans = self.conv4_trans(h_trans)
96 | cls_conf = F.sigmoid(self.conv4_conf(h_conf))
97 |
98 | cls_rot = cls_rot.reshape((B, self.n_fg_class, 4, self.n_point))
99 | cls_trans = cls_trans.reshape((B, self.n_fg_class, 3, self.n_point))
100 | cls_conf = cls_conf.reshape((B, self.n_fg_class, self.n_point))
101 | return cls_rot, cls_trans, cls_conf, h_img
102 |
103 | def prepare(self, img):
104 | img = ((img - self.mean) / self.std).astype(np.float32, copy=False)
105 | return img
106 |
107 | def prepare_bb(self, bb, H, W):
108 | if bb[2] - bb[0] < 40 or bb[3] - bb[1] < 40:
109 | return None, None, None, None
110 | bb = bb.copy()
111 | bb[:2] = bb[:2].astype(np.int32) + 1
112 | bb[2:] = bb[2:].astype(np.int32) - 1
113 | bb = bb.astype(np.int32)
114 | bb_h = ((bb[2] - bb[0]) // 40 + 1) * 40
115 | bb_w = ((bb[3] - bb[1]) // 40 + 1) * 40
116 | bb_yc = ((bb[2] + bb[0]) / 2).astype(np.int32)
117 | bb_xc = ((bb[3] + bb[1]) / 2).astype(np.int32)
118 | ymin = bb_yc - (bb_h / 2).astype(np.int32)
119 | ymax = bb_yc + (bb_h / 2).astype(np.int32)
120 | xmin = bb_xc - (bb_w / 2).astype(np.int32)
121 | xmax = bb_xc + (bb_w / 2).astype(np.int32)
122 | if ymin < 0:
123 | ymax = ymax - ymin
124 | ymin = 0
125 | if ymax > H:
126 | ymin = ymin - ymax + H
127 | ymax = H
128 | if xmin < 0:
129 | xmax = xmax - xmin
130 | xmin = 0
131 | if xmax > W:
132 | xmin = xmin - xmax + W
133 | xmax = W
134 | return ymin, xmin, ymax, xmax
135 |
136 | def get_pcd_indice(self, depth, lbl_img, bb, bb_lbl):
137 | ymin, xmin, ymax, xmax = bb
138 | msk = np.logical_and(lbl_img == bb_lbl, depth != 0)
139 | pcd_indice = np.where(msk[ymin:ymax, xmin:xmax].flatten())[0]
140 |
141 | if len(pcd_indice) == 0:
142 | return None
143 | if len(pcd_indice) > self.n_point:
144 | pcd_indice_msk = np.zeros(len(pcd_indice), dtype=bool)
145 | pcd_indice_msk[:self.n_point] = True
146 | pcd_indice = pcd_indice[
147 | np.random.permutation(pcd_indice_msk)]
148 | else:
149 | pcd_indice = np.pad(
150 | pcd_indice,
151 | (0, self.n_point - len(pcd_indice)), 'wrap')
152 | return pcd_indice
153 |
154 | def predict_each(self, masked_img, masked_pcd, pcd_indice, bb_lbl):
155 | with chainer.using_config('train', False), \
156 | chainer.function.no_backprop_mode():
157 | masked_img_var = chainer.Variable(
158 | self.xp.array(masked_img[None]))
159 | masked_pcd_var = chainer.Variable(
160 | self.xp.array(masked_pcd[None]))
161 | pcd_indice_var = chainer.Variable(
162 | self.xp.array(pcd_indice[None]))
163 | cls_rot, cls_trans, cls_conf, h_img = \
164 | self.__call__(
165 | masked_img_var, masked_pcd_var, pcd_indice_var)
166 |
167 | # variable -> cpu array
168 | rot = cuda.to_cpu(cls_rot.array)[0, bb_lbl]
169 | trans = cuda.to_cpu(cls_trans.array)[0, bb_lbl]
170 | conf = cuda.to_cpu(cls_conf.array)[0, bb_lbl]
171 |
172 | # (B, C, 4, N) -> (N, 4)
173 | rot = rot.transpose((1, 0))
174 | rot = rot / np.linalg.norm(rot, axis=1)[:, None]
175 | # (B, C, 3, N) -> (N, 3)
176 | trans = trans.transpose((1, 0))
177 | trans = trans + masked_pcd.transpose((1, 0))
178 |
179 | # get max conf value
180 | maxid = np.argmax(conf)
181 | max_rot = rot[maxid]
182 | max_trans = trans[maxid]
183 | max_conf = conf[maxid]
184 | return max_rot, max_trans, max_conf, h_img
185 |
186 | def predict(self, imgs, depths, lbl_imgs, bboxes, bbox_labels, intrinsics):
187 | prepared_imgs = []
188 | for img in imgs:
189 | img = self.prepare(img.astype(np.float32))
190 | prepared_imgs.append(img)
191 |
192 | poses = []
193 | labels = []
194 | scores = []
195 | for img, depth, lbl_img, bbox, bbox_label, intrinsic in zip(
196 | prepared_imgs, depths, lbl_imgs,
197 | bboxes, bbox_labels, intrinsics):
198 | # generete organized pcd
199 | organized_pcd = generate_organized_pcd(depth, intrinsic)
200 | H, W = img.shape[1:]
201 |
202 | label = []
203 | pose = []
204 | score = []
205 | for bb, bb_lbl in zip(bbox, bbox_label):
206 | if bb_lbl < 0:
207 | continue
208 | prepared_bb = self.prepare_bb(bb, H, W)
209 | if prepared_bb[0] is None:
210 | continue
211 | pcd_indice = self.get_pcd_indice(
212 | depth, lbl_img, prepared_bb, bb_lbl)
213 | if pcd_indice is None:
214 | continue
215 |
216 | ymin, xmin, ymax, xmax = prepared_bb
217 | pcd = organized_pcd[:, ymin:ymax, xmin:xmax].reshape((3, -1))
218 | masked_img = img[:, ymin:ymax, xmin:xmax]
219 | masked_pcd = pcd[:, pcd_indice]
220 | rot, trans, conf, _ = self.predict_each(
221 | masked_img, masked_pcd, pcd_indice, bb_lbl)
222 | pse = generate_pose(rot, trans)
223 |
224 | pose.append(pse[None])
225 | label.append(bb_lbl)
226 | score.append(conf)
227 |
228 | pose = np.concatenate(pose, axis=0)
229 | label = np.array(label)
230 | score = np.array(score)
231 | poses.append(pose)
232 | labels.append(label)
233 | scores.append(score)
234 | return poses, labels, scores
235 |
236 |
237 | class PoseNetExtractor(chainer.Chain):
238 |
239 | def __init__(self, n_point):
240 | super(PoseNetExtractor, self).__init__()
241 | with self.init_scope():
242 | # conv1
243 | self.conv1_img = L.Convolution1D(32, 64, 1)
244 | self.conv1_pcd = L.Convolution1D(3, 64, 1)
245 | # conv2
246 | self.conv2_img = L.Convolution1D(64, 128, 1)
247 | self.conv2_pcd = L.Convolution1D(64, 128, 1)
248 | # conv3, conv4
249 | self.conv3 = L.Convolution1D(256, 512, 1)
250 | self.conv4 = L.Convolution1D(512, 1024, 1)
251 |
252 | self.n_point = n_point
253 |
254 | def __call__(self, h_img, pcd):
255 | B = h_img.shape[0]
256 | # conv1
257 | h_img = F.relu(self.conv1_img(h_img))
258 | h_pcd = F.relu(self.conv1_pcd(pcd))
259 | feat1 = F.concat((h_pcd, h_img), axis=1)
260 | # conv2
261 | h_img = F.relu(self.conv2_img(h_img))
262 | h_pcd = F.relu(self.conv2_pcd(h_pcd))
263 | feat2 = F.concat((h_pcd, h_img), axis=1)
264 | # conv3, conv4
265 | h = F.relu(self.conv3(feat2))
266 | h = F.relu(self.conv4(h))
267 | h = F.average_pooling_1d(h, self.n_point)
268 | h = h.reshape((B, 1024, 1))
269 | feat3 = F.repeat(h, self.n_point, axis=2)
270 | feat = F.concat((feat1, feat2, feat3), axis=1)
271 | return feat
272 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/links/model/pspnet.py:
--------------------------------------------------------------------------------
1 | import chainer
2 | import chainer.functions as F
3 | import chainer.links as L
4 | import numpy as np
5 |
6 |
7 | class PSPNetExtractor(chainer.Chain):
8 |
9 | def __init__(self):
10 | super(PSPNetExtractor, self).__init__()
11 | sizes = [1, 2, 3, 6]
12 | with self.init_scope():
13 | self.psp = PSPModule(512, 1024, sizes)
14 | # 1/8 -> 1/4
15 | self.up1 = PSPUpsample(1024, 256)
16 | # 1/4 -> 1/2
17 | self.up2 = PSPUpsample(256, 64)
18 | # 1/2 -> 1
19 | self.up3 = PSPUpsample(64, 64)
20 | self.conv1 = L.Convolution2D(64, 32, 1)
21 |
22 | def __call__(self, x):
23 | # psp module
24 | h = self.psp(x)
25 | h = F.dropout(h, 0.3)
26 | # upsample
27 | h = F.dropout(self.up1(h), 0.15)
28 | h = F.dropout(self.up2(h), 0.15)
29 | h = self.up3(h)
30 | # head
31 | h = self.conv1(h)
32 | feat = F.log_softmax(h)
33 | return feat
34 |
35 |
36 | class PSPModule(chainer.Chain):
37 |
38 | def __init__(self, in_channels, out_channels, sizes):
39 | super(PSPModule, self).__init__()
40 | with self.init_scope():
41 | for i in range(len(sizes)):
42 | setattr(
43 | self, 'conv{}'.format(i+1),
44 | L.Convolution2D(in_channels, in_channels, 1, nobias=True))
45 | self.bottleneck = L.Convolution2D(
46 | in_channels * (len(sizes) + 1), out_channels, 1)
47 | self.sizes = sizes
48 |
49 | def __call__(self, x):
50 | H, W = x.shape[2:]
51 | kh = H // np.array(self.sizes)
52 | kw = W // np.array(self.sizes)
53 | ksizes = list(zip(kh, kw))
54 |
55 | # extract
56 | hs = []
57 | for i, ksize in enumerate(ksizes):
58 | h = F.average_pooling_2d(x, ksize, ksize)
59 | h = getattr(self, 'conv{}'.format(i+1))(h)
60 | h = F.resize_images(h, (H, W))
61 | hs.append(h)
62 | hs.append(x)
63 | h = F.relu(self.bottleneck(F.concat(hs, axis=1)))
64 | return h
65 |
66 |
67 | class PSPUpsample(chainer.Chain):
68 |
69 | def __init__(self, in_channels, out_channels):
70 | super(PSPUpsample, self).__init__()
71 | with self.init_scope():
72 | self.conv = L.Convolution2D(in_channels, out_channels, 3, 1, pad=1)
73 | self.prelu = L.PReLU()
74 |
75 | def __call__(self, x):
76 | H, W = x.shape[2:]
77 | h = F.resize_images(x, (H*2, W*2))
78 | h = self.prelu(self.conv(h))
79 | return h
80 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/links/model/resnet.py:
--------------------------------------------------------------------------------
1 | import chainer
2 | import chainer.functions as F
3 | import chainer.links as L
4 |
5 |
6 | class ResNet18Extractor(chainer.Chain):
7 |
8 | def __init__(self):
9 | super(ResNet18Extractor, self).__init__()
10 | with self.init_scope():
11 | self.conv1 = L.Convolution2D(3, 64, 7, 2, 3, nobias=True)
12 | self.res2 = ResBlock(2, 64, 64, 1, 1, residual_conv=False)
13 | self.res3 = ResBlock(2, 64, 128, 2, 1)
14 | self.res4 = ResBlock(2, 128, 256, 1, 2)
15 | self.res5 = ResBlock(2, 256, 512, 1, 4)
16 |
17 | def __call__(self, x):
18 | # 1 -> 1/2
19 | h = F.relu(self.conv1(x))
20 | # 1/2 -> 1/4
21 | h = F.max_pooling_2d(h, ksize=3, stride=2, pad=1, cover_all=False)
22 | # 1/4 -> 1/8
23 | h = self.res2(h)
24 | h = self.res3(h)
25 | h = self.res4(h)
26 | h = self.res5(h)
27 | return h
28 |
29 |
30 | class ResBlock(chainer.Chain):
31 |
32 | def __init__(self, n_layer, in_channels, out_channels,
33 | stride, dilate, residual_conv=True):
34 | super(ResBlock, self).__init__()
35 | with self.init_scope():
36 | self.a = Bottleneck(
37 | in_channels, out_channels, stride, 1,
38 | residual_conv=residual_conv)
39 | for i in range(n_layer - 1):
40 | name = 'b{}'.format(i + 1)
41 | bottleneck = Bottleneck(
42 | out_channels, out_channels, 1, dilate,
43 | residual_conv=False)
44 | setattr(self, name, bottleneck)
45 | self.n_layer = n_layer
46 |
47 | def __call__(self, x):
48 | h = self.a(x)
49 | for i in range(self.n_layer - 1):
50 | h = getattr(self, 'b{}'.format(i + 1))(h)
51 | return h
52 |
53 |
54 | class Bottleneck(chainer.Chain):
55 |
56 | def __init__(self, in_channels, out_channels, stride, dilate,
57 | initialW=None, residual_conv=False):
58 | super(Bottleneck, self).__init__()
59 | with self.init_scope():
60 | # pad = dilate
61 | self.conv1 = L.Convolution2D(
62 | in_channels, out_channels, 3, stride,
63 | pad=dilate, dilate=dilate, nobias=True)
64 | self.conv2 = L.Convolution2D(
65 | out_channels, out_channels, 3, 1,
66 | pad=dilate, dilate=dilate, nobias=True)
67 | if residual_conv:
68 | self.residual_conv = L.Convolution2D(
69 | in_channels, out_channels, 1, stride,
70 | nobias=True)
71 |
72 | def __call__(self, x):
73 | h = F.relu(self.conv1(x))
74 | h = self.conv2(h)
75 |
76 | if hasattr(self, 'residual_conv'):
77 | residual = self.residual_conv(x)
78 | else:
79 | residual = x
80 | h = h + residual
81 | h = F.relu(h)
82 | return h
83 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/utils.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 |
3 |
4 | def generate_organized_pcd(depth, intrinsic):
5 | H, W = depth.shape
6 | fx, fy, cx, cy = intrinsic
7 | xmap = np.repeat(np.arange(H)[:, None], W, 1).astype(np.float32)
8 | ymap = np.repeat(np.arange(W)[None], H, 0).astype(np.float32)
9 | pcd_x = (ymap - cx) * depth / fx
10 | pcd_y = (xmap - cy) * depth / fy
11 | organized_pcd = np.concatenate(
12 | (pcd_x[None], pcd_y[None], depth[None]), axis=0)
13 | return organized_pcd
14 |
15 |
16 | def generate_pose(rot, trans):
17 | pose = quaternion_to_rotation_matrix(rot)
18 | pose[3, :3] = trans
19 | return pose
20 |
21 |
22 | def quaternion_to_rotation_matrix(quat):
23 | q = quat.copy()
24 | n = np.dot(q, q)
25 | if n < np.finfo(q.dtype).eps:
26 | return np.identity(4)
27 | q = q * np.sqrt(2.0 / n)
28 | q = np.outer(q, q)
29 | rot_matrix = np.array(
30 | [[1.0 - q[2, 2] - q[3, 3], q[1, 2] + q[3, 0], q[1, 3] - q[2, 0], 0.0],
31 | [q[1, 2] - q[3, 0], 1.0 - q[1, 1] - q[3, 3], q[2, 3] + q[1, 0], 0.0],
32 | [q[1, 3] + q[2, 0], q[2, 3] - q[1, 0], 1.0 - q[1, 1] - q[2, 2], 0.0],
33 | [0.0, 0.0, 0.0, 1.0]],
34 | dtype=q.dtype)
35 | return rot_matrix
36 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/visualizations/__init__.py:
--------------------------------------------------------------------------------
1 | from chainer_dense_fusion.visualizations.vis_6d_pose_estimation import vis_6d_pose_estimation # NOQA
2 |
--------------------------------------------------------------------------------
/chainer_dense_fusion/visualizations/vis_6d_pose_estimation.py:
--------------------------------------------------------------------------------
1 | import copy
2 | import numpy as np
3 |
4 | from chainercv.visualizations.colormap import voc_colormap
5 |
6 | import open3d
7 |
8 |
9 | flip_rot_matrix = np.array(
10 | [[1, 0, 0, 0],
11 | [0, -1, 0, 0],
12 | [0, 0, -1, 0],
13 | [0, 0, 0, 1]],
14 | dtype=np.float32)
15 |
16 |
17 | def vis_6d_pose_estimation(camera_pcd, object_pcds, pose):
18 | pcds = []
19 | pcd = copy.deepcopy(camera_pcd)
20 | pcd.transform(flip_rot_matrix)
21 | pcds.append(pcd)
22 |
23 | obj_pcds = copy.deepcopy(object_pcds)
24 | colors = voc_colormap(list(range(1, len(pose) + 1)))
25 | for obj_pcd, pse, color in zip(obj_pcds, pose, colors):
26 | obj_pcd.paint_uniform_color(color)
27 | obj_pcd.transform(pse.transpose((1, 0)))
28 | obj_pcd.transform(flip_rot_matrix)
29 | pcds.append(obj_pcd)
30 | open3d.draw_geometries(pcds)
31 |
--------------------------------------------------------------------------------
/examples/dense_fusion/README.md:
--------------------------------------------------------------------------------
1 | # 6D Pose Estimation with YCB Video Dataset
2 |
3 | ## Note
4 |
5 | You need to download data below manually.
6 | - Download [YCB Video Dataset](https://drive.google.com/uc?id=1if4VoEXNx9W3XCn0Y7Fp15B4GpcYbyYi) in `~/.chainer/dataset/pfnet/chainer-dense-fusion/ycb`.
7 | - Download [PoseCNN results](https://github.com/yuxng/YCB_Video_toolbox/raw/master/results_PoseCNN_RSS2018.zip) in `~/.chainer/dataset/pfnet/chainer-dense-fusion/YCB_Video_toolbox`
8 |
9 | ## Inference
10 |
11 | ### Converted Model
12 | Converted model of Dense Fusion can be dowloaded [here](https://github.com/knorth55/chainer-dense-fusion/releases/download/v0.0.1/dense_fusion_ycb_converted_2019_02_03.npz) and
13 | the one of PoseNet can be dowloaded [here](https://github.com/knorth55/chainer-dense-fusion/releases/download/v0.0.0/posenet_ycb_converted_2019_02_01.npz).
14 |
15 | This model is converted from a model trained with original repository.
16 |
17 | ### Command for Dense Fusion
18 |
19 | ```bash
20 | python demo.py --gpu --random
21 | ```
22 | 
23 |
24 |
25 | ### Command for PoseNet (No iterative refiner)
26 |
27 | You can try Dense Fusion with no iterative refiner with command below.
28 |
29 | ```bash
30 | python demo.py --gpu --random --no-refiner
31 | ```
32 | 
33 |
34 |
35 | ## Model conversion
36 |
37 | Convert PyTorch model to chainer model.
38 |
39 | ### Dense Fusion
40 |
41 | ```bash
42 | python pth2npz.py --out
43 | ```
44 |
45 | ### PoseNet (No iterative refiner)
46 |
47 | ```bash
48 | python pth2npz_posenet.py --out
49 | ```
50 |
--------------------------------------------------------------------------------
/examples/dense_fusion/demo.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import random
3 |
4 | from chainer.backends import cuda
5 |
6 | from chainer_dense_fusion.datasets.ycb import YCBVideoDatasetPoseCNNSegmented
7 | from chainer_dense_fusion.links.model import DenseFusion
8 | from chainer_dense_fusion.links.model import PoseNet
9 | from chainer_dense_fusion.visualizations import vis_6d_pose_estimation
10 |
11 |
12 | def main():
13 | parser = argparse.ArgumentParser()
14 | parser.add_argument('--no-refiner', action='store_true')
15 | parser.add_argument('--pretrained-model')
16 | parser.add_argument('--random', action='store_true')
17 | parser.add_argument('--gpu', type=int, default=0)
18 | args = parser.parse_args()
19 |
20 | # dataset
21 | dataset = YCBVideoDatasetPoseCNNSegmented(split='val')
22 | ids = list(range(len(dataset)))
23 | if args.random:
24 | random.shuffle(ids)
25 |
26 | # model
27 | if args.pretrained_model is None:
28 | args.pretrained_model = 'ycb_converted'
29 | if args.no_refiner:
30 | model = PoseNet(
31 | pretrained_model=args.pretrained_model,
32 | n_fg_class=len(dataset.label_names),
33 | n_point=1000)
34 | else:
35 | model = DenseFusion(
36 | pretrained_model=args.pretrained_model,
37 | n_fg_class=len(dataset.label_names),
38 | n_point=1000, n_iter=2)
39 |
40 | if args.gpu >= 0:
41 | cuda.get_device_from_id(args.gpu).use()
42 | model.to_gpu()
43 |
44 | for i in ids:
45 | img, depth, lbl_img, bbox, bbox_label, _, _, intrinsic = dataset[i]
46 | poses, labels, _ = model.predict(
47 | [img], [depth], [lbl_img], [bbox], [bbox_label], [intrinsic])
48 | pose = poses[0]
49 | label = labels[0]
50 |
51 | camera_pcd = dataset.get_camera_pcd(i)
52 | object_pcds = []
53 | for lbl in label:
54 | object_pcds.append(dataset.get_object_pcd(lbl))
55 | vis_6d_pose_estimation(
56 | camera_pcd, object_pcds, pose)
57 |
58 |
59 | if __name__ == '__main__':
60 | main()
61 |
--------------------------------------------------------------------------------
/examples/dense_fusion/pth2npz.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import warnings
3 |
4 | import chainer
5 | import torch
6 |
7 | from chainer_dense_fusion.links.model import DenseFusion
8 |
9 | from pth2npz_posenet import copy_layer
10 | from pth2npz_posenet import posenet_torch2chainer
11 |
12 |
13 | def refiner_torch2chainer(model, params):
14 | rtc_dict = {'r': 'rot', 't': 'trans', 'c': 'conf'}
15 | emb_dict = {'e_conv': 'img', 'conv': 'pcd'}
16 | param_names = list(params.keys())
17 | uncopied_param_names = param_names.copy()
18 | for param_name in param_names:
19 | # pose net conv
20 | if param_name.startswith('conv'):
21 | param_layer_name, param_type = param_name.split('.')
22 | layer_num = int(param_layer_name[4])
23 | layer_type = rtc_dict[param_layer_name[-1]]
24 | layer = getattr(model, 'conv{}_{}'.format(layer_num, layer_type))
25 | copy_layer(layer, params, param_name, param_type)
26 | uncopied_param_names.remove(param_name)
27 | # pose refine net extractor
28 | if param_name.startswith('feat'):
29 | param_layer_name, param_type = param_name.split('.')[1:]
30 | layer_num = int(param_layer_name[-1])
31 | if layer_num in [1, 2]:
32 | layer_type = emb_dict[param_layer_name[:-1]]
33 | layer_name = 'conv{}_{}'.format(layer_num, layer_type)
34 | elif layer_num in [5, 6]:
35 | layer_name = 'conv{}'.format(layer_num - 2)
36 | else:
37 | raise ValueError(
38 | 'param: {} is not supported'.format(param_name))
39 | layer = getattr(model.extractor, layer_name)
40 | copy_layer(layer, params, param_name, param_type)
41 | uncopied_param_names.remove(param_name)
42 |
43 | if len(uncopied_param_names) > 0:
44 | warnings.warn('Some params are not copied:')
45 | for param_name in uncopied_param_names:
46 | print('param_name: {} not copied'.format(param_name))
47 | else:
48 | print('All valid parameter are copied.')
49 |
50 |
51 | def main():
52 | parser = argparse.ArgumentParser()
53 | parser.add_argument('--out', '-o', type=str, default=None)
54 | parser.add_argument('estimator_pthfile', type=str)
55 | parser.add_argument('refiner_pthfile', type=str)
56 | args = parser.parse_args()
57 |
58 | chainer_model = DenseFusion(
59 | n_fg_class=21, n_point=1000)
60 | print('start loading estimator params')
61 | estimator_torch_params = torch.load(args.estimator_pthfile)
62 | print('finish loading estimator params')
63 | print('start copying estimator params')
64 | posenet_torch2chainer(
65 | chainer_model.posenet, estimator_torch_params)
66 | print('finish copying estimator params')
67 | print('start loading estimator params')
68 | refiner_torch_params = torch.load(args.refiner_pthfile)
69 | print('finish loading refiner params')
70 | print('start copying refiner params')
71 | refiner_torch2chainer(
72 | chainer_model.refiner, refiner_torch_params)
73 | print('finish copying refiner params')
74 | if args.out is None:
75 | args.out = 'dense_fusion_ycb_converted.npz'
76 |
77 | print('start saving npz')
78 | chainer.serializers.save_npz(args.out, chainer_model)
79 | print('finish saving npz')
80 |
81 |
82 | if __name__ == '__main__':
83 | main()
84 |
--------------------------------------------------------------------------------
/examples/dense_fusion/pth2npz_posenet.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import numpy as np
3 | import warnings
4 |
5 | import chainer
6 | import torch
7 |
8 | from chainer_dense_fusion.links.model import PoseNet
9 |
10 |
11 | def copy_layer(layer, params, param_name, param_type):
12 | param = np.asarray(params[param_name])
13 | if param_type == 'weight':
14 | assert layer.W.array.shape == param.shape, param_name
15 | layer.W.array[:] = param
16 | elif param_type == 'bias':
17 | assert layer.b.array.shape == param.shape, param_name
18 | layer.b.array[:] = param
19 | else:
20 | raise ValueError(
21 | 'param_name: {} is not supported'.format(param_name))
22 | # print('param_name: {} copied'.format(param_name))
23 |
24 |
25 | def posenet_torch2chainer(model, params):
26 | rtc_dict = {'r': 'rot', 't': 'trans', 'c': 'conf'}
27 | emb_dict = {'e_conv': 'img', 'conv': 'pcd'}
28 | param_names = list(params.keys())
29 | uncopied_param_names = param_names.copy()
30 | for param_name in param_names:
31 | # pose net conv
32 | if param_name.startswith('conv'):
33 | param_layer_name, param_type = param_name.split('.')
34 | layer_num = int(param_layer_name[4])
35 | layer_type = rtc_dict[param_layer_name[-1]]
36 | layer = getattr(model, 'conv{}_{}'.format(layer_num, layer_type))
37 | copy_layer(layer, params, param_name, param_type)
38 | uncopied_param_names.remove(param_name)
39 | # pose net extractor
40 | elif param_name.startswith('feat'):
41 | param_layer_name, param_type = param_name.split('.')[1:]
42 | layer_num = int(param_layer_name[-1])
43 | if layer_num in [1, 2]:
44 | layer_type = emb_dict[param_layer_name[:-1]]
45 | layer_name = 'conv{}_{}'.format(layer_num, layer_type)
46 | elif layer_num in [5, 6]:
47 | layer_name = 'conv{}'.format(layer_num - 2)
48 | else:
49 | raise ValueError(
50 | 'param: {} is not supported'.format(param_name))
51 | layer = getattr(model.posenet_extractor, layer_name)
52 | copy_layer(layer, params, param_name, param_type)
53 | uncopied_param_names.remove(param_name)
54 | # pspnet classifier
55 | elif param_name.startswith('cnn.model.module.classifier'):
56 | uncopied_param_names.remove(param_name)
57 | # pspnet conv1
58 | elif param_name.startswith('cnn.model.module.final'):
59 | layer = model.pspnet_extractor.conv1
60 | param_type = param_name.split('.')[-1]
61 | copy_layer(layer, params, param_name, param_type)
62 | uncopied_param_names.remove(param_name)
63 | # pspnet upsample
64 | elif param_name.startswith('cnn.model.module.up'):
65 | param_module_name, _, layer_num, param_type = \
66 | param_name.split('.')[3:]
67 | module_num = int(param_module_name[-1])
68 | module_name = 'up{}'.format(module_num)
69 | layer_num = int(layer_num)
70 | if layer_num == 1:
71 | layer_name = 'conv'
72 | layer = getattr(
73 | getattr(model.pspnet_extractor, module_name), layer_name)
74 | copy_layer(layer, params, param_name, param_type)
75 | uncopied_param_names.remove(param_name)
76 | elif layer_num == 2:
77 | layer_name = 'prelu'
78 | layer = getattr(
79 | getattr(model.pspnet_extractor, module_name), layer_name)
80 | param = np.asarray(params[param_name])
81 | layer.W.array = np.array(param[0], dtype=np.float32)
82 | uncopied_param_names.remove(param_name)
83 | else:
84 | raise ValueError(
85 | 'param: {} is not supported'.format(param_name))
86 | # pspnet bottleneck
87 | elif param_name.startswith('cnn.model.module.psp.bottleneck'):
88 | param_type = param_name.split('.')[-1]
89 | layer = model.pspnet_extractor.psp.bottleneck
90 | copy_layer(layer, params, param_name, param_type)
91 | uncopied_param_names.remove(param_name)
92 | # pspnet stages
93 | elif param_name.startswith('cnn.model.module.psp.stages'):
94 | layer_num, _, param_type = param_name.split('.')[5:]
95 | layer_num = int(layer_num) + 1
96 | layer = getattr(
97 | model.pspnet_extractor.psp, 'conv{}'.format(layer_num))
98 | copy_layer(layer, params, param_name, param_type)
99 | uncopied_param_names.remove(param_name)
100 | # pspnet resnet conv1
101 | elif param_name.startswith('cnn.model.module.feats.conv1'):
102 | param_type = param_name.split('.')[-1]
103 | layer = model.resnet_extractor.conv1
104 | copy_layer(layer, params, param_name, param_type)
105 | uncopied_param_names.remove(param_name)
106 | # pspnet resnet2-5
107 | elif param_name.startswith('cnn.model.module.feats.layer'):
108 | if param_name.split('.')[6].startswith('conv'):
109 | param_resblock_name, block_num, layer_name, param_type = \
110 | param_name.split('.')[4:]
111 | elif param_name.split('.')[6].startswith('downsample'):
112 | param_resblock_name, block_num, _, _, param_type = \
113 | param_name.split('.')[4:]
114 | layer_name = 'residual_conv'
115 | else:
116 | raise ValueError(
117 | 'param: {} is not supported'.format(param_name))
118 | resblock_num = int(param_resblock_name[-1]) + 1
119 | resblock = getattr(
120 | model.resnet_extractor, 'res{}'.format(resblock_num))
121 | block_num = int(block_num)
122 | if block_num == 0:
123 | block_name = 'a'
124 | else:
125 | block_name = 'b{}'.format(block_num)
126 | block = getattr(resblock, block_name)
127 | layer = getattr(block, layer_name)
128 | copy_layer(layer, params, param_name, param_type)
129 | uncopied_param_names.remove(param_name)
130 |
131 | if len(uncopied_param_names) > 0:
132 | warnings.warn('Some params are not copied:')
133 | for param_name in uncopied_param_names:
134 | print('param_name: {} not copied'.format(param_name))
135 | else:
136 | print('All valid parameter are copied.')
137 |
138 |
139 | def main():
140 | parser = argparse.ArgumentParser()
141 | parser.add_argument('--out', '-o', type=str, default=None)
142 | parser.add_argument('pthfile', type=str)
143 | args = parser.parse_args()
144 |
145 | chainer_model = PoseNet(
146 | n_fg_class=21, n_point=1000)
147 | print('start loading params')
148 | torch_params = torch.load(args.pthfile)
149 | print('finish loading params')
150 | print('start copying params')
151 | posenet_torch2chainer(chainer_model, torch_params)
152 | print('finish copying params')
153 | if args.out is None:
154 | outpath = 'posenet_ycb_converted.npz'
155 | else:
156 | outpath = args.out
157 | print('start saving npz')
158 | chainer.serializers.save_npz(outpath, chainer_model)
159 | print('finish saving npz')
160 |
161 |
162 | if __name__ == '__main__':
163 | main()
164 |
--------------------------------------------------------------------------------
/examples/ycb/README.md:
--------------------------------------------------------------------------------
1 | # YCB Video Dataset
2 |
3 | ## Visualize dataset
4 |
5 | ```bash
6 | $ python visualize_dataset.py --help
7 | usage: visualize_dataset.py [-h] [--random] [--cad]
8 |
9 | optional arguments:
10 | -h, --help show this help message and exit
11 | --random
12 | --cad
13 | ```
14 |
--------------------------------------------------------------------------------
/examples/ycb/visualize_dataset.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import random
3 |
4 | from chainer_dense_fusion.datasets.ycb import YCBVideoDataset
5 |
6 |
7 | def main():
8 | parser = argparse.ArgumentParser()
9 | parser.add_argument('--random', action='store_true')
10 | parser.add_argument('--cad', action='store_true')
11 | args = parser.parse_args()
12 |
13 | dataset = YCBVideoDataset(split='val')
14 | ids = list(range(len(dataset)))
15 | if args.random:
16 | random.shuffle(ids)
17 |
18 | for i in ids:
19 | if args.cad:
20 | dataset.visualize_3d(i)
21 | else:
22 | dataset.visualize(i)
23 |
24 |
25 | if __name__ == '__main__':
26 | main()
27 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | chainer
2 | chainercv
3 | cython
4 | numpy
5 | open3d-python
6 | scipy
7 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import find_packages
2 | from setuptools import setup
3 |
4 |
5 | version = '0.0.0'
6 |
7 |
8 | setup(
9 | name='chainer_dense_fusion',
10 | version=version,
11 | packages=find_packages(),
12 | install_requires=open('requirements.txt').readlines(),
13 | description='',
14 | long_description=open('README.md').read(),
15 | author='Shingo Kitagawa',
16 | author_email='shingogo.5511@gmail.com',
17 | url='https://github.com/knorth55/chainer-dense-fusion',
18 | license='MIT',
19 | keywords='machine-learning',
20 | )
21 |
--------------------------------------------------------------------------------