Während des DINO-Experiments stellte der Blogger fest, dass die Erkennungsleistung von DINO-DETR bei Pkw und Lkw im aus drei Kategorien extrahierten COCO-Datensatz nicht ideal war. Nachdem er mit seinem eigenen Datensatz experimentiert hatte, stellte er fest, dass der AP-Wert nicht hoch war anders und es entspricht eher den Erwartungen, daher denke ich, ob es daran liegt, dass die zu DINO hinzugefügten negativen Beispielbeschränkungen das Erlernen des Hintergrunds erschweren und den Effekt schlecht machen, sodass DN-DETR für Experimente verwendet wird. Die folgende Abbildung ist das Rahmendiagramm des DN-DETR-Modells.
Stellen Sie als Nächstes Ihren eigenen experimentellen Prozess vor.
Da DN-DETR auch Teil des DETR-Modells ist, müssen wir die Conda-Umgebung nicht mehr konfigurieren, sondern verwenden einfach die ursprüngliche Detr-Conda-Umgebung.
Als nächstes müssen wir das benötigte Modell auswählen und das Datensatzverzeichnis und die Konfiguration des Datensatzpfads ändern.
Modellname ist das Modell, das wir für das Training auswählen müssen. In DN-DETR bietet es vier Optionen. Da wir mit den Ergebnissen von DINO vergleichen möchten, wählen wir direkt das Modell aus, das den Ergebnissen des DINO-Modells am nächsten kommt.dn_dab_deformable_detr
parser.add_argument('--modelname',
default="dn_dab_deformable_detr", type=str,
choices=[
'dn_dab_detr',
'dn_dab_deformable_detr', 'dn_dab_deformable_detr_deformable_encoder_only',
'dn_dab_dino_deformable_detr'
])
Coco-Pfad ist die Adresse der Datensatzdatei.
parser.add_argument('--coco_path', default="/home/ubuntu/datasets/",type=str, )
Dann ändern wir datasets/coco.py
den Datensatzkonfigurationspfad in .
PATHS = {
"train": (root / "images/train2017", root / "annotations" / f'{
mode}_train2017.json'),
"val": (root / "images/val2017", root / "annotations" / f'{
mode}_val2017.json'),
}
Tatsächlich wurde in der Readme-Datei ein Beispiel angegeben, dessen Anforderungen wir nachvollziehen können.
python main.py -m dn_dab_detr \
--output_dir logs/dn_DABDETR/R50 \
--batch_size 1 \
--epochs 50 \
--lr_drop 40 \
--coco_path /path/to/your/COCODIR # replace the args to your COCO path
--use_dn
Die Epoche des Bloggers ist auf 50, Stapelgröße = 2 eingestellt. Nachdem Sie diese Parameter geändert haben, führen Sie einfach main.py aus.
Wie alle DETR-Modelle beansprucht es während des Trainings viel Videospeicher.
category names: ['truck', 'car', 'bus']
Fehler melden
Der Blogger konnte zuvor erfolgreich im Terminal ausgeführt werden, meldete jedoch den folgenden Fehler in Pycharm. Letztlich fehlte die entsprechende Linkdatei.
OSError:
/home/ubuntu/.conda/envs/detr/lib/python3.7/site-packages/nvidia/cublas/lib/libcublas.so.11:
Gemeinsam genutzte Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis
Zuerst wechseln wir in /usr/local
das Verzeichnis, um unsere Cuda-Umgebung anzuzeigen, und dann auf ls view
ubuntu@VM-16-3-ubuntu:~$ cd /usr/local
ubuntu@VM-16-3-ubuntu:/usr/local$ ls
bin cuda cuda-11.2 etc games include lib man miniconda3 qcloud sbin share src
cuda-11.2 ist unser cuda-Umgebungsdateiverzeichnis. Führen Sie einfach den folgenden Code aus.
sudo ldconfig /usr/local/cuda-11.2/lib64
Führen Sie es erneut aus, das Problem ist gelöst.