Hlings / AcroFOD

(ECCV2022) The official PyTorch implementation of the "AcroFOD: An Adaptive Method for Cross-domain Few-shot Object Detection".
Apache License 2.0
54 stars 7 forks source link

Plz provide the tools and instructions for processing the raw data, thanks! #1

Closed LanduRi closed 1 year ago

LanduRi commented 1 year ago

It's a wonderful job. Plz provide the tools and instructions for processing the raw data.

Hlings commented 1 year ago

Sure. I'm preparing relevant codes and instructions.

LanduRi commented 1 year ago

Sure. I'm preparing relevant codes and instructions.

Please also provide the code for domain-aware data augmentation, thx :)

Hlings commented 1 year ago

Hi. I have provided the tools for processing raw cityscapes to yolo-style dataset in ./tools/cityscpaes_to_yolo.py :). You can follow the instruction in the file to prepare the data. The domain-aware data augmentation has been provided. -- For image-level, please refer to ./utils/dataset.py. The image-level mix augmentation is the same as 'mosaic' and 'mixup' in implementations. I just mix the source data and limited target data into the same dataset to perform domain-mix augmentation (refer to ./data/city_and_foggy8_1.yaml). -- For box-level, please refer to ./utils/copy_pastev3.py for more details.

Hope the above reply will deal with your issue :)

LanduRi commented 1 year ago

Is the code complete, including optimization and augmentation? I conducted experiments on the Cityscapes->Foggycity, and the results did not match the mAP50 (41.1) in the paper. Could you give me some guidance on reproducing the experimental results of the paper? Thank you very much.

Hlings commented 1 year ago

Sure, the code is complete.

Reproduce results: 1: Data preparation. You can see the visualizations to verify. 2: Training config. I guess the problem is the training config. I check the provided config in the readme and find some misleadings :(. To reproduce mAP50 (41.1) on C to F, you can try the following config:

python train_MMD.py --img 640 --batch 12 --epochs 600 --data ./data/city_and_foggy8_3.yaml --cfg ./models/yolov5x.yaml --hyp ./data/hyp_aug/mm1.yaml --weights '' --name "test"

The changes are mainly in batch-size and data augmentation.

Batch-size: I found the detector is hard to converge on C to F with a normal batch-size like 16. A smaller batch-size from 8~12 will get better results. Data augmentation: Empirically, the cross-domain mixup augmentation is very important to get better results on C to F (provided in mm1.yaml). You can check ablation studies in the main text of this paper.

Hope the above reply is helpful :). I will also provide a more detailed instructions nowadays.

LanduRi commented 1 year ago

Thank you very much. I have reproduced the results. I have some questions.

  1. There is no city_and_foggy8_3.yaml in ./data directory. Is it city_and_foggy8_1.yaml?
  2. Which version of Yolov5 do you use?
Hlings commented 1 year ago

Q1: Yes. Just different names. I also provide the target image indexes of C to F and S to C in "./data/target_indexes.txt". Q2: I use Yolov5-3.0. Using an advanced version of yolov5 like 6.0 may get better results.