Repository: microsoft/torchgeo

Issue:
FAIR1M Dataset labels_root name
### Description

I just downloaded the FAIR1M dataset and found that the labelXmls.zip files extract to a folder named `labelXml` instead of the folder expected by `torchgeo.datasets.FAIR1M` shown below. 

https://github.com/microsoft/torchgeo/blob/d897e3374bf15450a02d0bde4344ea64b66ae5fe/torchgeo/datasets/fair1m.py#L160

I can get around this by extracting to the expected folder myself but this is not how the zip extracts by default. Did this maybe change recently in the dataset?

### Steps to reproduce

1. Download FAIR1M dataset from the Google Drive on their website (https://www.gaofen-challenge.com/benchmark)
2. Create dataset object
```
from torchgeo.datasets import FAIR1M
ds = FAIR1M(root='/data/FAIR1M/train/part2')
```
3. Check data root and see the folder name mismatch. This occurs in all the data folders.
```
$ ls /data/FAIR1M/train/part2
images  images.zip  labelXml  labelXmls.zip
$ ls /data/FAIR1M/train/part1
images  images.zip  labelXml  labelXmls.zip
$ ls /data/FAIR1M/validation
images  images.zip  labelXml  labelXmls.zip
```

### Version

0.4.0


Discussion:

Resolving patch:
diff --git a/torchgeo/datasets/fair1m.py b/torchgeo/datasets/fair1m.py
--- a/torchgeo/datasets/fair1m.py
+++ b/torchgeo/datasets/fair1m.py
@@ -53,7 +53,7 @@ def parse_pascal_voc(path: str) -> Dict[str, Any]:
 class FAIR1M(NonGeoDataset):
     """FAIR1M dataset.
 
-    The `FAIR1M <http://gaofen-challenge.com/benchmark>`__
+    The `FAIR1M <https://www.gaofen-challenge.com/benchmark>`__
     dataset is a dataset for remote sensing fine-grained oriented object detection.
 
     Dataset features:
@@ -157,9 +157,9 @@ class FAIR1M(NonGeoDataset):
     }
 
     image_root: str = "images"
-    labels_root: str = "labelXmls"
+    labels_root: str = "labelXml"
     filenames = ["images.zip", "labelXmls.zip"]
-    md5s = ["a460fe6b1b5b276bf856ce9ac72d6568", "ca8666dc43a553f8d65e5dc671a8ac3c"]
+    md5s = ["a460fe6b1b5b276bf856ce9ac72d6568", "80f833ff355f91445c92a0c0c1fa7414"]
 
     def __init__(
         self,


Test patch:
diff --git a/tests/data/fair1m/labelXmls/0.xml b/tests/data/fair1m/labelXml/0.xml
similarity index 100%
rename from tests/data/fair1m/labelXmls/0.xml
rename to tests/data/fair1m/labelXml/0.xml
diff --git a/tests/data/fair1m/labelXmls/1.xml b/tests/data/fair1m/labelXml/1.xml
similarity index 100%
rename from tests/data/fair1m/labelXmls/1.xml
rename to tests/data/fair1m/labelXml/1.xml
diff --git a/tests/data/fair1m/labelXmls/2.xml b/tests/data/fair1m/labelXml/2.xml
similarity index 100%
rename from tests/data/fair1m/labelXmls/2.xml
rename to tests/data/fair1m/labelXml/2.xml
diff --git a/tests/data/fair1m/labelXmls/3.xml b/tests/data/fair1m/labelXml/3.xml
similarity index 100%
rename from tests/data/fair1m/labelXmls/3.xml
rename to tests/data/fair1m/labelXml/3.xml
diff --git a/tests/data/fair1m/labelXmls.zip b/tests/data/fair1m/labelXmls.zip
Binary files a/tests/data/fair1m/labelXmls.zip and b/tests/data/fair1m/labelXmls.zip differ
diff --git a/tests/datasets/test_fair1m.py b/tests/datasets/test_fair1m.py
--- a/tests/datasets/test_fair1m.py
+++ b/tests/datasets/test_fair1m.py
@@ -17,7 +17,7 @@
 class TestFAIR1M:
     @pytest.fixture
     def dataset(self, monkeypatch: MonkeyPatch) -> FAIR1M:
-        md5s = ["f278aba757de9079225db42107e09e30", "aca59017207141951b53e91795d8179e"]
+        md5s = ["f278aba757de9079225db42107e09e30", "ecef7bd264fcbc533bec5e9e1cacaff1"]
         monkeypatch.setattr(FAIR1M, "md5s", md5s)
         root = os.path.join("tests", "data", "fair1m")
         transforms = nn.Identity()