diff --git a/data/pascal/README.md b/data/pascal/README.md new file mode 100644 index 000000000..40151942b --- /dev/null +++ b/data/pascal/README.md @@ -0,0 +1,21 @@ +# PASCAL VOC and SBD + +PASCAL VOC is a standard recognition dataset and benchmark with detection and semantic segmentation challenges. +The Semantic Boundary Dataset (SBD) is a further annotation of the PASCAL VOC data that provides more semantic segmentation and instance segmentation masks. + +PASCAL VOC has a private test set and [leaderboard for semantic segmentation](http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=6). + +The train/val/test splits of PASCAL VOC segmentation challenge and SBD diverge. +Most notably VOC 2011 segval intersects with SBD train. +Care must be taken for proper evaluation by excluding images from the train or val splits. + +We train on the 8,498 images of SBD train. +We validate on the non-intersecting set defined in the included `seg11valid.txt`. + +Refer to `classes.txt` for the listing of classes in model output order. +Refer to `../voc_layers.py` for the Python data layer for this dataset. + +See the dataset sites for download: + +- PASCAL VOC 2012: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/ +- SBD: http://www.cs.berkeley.edu/~bharath2/codes/SBD/download.html diff --git a/data/pascal/classes.txt b/data/pascal/classes.txt new file mode 100644 index 000000000..00838d4c6 --- /dev/null +++ b/data/pascal/classes.txt @@ -0,0 +1,24 @@ +background +aeroplane +bicycle +bird +boat +bottle +bus +car +cat +chair +cow +diningtable +dog +horse +motorbike +person +pottedplant +sheep +sofa +train +tvmonitor + +and 255 is the ignore label that marks pixels excluded from learning and +evaluation by the PASCAL VOC ground truth. diff --git a/data/seg11valid.txt b/data/pascal/seg11valid.txt similarity index 100% rename from data/seg11valid.txt rename to data/pascal/seg11valid.txt diff --git a/voc-fcn16s/net.py b/voc-fcn16s/net.py index e6f3364eb..05944c7f6 100644 --- a/voc-fcn16s/net.py +++ b/voc-fcn16s/net.py @@ -21,7 +21,7 @@ def fcn(split): else: pydata_params['voc_dir'] = '../../data/pascal/VOC2011' pylayer = 'VOCSegDataLayer' - n.data, n.label = L.Python(module='layers', layer=pylayer, + n.data, n.label = L.Python(module='voc_layers', layer=pylayer, ntop=2, param_str=str(pydata_params)) # the base net diff --git a/voc-fcn32s/net.py b/voc-fcn32s/net.py index 842d87b90..df9e524b4 100644 --- a/voc-fcn32s/net.py +++ b/voc-fcn32s/net.py @@ -21,7 +21,7 @@ def fcn(split): else: pydata_params['voc_dir'] = '../../data/pascal/VOC2011' pylayer = 'VOCSegDataLayer' - n.data, n.label = L.Python(module='layers', layer=pylayer, + n.data, n.label = L.Python(module='voc_layers', layer=pylayer, ntop=2, param_str=str(pydata_params)) # the base net diff --git a/voc-fcn8s/net.py b/voc-fcn8s/net.py index 23d75f2a0..913c808b1 100644 --- a/voc-fcn8s/net.py +++ b/voc-fcn8s/net.py @@ -21,7 +21,7 @@ def fcn(split): else: pydata_params['voc_dir'] = '../../data/pascal/VOC2011' pylayer = 'VOCSegDataLayer' - n.data, n.label = L.Python(module='layers', layer=pylayer, + n.data, n.label = L.Python(module='voc_layers', layer=pylayer, ntop=2, param_str=str(pydata_params)) # the base net diff --git a/layers.py b/voc_layers.py similarity index 100% rename from layers.py rename to voc_layers.py