รหัสพร้อมใช้งานและสมุดบันทึกการสอนเพื่อเพิ่มวิธีการจำแนกภาพไม่กี่ภาพ ที่เก็บนี้ทำขึ้นเพื่อคุณถ้า:
อย่าหลงทางในที่เก็บขนาดใหญ่ด้วยวิธีการหลายร้อยวิธีและไม่มีคำอธิบายเกี่ยวกับวิธีการใช้งาน ที่นี่เราต้องการให้รหัสแต่ละบรรทัดครอบคลุมโดยการสอน
คุณต้องการเรียนรู้การเรียนรู้ไม่กี่ครั้งและไม่รู้ว่าจะเริ่มต้นตรงไหน? เริ่มต้นด้วยบทเรียนของเรา
| สมุดบันทึก | คำอธิบาย | การกิน |
|---|---|---|
| ขั้นตอนแรกในการจำแนกภาพไม่กี่ภาพ | โดยทั่วไปการเรียนรู้ไม่กี่ครั้ง 101 ในเวลาน้อยกว่า 15 นาที | |
| ตัวอย่างของการฝึกอบรมเป็นฉาก | ใช้เป็นจุดเริ่มต้นหากคุณต้องการออกแบบสคริปต์สำหรับการฝึกอบรมแบบฉากโดยใช้ EasyFSL | |
| ตัวอย่างของการฝึกอบรมคลาสสิก | ใช้เป็นจุดเริ่มต้นหากคุณต้องการออกแบบสคริปต์สำหรับการฝึกแบบคลาสสิกโดยใช้ EasyFSL | |
| ทดสอบด้วย embeddings ที่สกัดล่วงหน้า | วิธีการยิงสองสามครั้งส่วนใหญ่ใช้กระดูกสันหลังแช่แข็งในเวลาทดสอบ ด้วย EasyFSL คุณสามารถแยกการฝังตัวทั้งหมดสำหรับชุดข้อมูลของคุณได้ทุกครั้งและจากนั้นทำการอนุมานโดยตรงกับ EMBEDDINGS โดยตรง |
วิธีการเรียนรู้ไม่กี่ครั้งที่ทันสมัย:
ด้วยวิธีการ 11 วิธีในตัว EasyFSL เป็นห้องสมุดการเรียนรู้แบบโอเพนซอร์ซที่ครอบคลุมมากที่สุด!
นอกจากนี้เรายังมีคลาส ShotClassifier เพียงไม่กี่ตัวเพื่อเริ่มต้นการใช้งานอัลกอริทึมการจำแนกประเภทของคุณไม่ว่าจะเป็นสถาปัตยกรรมที่ใช้กันทั่วไป
ดูส่วนเกณฑ์มาตรฐานด้านล่างสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการ
เครื่องมือสำหรับการโหลดข้อมูล:
การโหลดข้อมูลใน FSL นั้นแตกต่างจากการจำแนกมาตรฐานเล็กน้อยเนื่องจากเราตัวอย่างแบทช์ของอินสแตนซ์ในรูปแบบของงานการจำแนกประเภทไม่กี่นัด ไม่มีเหงื่อ! ใน EasyFSL คุณมี:
สคริปต์เพื่อทำซ้ำเกณฑ์มาตรฐานของเรา:
scripts/predict_embeddings.py เพื่อแยกการฝังทั้งหมดออกจากชุดข้อมูลที่มีกระดูกสันหลังที่ผ่านการฝึกอบรมมาก่อนscripts/benchmark_methods.py เพื่อประเมินวิธีการในชุดข้อมูลทดสอบโดยใช้การฝังตัวที่สกัดไว้ล่วงหน้าและยัง: สาธารณูปโภคบางอย่างที่ฉันรู้สึกว่าฉันมักจะใช้ในการวิจัยของฉันดังนั้นฉันจึงแบ่งปันกับคุณ
มีชุดข้อมูลเพียงพอที่ใช้ในการเรียนรู้ไม่กี่ครั้งเพื่อให้ทุกคนหลงทาง พวกเขาทั้งหมดอยู่ที่นี่อธิบายได้ง่ายดาวน์โหลดและใช้งานง่ายใน EasyFSL
Cu-birds
เราให้สูตร make download-cub เพื่อดาวน์โหลดและแยกชุดข้อมูลพร้อมกับมาตรฐาน (รถไฟ / วาล / ทดสอบ) แยกตามชั้นเรียน เมื่อคุณดาวน์โหลดชุดข้อมูลแล้วคุณสามารถยกตัวอย่างวัตถุชุดข้อมูลในรหัสของคุณด้วยกระบวนการที่ซับซ้อนสุด ๆ นี้:
from easyfsl . datasets import CUB
train_set = CUB ( split = "train" , training = True )
test_set = CUB ( split = "test" , training = False )เทียร์
ในการใช้งานคุณต้องใช้ชุดข้อมูล ILSVRC2015 เมื่อคุณดาวน์โหลดและแยกชุดข้อมูลแล้วตรวจสอบให้แน่ใจว่าการแปลในดิสก์นั้นสอดคล้องกับพา ธ คลาสที่ระบุไว้ในไฟล์ข้อมูลจำเพาะ แล้ว:
from easyfsl . datasets import TieredImageNet
train_set = TieredImageNet ( split = "train" , training = True )
test_set = TieredImageNet ( split = "test" , training = False )ขนาดเล็ก
เช่นเดียวกับ TieredImagenet เราให้ไฟล์ข้อกำหนด แต่คุณต้องการชุดข้อมูล ILSVRC2015 เมื่อคุณมี:
from easyfsl . datasets import MiniImageNet
train_set = MiniImageNet ( root = "where/imagenet/is" , split = "train" , training = True )
test_set = MiniImageNet ( root = "where/imagenet/is" , split = "test" , training = False ) เนื่องจาก miniimagenet ค่อนข้างเล็กคุณยังสามารถโหลดลงบน RAM ได้โดยตรงที่อินสแตนซ์เพียงแค่เพิ่ม load_on_ram=True กับตัวสร้าง ใช้เวลาไม่กี่นาที แต่สามารถทำให้การฝึกของคุณเร็วขึ้นอย่างมาก!
เชื้อราเดนมาร์ก
ฉันเพิ่งเริ่มใช้มันเป็นมาตรฐานการเรียนรู้ไม่กี่นัดและฉันสามารถบอกคุณได้ว่ามันเป็นสนามเด็กเล่นที่ยอดเยี่ยม หากต้องการใช้ก่อนดาวน์โหลดข้อมูล:
# Download the original dataset (/! 110GB)
wget http://ptak.felk.cvut.cz/plants/DanishFungiDataset/DF20-train_val.tar.gz
# Or alternatively the images reduced to 300px (6.5Gb)
wget http://ptak.felk.cvut.cz/plants/DanishFungiDataset/DF20-300px.tar.gz
# And finally download the metadata (83Mb) to data/fungi/
wget https://public-sicara.s3.eu-central-1.amazonaws.com/easy-fsl/DF20_metadata.csv -O data/fungi/DF20_metadata.csvจากนั้นสร้างอินสแตนซ์ชุดข้อมูลด้วยกระบวนการเดียวกันเช่นเคย:
from easyfsl . datasets import DanishFungi
dataset = DanishFungi ( root = "where/fungi/is" )โปรดทราบว่าฉันไม่ได้ระบุรถไฟและชุดทดสอบเนื่องจาก CSV ที่ฉันให้คุณอธิบายชุดข้อมูลทั้งหมด ฉันขอแนะนำให้ใช้เพื่อทดสอบโมเดลที่มีน้ำหนักที่ได้รับการฝึกฝนในชุดข้อมูลอื่น ๆ (เช่น ImageNet) แต่ถ้าคุณต้องการเสนอการแยกรถไฟ/วาล/ทดสอบตามชั้นเรียนคุณยินดีที่จะมีส่วนร่วม!
ติดตั้งแพ็คเกจ: pip install easyfsl หรือแยกที่เก็บ
ดาวน์โหลดข้อมูลของคุณ
ออกแบบสคริปต์การฝึกอบรมและการประเมินผลของคุณ คุณสามารถใช้สมุดบันทึกตัวอย่างของเราสำหรับการฝึกอบรมเป็นฉากหรือการฝึกอบรมแบบคลาสสิก
โครงการนี้เปิดให้มีการมีส่วนร่วมมาก! คุณสามารถช่วยได้หลายวิธี:
เราใช้ EasyFSL เพื่อเปรียบเทียบวิธีการโหล เวลาอนุมานจะคำนวณมากกว่า 1,000 งานโดยใช้คุณสมบัติที่สกัดล่วงหน้า พวกเขาเป็นเพียงตัวบ่งชี้ โปรดทราบว่าเวลาอนุมานสำหรับวิธีการปรับแต่งอย่างมากขึ้นอยู่กับจำนวนขั้นตอนการปรับจูน
วิธีการทั้งหมด hyperparameters ถูกกำหนดในไฟล์ JSON นี้ พวกเขาได้รับการคัดเลือกในชุดตรวจสอบความถูกต้องของ miniimagenet ขั้นตอนสามารถทำซ้ำได้ด้วย make hyperparameter-search เราตัดสินใจที่จะใช้พารามิเตอร์ของ Miniimagenet สำหรับการวัดประสิทธิภาพทั้งหมดเพื่อเน้นความสามารถในการปรับตัวของวิธีการต่าง ๆ โปรดทราบว่าวิธีการทั้งหมดใช้การทำให้เป็นมาตรฐานของ L2 ยกเว้นความสำเร็จเนื่องจากเป็นอันตรายต่อประสิทธิภาพ
ไม่มีผลลัพธ์สำหรับเครือข่ายคณิตศาสตร์และความสัมพันธ์เนื่องจากน้ำหนักที่ผ่านการฝึกอบรมสำหรับโมดูลเพิ่มเติมของพวกเขาไม่สามารถใช้งานได้
วิธีการทั้งหมดใช้ backbone เดียวกัน: ResNet12 ที่กำหนดเองโดยใช้พารามิเตอร์ที่ผ่านการฝึกอบรมโดยผู้เขียนจาก FEAT (ดาวน์โหลด: Miniimagenet, TieredImagenet)
ผลการอุปนัยที่ดีที่สุดและดีที่สุด transductive สำหรับแต่ละคอลัมน์จะแสดงเป็นตัวหนา
| วิธี | ind / trans | Mini Imagenet 1 ช็อต | Mini Imagenet 5 ช็อต | ImageNet 1 ช็อต | ImageNet 5 ช็อต | เวลา |
|---|---|---|---|---|---|---|
| โปรโตเน็ต | เป็นอุปนัย | 63.6 | 80.4 | 60.2 | 77.4 | 6s |
| แบบง่าย ๆ | เป็นอุปนัย | 63.6 | 80.5 | 60.2 | 77.4 | 6s |
| การจับคู่ | เป็นอุปนัย | - | - | - | - | - |
| ความสัมพันธ์ | เป็นอุปนัย | - | - | - | - | - |
| finetune | เป็นอุปนัย | 63.3 | 80.5 | 59.8 | 77.5 | 1MN33S |
| ความสำเร็จ | เป็นอุปนัย | 64.7 | 80.1 | 61.3 | 76.2 | 3s |
| BD-CSPN | เกี่ยวกับการเปลี่ยนแปลง | 69.8 | 82.2 | 66.3 | 79.1 | 7s |
| Laplacianshot | เกี่ยวกับการเปลี่ยนแปลง | 69.8 | 82.3 | 66.2 | 79.2 | 9s |
| PT-MAP | เกี่ยวกับการเปลี่ยนแปลง | 76.1 | 84.2 | 71.7 | 80.7 | 39mn40s |
| ทิม | เกี่ยวกับการเปลี่ยนแปลง | 74.3 | 84.2 | 70.7 | 80.7 | 3MN05S |
| การปรับสภาพ transduction | เกี่ยวกับการเปลี่ยนแปลง | 63.0 | 80.6 | 59.1 | 77.5 | 30s |
เพื่อทำซ้ำ:
data/models/feat_resnet12_mini_imagenet.pth (resp. tiered )make extract-all-features-with-resnet12make benchmark-mini-imagenet (resp. tiered )