We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Improvements to VHR-10 documentation
Need better docs describing the format of the dataset.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `torchgeo/datasets/nwpu.py`
Content:
```
1 import os
2 from typing import Any, Callable, Optional, Tuple
3 
4 from PIL import Image
5 from torchvision.datasets import VisionDataset
6 from torchvision.datasets.utils import (
7     check_integrity,
8     download_file_from_google_drive,
9     download_url,
10 )
11 
12 
13 class VHR10(VisionDataset):
14     """`NWPU VHR-10 <https://doi.org/10.1016/j.isprsjprs.2014.10.002>`_ Dataset.
15 
16     Includes object detection bounding boxes from original paper and instance
17     segmentation masks from follow-up publications. If you use this dataset in your
18     research, please cite the following papers:
19 
20     * https://doi.org/10.1016/j.isprsjprs.2014.10.002
21     * https://doi.org/10.1109/IGARSS.2019.8898573
22     * https://doi.org/10.3390/rs12060989
23     """
24 
25     base_folder = "vhr10"
26     image_meta = {
27         "file_id": "1--foZ3dV5OCsqXQXT84UeKtrAqc5CkAE",
28         "filename": "NWPU VHR-10 dataset.rar",
29         "md5": "d30a7ff99d92123ebb0b3a14d9102081",
30     }
31     target_meta = {
32         "url": (
33             "https://raw.githubusercontent.com/chaozhong2010/VHR-10_dataset_coco/"
34             "master/NWPU%20VHR-10_dataset_coco/annotations.json"
35         ),
36         "filename": "annotations.json",
37         "md5": "7c76ec50c17a61bb0514050d20f22c08",
38     }
39 
40     def __init__(
41         self,
42         root: str,
43         transform: Optional[Callable[[Any], Any]] = None,
44         target_transform: Optional[Callable[[Any], Any]] = None,
45         transforms: Optional[Callable[[Any], Any]] = None,
46         download: bool = False,
47     ) -> None:
48         """Initialize a new VHR-10 dataset instance.
49 
50         Parameters:
51             root: root directory where dataset can be found
52             transform: a function/transform that takes in a PIL image and returns a
53                 transformed version
54             target_transform: a function/transform that takes in the target and
55                 transforms it
56             transforms: a function/transform that takes input sample and its target as
57                 entry and returns a transformed version
58             download: if True, download dataset and store it in the root directory
59         """
60         super().__init__(root, transforms, transform, target_transform)
61 
62         if download:
63             self.download()
64 
65         if not self._check_integrity():
66             raise RuntimeError(
67                 "Dataset not found or corrupted. "
68                 + "You can use download=True to download it"
69             )
70 
71         # Must be installed to parse annotations file
72         from pycocotools.coco import COCO
73 
74         self.coco = COCO(
75             os.path.join(
76                 self.root,
77                 self.base_folder,
78                 "NWPU VHR-10 dataset",
79                 self.target_meta["filename"],
80             )
81         )
82         self.ids = list(sorted(self.coco.imgs.keys()))
83 
84     def __getitem__(self, index: int) -> Tuple[Any, Any]:
85         """Return an index within the dataset.
86 
87         Parameters:
88             idx: index to return
89 
90         Returns:
91             data and label at that index
92         """
93         id = self.ids[index]
94         image = self._load_image(id)
95         annot = self._load_target(id)
96 
97         target = dict(image_id=id, annotations=annot)
98 
99         if self.transforms is not None:
100             image, target = self.transforms(image, target)
101 
102         return image, target
103 
104     def __len__(self) -> int:
105         """Return the number of data points in the dataset.
106 
107         Returns:
108             length of the dataset
109         """
110         return len(self.ids)
111 
112     def _load_image(self, id: int) -> Image.Image:
113         """Load a single image.
114 
115         Parameters:
116             id: unique ID of the image
117 
118         Returns:
119             the image
120         """
121         path = self.coco.loadImgs(id)[0]["file_name"]
122         return Image.open(
123             os.path.join(
124                 self.root,
125                 self.base_folder,
126                 "NWPU VHR-10 dataset",
127                 "positive image set",
128                 path,
129             )
130         ).convert("RGB")
131 
132     def _load_target(self, id: int) -> Any:
133         """Load the annotations for a single image.
134 
135         Parameters:
136             id: unique ID of the image
137 
138         Returns:
139             the annotations
140         """
141         return self.coco.loadAnns(self.coco.getAnnIds(id))
142 
143     def _check_integrity(self) -> bool:
144         """Check integrity of dataset.
145 
146         Returns:
147             True if dataset MD5s match, else False
148         """
149         image: bool = check_integrity(
150             os.path.join(self.root, self.base_folder, self.image_meta["filename"]),
151             self.image_meta["md5"],
152         )
153         target: bool = check_integrity(
154             os.path.join(
155                 self.root,
156                 self.base_folder,
157                 "NWPU VHR-10 dataset",
158                 self.target_meta["filename"],
159             ),
160             self.target_meta["md5"],
161         )
162         return image and target
163 
164     def download(self) -> None:
165         """Download the dataset and extract it."""
166 
167         if self._check_integrity():
168             print("Files already downloaded and verified")
169             return
170 
171         download_file_from_google_drive(
172             self.image_meta["file_id"],
173             os.path.join(self.root, self.base_folder),
174             self.image_meta["filename"],
175             self.image_meta["md5"],
176         )
177 
178         # Must be installed to extract RAR file
179         import rarfile
180 
181         with rarfile.RarFile(
182             os.path.join(self.root, self.base_folder, self.image_meta["filename"])
183         ) as f:
184             f.extractall(os.path.join(self.root, self.base_folder))
185 
186         download_url(
187             self.target_meta["url"],
188             os.path.join(self.root, self.base_folder, "NWPU VHR-10 dataset"),
189             self.target_meta["filename"],
190             self.target_meta["md5"],
191         )
192
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/torchgeo/datasets/nwpu.py b/torchgeo/datasets/nwpu.py
--- a/torchgeo/datasets/nwpu.py
+++ b/torchgeo/datasets/nwpu.py
@@ -11,7 +11,31 @@
 
 
 class VHR10(VisionDataset):
-    """`NWPU VHR-10 <https://doi.org/10.1016/j.isprsjprs.2014.10.002>`_ Dataset.
+    """Northwestern Polytechnical University (NWPU) very-high-resolution ten-class
+    (VHR-10) remote sensing image dataset.
+
+    Consists of 800 VHR optical remote sensing images, where 715 color images were
+    acquired from Google Earth with the spatial resolution ranging from 0.5 to 2 m,
+    and 85 pansharpened color infrared (CIR) images were acquired from Vaihingen data
+    with a spatial resolution of 0.08 m.
+
+    The data set is divided into two sets:
+
+    1. Positive image set (650 images) which contains at least one target in an image
+    2. Negative image set (150 images) does not contain any targets
+
+    The positive image set consists of objects from ten classes:
+
+    1. Airplanes (757)
+    2. Ships (302)
+    3. Storage tanks (655)
+    4. Baseball diamonds (390)
+    5. Tennis courts (524)
+    6. Basketball courts (159)
+    7. Ground track fields (163)
+    8. Harbors (224)
+    9. Bridges (124)
+    10. Vehicles (477)
 
     Includes object detection bounding boxes from original paper and instance
     segmentation masks from follow-up publications. If you use this dataset in your

{"golden_diff": "diff --git a/torchgeo/datasets/nwpu.py b/torchgeo/datasets/nwpu.py\n--- a/torchgeo/datasets/nwpu.py\n+++ b/torchgeo/datasets/nwpu.py\n@@ -11,7 +11,31 @@\n \n \n class VHR10(VisionDataset):\n-    \"\"\"`NWPU VHR-10 <https://doi.org/10.1016/j.isprsjprs.2014.10.002>`_ Dataset.\n+    \"\"\"Northwestern Polytechnical University (NWPU) very-high-resolution ten-class\n+    (VHR-10) remote sensing image dataset.\n+\n+    Consists of 800 VHR optical remote sensing images, where 715 color images were\n+    acquired from Google Earth with the spatial resolution ranging from 0.5 to 2 m,\n+    and 85 pansharpened color infrared (CIR) images were acquired from Vaihingen data\n+    with a spatial resolution of 0.08 m.\n+\n+    The data set is divided into two sets:\n+\n+    1. Positive image set (650 images) which contains at least one target in an image\n+    2. Negative image set (150 images) does not contain any targets\n+\n+    The positive image set consists of objects from ten classes:\n+\n+    1. Airplanes (757)\n+    2. Ships (302)\n+    3. Storage tanks (655)\n+    4. Baseball diamonds (390)\n+    5. Tennis courts (524)\n+    6. Basketball courts (159)\n+    7. Ground track fields (163)\n+    8. Harbors (224)\n+    9. Bridges (124)\n+    10. Vehicles (477)\n \n     Includes object detection bounding boxes from original paper and instance\n     segmentation masks from follow-up publications. If you use this dataset in your\n", "issue": "Improvements to VHR-10 documentation\nNeed better docs describing the format of the dataset.\n", "before_files": [{"content": "import os\nfrom typing import Any, Callable, Optional, Tuple\n\nfrom PIL import Image\nfrom torchvision.datasets import VisionDataset\nfrom torchvision.datasets.utils import (\n    check_integrity,\n    download_file_from_google_drive,\n    download_url,\n)\n\n\nclass VHR10(VisionDataset):\n    \"\"\"`NWPU VHR-10 <https://doi.org/10.1016/j.isprsjprs.2014.10.002>`_ Dataset.\n\n    Includes object detection bounding boxes from original paper and instance\n    segmentation masks from follow-up publications. If you use this dataset in your\n    research, please cite the following papers:\n\n    * https://doi.org/10.1016/j.isprsjprs.2014.10.002\n    * https://doi.org/10.1109/IGARSS.2019.8898573\n    * https://doi.org/10.3390/rs12060989\n    \"\"\"\n\n    base_folder = \"vhr10\"\n    image_meta = {\n        \"file_id\": \"1--foZ3dV5OCsqXQXT84UeKtrAqc5CkAE\",\n        \"filename\": \"NWPU VHR-10 dataset.rar\",\n        \"md5\": \"d30a7ff99d92123ebb0b3a14d9102081\",\n    }\n    target_meta = {\n        \"url\": (\n            \"https://raw.githubusercontent.com/chaozhong2010/VHR-10_dataset_coco/\"\n            \"master/NWPU%20VHR-10_dataset_coco/annotations.json\"\n        ),\n        \"filename\": \"annotations.json\",\n        \"md5\": \"7c76ec50c17a61bb0514050d20f22c08\",\n    }\n\n    def __init__(\n        self,\n        root: str,\n        transform: Optional[Callable[[Any], Any]] = None,\n        target_transform: Optional[Callable[[Any], Any]] = None,\n        transforms: Optional[Callable[[Any], Any]] = None,\n        download: bool = False,\n    ) -> None:\n        \"\"\"Initialize a new VHR-10 dataset instance.\n\n        Parameters:\n            root: root directory where dataset can be found\n            transform: a function/transform that takes in a PIL image and returns a\n                transformed version\n            target_transform: a function/transform that takes in the target and\n                transforms it\n            transforms: a function/transform that takes input sample and its target as\n                entry and returns a transformed version\n            download: if True, download dataset and store it in the root directory\n        \"\"\"\n        super().__init__(root, transforms, transform, target_transform)\n\n        if download:\n            self.download()\n\n        if not self._check_integrity():\n            raise RuntimeError(\n                \"Dataset not found or corrupted. \"\n                + \"You can use download=True to download it\"\n            )\n\n        # Must be installed to parse annotations file\n        from pycocotools.coco import COCO\n\n        self.coco = COCO(\n            os.path.join(\n                self.root,\n                self.base_folder,\n                \"NWPU VHR-10 dataset\",\n                self.target_meta[\"filename\"],\n            )\n        )\n        self.ids = list(sorted(self.coco.imgs.keys()))\n\n    def __getitem__(self, index: int) -> Tuple[Any, Any]:\n        \"\"\"Return an index within the dataset.\n\n        Parameters:\n            idx: index to return\n\n        Returns:\n            data and label at that index\n        \"\"\"\n        id = self.ids[index]\n        image = self._load_image(id)\n        annot = self._load_target(id)\n\n        target = dict(image_id=id, annotations=annot)\n\n        if self.transforms is not None:\n            image, target = self.transforms(image, target)\n\n        return image, target\n\n    def __len__(self) -> int:\n        \"\"\"Return the number of data points in the dataset.\n\n        Returns:\n            length of the dataset\n        \"\"\"\n        return len(self.ids)\n\n    def _load_image(self, id: int) -> Image.Image:\n        \"\"\"Load a single image.\n\n        Parameters:\n            id: unique ID of the image\n\n        Returns:\n            the image\n        \"\"\"\n        path = self.coco.loadImgs(id)[0][\"file_name\"]\n        return Image.open(\n            os.path.join(\n                self.root,\n                self.base_folder,\n                \"NWPU VHR-10 dataset\",\n                \"positive image set\",\n                path,\n            )\n        ).convert(\"RGB\")\n\n    def _load_target(self, id: int) -> Any:\n        \"\"\"Load the annotations for a single image.\n\n        Parameters:\n            id: unique ID of the image\n\n        Returns:\n            the annotations\n        \"\"\"\n        return self.coco.loadAnns(self.coco.getAnnIds(id))\n\n    def _check_integrity(self) -> bool:\n        \"\"\"Check integrity of dataset.\n\n        Returns:\n            True if dataset MD5s match, else False\n        \"\"\"\n        image: bool = check_integrity(\n            os.path.join(self.root, self.base_folder, self.image_meta[\"filename\"]),\n            self.image_meta[\"md5\"],\n        )\n        target: bool = check_integrity(\n            os.path.join(\n                self.root,\n                self.base_folder,\n                \"NWPU VHR-10 dataset\",\n                self.target_meta[\"filename\"],\n            ),\n            self.target_meta[\"md5\"],\n        )\n        return image and target\n\n    def download(self) -> None:\n        \"\"\"Download the dataset and extract it.\"\"\"\n\n        if self._check_integrity():\n            print(\"Files already downloaded and verified\")\n            return\n\n        download_file_from_google_drive(\n            self.image_meta[\"file_id\"],\n            os.path.join(self.root, self.base_folder),\n            self.image_meta[\"filename\"],\n            self.image_meta[\"md5\"],\n        )\n\n        # Must be installed to extract RAR file\n        import rarfile\n\n        with rarfile.RarFile(\n            os.path.join(self.root, self.base_folder, self.image_meta[\"filename\"])\n        ) as f:\n            f.extractall(os.path.join(self.root, self.base_folder))\n\n        download_url(\n            self.target_meta[\"url\"],\n            os.path.join(self.root, self.base_folder, \"NWPU VHR-10 dataset\"),\n            self.target_meta[\"filename\"],\n            self.target_meta[\"md5\"],\n        )\n", "path": "torchgeo/datasets/nwpu.py"}], "after_files": [{"content": "import os\nfrom typing import Any, Callable, Optional, Tuple\n\nfrom PIL import Image\nfrom torchvision.datasets import VisionDataset\nfrom torchvision.datasets.utils import (\n    check_integrity,\n    download_file_from_google_drive,\n    download_url,\n)\n\n\nclass VHR10(VisionDataset):\n    \"\"\"Northwestern Polytechnical University (NWPU) very-high-resolution ten-class\n    (VHR-10) remote sensing image dataset.\n\n    Consists of 800 VHR optical remote sensing images, where 715 color images were\n    acquired from Google Earth with the spatial resolution ranging from 0.5 to 2 m,\n    and 85 pansharpened color infrared (CIR) images were acquired from Vaihingen data\n    with a spatial resolution of 0.08 m.\n\n    The data set is divided into two sets:\n\n    1. Positive image set (650 images) which contains at least one target in an image\n    2. Negative image set (150 images) does not contain any targets\n\n    The positive image set consists of objects from ten classes:\n\n    1. Airplanes (757)\n    2. Ships (302)\n    3. Storage tanks (655)\n    4. Baseball diamonds (390)\n    5. Tennis courts (524)\n    6. Basketball courts (159)\n    7. Ground track fields (163)\n    8. Harbors (224)\n    9. Bridges (124)\n    10. Vehicles (477)\n\n    Includes object detection bounding boxes from original paper and instance\n    segmentation masks from follow-up publications. If you use this dataset in your\n    research, please cite the following papers:\n\n    * https://doi.org/10.1016/j.isprsjprs.2014.10.002\n    * https://doi.org/10.1109/IGARSS.2019.8898573\n    * https://doi.org/10.3390/rs12060989\n    \"\"\"\n\n    base_folder = \"vhr10\"\n    image_meta = {\n        \"file_id\": \"1--foZ3dV5OCsqXQXT84UeKtrAqc5CkAE\",\n        \"filename\": \"NWPU VHR-10 dataset.rar\",\n        \"md5\": \"d30a7ff99d92123ebb0b3a14d9102081\",\n    }\n    target_meta = {\n        \"url\": (\n            \"https://raw.githubusercontent.com/chaozhong2010/VHR-10_dataset_coco/\"\n            \"master/NWPU%20VHR-10_dataset_coco/annotations.json\"\n        ),\n        \"filename\": \"annotations.json\",\n        \"md5\": \"7c76ec50c17a61bb0514050d20f22c08\",\n    }\n\n    def __init__(\n        self,\n        root: str,\n        transform: Optional[Callable[[Any], Any]] = None,\n        target_transform: Optional[Callable[[Any], Any]] = None,\n        transforms: Optional[Callable[[Any], Any]] = None,\n        download: bool = False,\n    ) -> None:\n        \"\"\"Initialize a new VHR-10 dataset instance.\n\n        Parameters:\n            root: root directory where dataset can be found\n            transform: a function/transform that takes in a PIL image and returns a\n                transformed version\n            target_transform: a function/transform that takes in the target and\n                transforms it\n            transforms: a function/transform that takes input sample and its target as\n                entry and returns a transformed version\n            download: if True, download dataset and store it in the root directory\n        \"\"\"\n        super().__init__(root, transforms, transform, target_transform)\n\n        if download:\n            self.download()\n\n        if not self._check_integrity():\n            raise RuntimeError(\n                \"Dataset not found or corrupted. \"\n                + \"You can use download=True to download it\"\n            )\n\n        # Must be installed to parse annotations file\n        from pycocotools.coco import COCO\n\n        self.coco = COCO(\n            os.path.join(\n                self.root,\n                self.base_folder,\n                \"NWPU VHR-10 dataset\",\n                self.target_meta[\"filename\"],\n            )\n        )\n        self.ids = list(sorted(self.coco.imgs.keys()))\n\n    def __getitem__(self, index: int) -> Tuple[Any, Any]:\n        \"\"\"Return an index within the dataset.\n\n        Parameters:\n            idx: index to return\n\n        Returns:\n            data and label at that index\n        \"\"\"\n        id = self.ids[index]\n        image = self._load_image(id)\n        annot = self._load_target(id)\n\n        target = dict(image_id=id, annotations=annot)\n\n        if self.transforms is not None:\n            image, target = self.transforms(image, target)\n\n        return image, target\n\n    def __len__(self) -> int:\n        \"\"\"Return the number of data points in the dataset.\n\n        Returns:\n            length of the dataset\n        \"\"\"\n        return len(self.ids)\n\n    def _load_image(self, id: int) -> Image.Image:\n        \"\"\"Load a single image.\n\n        Parameters:\n            id: unique ID of the image\n\n        Returns:\n            the image\n        \"\"\"\n        path = self.coco.loadImgs(id)[0][\"file_name\"]\n        return Image.open(\n            os.path.join(\n                self.root,\n                self.base_folder,\n                \"NWPU VHR-10 dataset\",\n                \"positive image set\",\n                path,\n            )\n        ).convert(\"RGB\")\n\n    def _load_target(self, id: int) -> Any:\n        \"\"\"Load the annotations for a single image.\n\n        Parameters:\n            id: unique ID of the image\n\n        Returns:\n            the annotations\n        \"\"\"\n        return self.coco.loadAnns(self.coco.getAnnIds(id))\n\n    def _check_integrity(self) -> bool:\n        \"\"\"Check integrity of dataset.\n\n        Returns:\n            True if dataset MD5s match, else False\n        \"\"\"\n        image: bool = check_integrity(\n            os.path.join(self.root, self.base_folder, self.image_meta[\"filename\"]),\n            self.image_meta[\"md5\"],\n        )\n        target: bool = check_integrity(\n            os.path.join(\n                self.root,\n                self.base_folder,\n                \"NWPU VHR-10 dataset\",\n                self.target_meta[\"filename\"],\n            ),\n            self.target_meta[\"md5\"],\n        )\n        return image and target\n\n    def download(self) -> None:\n        \"\"\"Download the dataset and extract it.\"\"\"\n\n        if self._check_integrity():\n            print(\"Files already downloaded and verified\")\n            return\n\n        download_file_from_google_drive(\n            self.image_meta[\"file_id\"],\n            os.path.join(self.root, self.base_folder),\n            self.image_meta[\"filename\"],\n            self.image_meta[\"md5\"],\n        )\n\n        # Must be installed to extract RAR file\n        import rarfile\n\n        with rarfile.RarFile(\n            os.path.join(self.root, self.base_folder, self.image_meta[\"filename\"])\n        ) as f:\n            f.extractall(os.path.join(self.root, self.base_folder))\n\n        download_url(\n            self.target_meta[\"url\"],\n            os.path.join(self.root, self.base_folder, \"NWPU VHR-10 dataset\"),\n            self.target_meta[\"filename\"],\n            self.target_meta[\"md5\"],\n        )\n", "path": "torchgeo/datasets/nwpu.py"}]}