สมุดบันทึก การอนุมาน Autodistill | เก็บรวบรวม
Autodistill ใช้โมเดลรองพื้นขนาดใหญ่ที่ช้ากว่าเพื่อฝึกอบรมโมเดลขนาดเล็กที่รวดเร็วกว่า การใช้ autodistill คุณสามารถเปลี่ยนจากภาพที่ไม่มีป้ายกำกับไปสู่การอนุมานบนโมเดลที่กำหนดเองที่ทำงานที่ขอบโดยไม่มีการแทรกแซงของมนุษย์ในระหว่างนั้น
เคล็ดลับ
คุณสามารถใช้ Autodistill บนฮาร์ดแวร์ของคุณเองหรือใช้ Autodistill Roboflow Hosted เวอร์ชันเพื่อติดฉลากภาพในคลาวด์
ปัจจุบัน autodistill รองรับงานวิสัยทัศน์เช่นการตรวจจับวัตถุและการแบ่งส่วนอินสแตนซ์ แต่ในอนาคตมันสามารถขยายเพื่อสนับสนุนรูปแบบภาษา (และอื่น ๆ )
| การสอน | เอกสาร | รุ่นที่รองรับ | มีส่วนช่วย |
|---|
นี่คือตัวอย่างการคาดการณ์ของโมเดลเป้าหมายที่ตรวจพบขวดนมและขวดหลังจากได้รับการฝึกฝนในชุดข้อมูลที่ติดฉลากอัตโนมัติโดยใช้ Autodistill (ดูวิดีโอ Autodistill YouTube สำหรับคำแนะนำเต็มรูปแบบ):
ในการใช้ autodistill คุณป้อนข้อมูลที่ไม่มีป้ายกำกับลงในโมเดลพื้นฐานซึ่งใช้ ontology เพื่อติดฉลากชุดข้อมูลที่ใช้ในการฝึกอบรมโมเดลเป้าหมายซึ่งส่งออกโมเดลกลั่นปรับแต่งเพื่อทำงานเฉพาะ
Autodistill กำหนดเบื้องต้นพื้นฐานหลายประการ:
autodistill จะต้องตรงกับพวกเขาให้เข้ากันได้กับกันและกัน การตรวจจับวัตถุและการแบ่งส่วนอินสแตนซ์ได้รับการสนับสนุนในปัจจุบันผ่านงาน detection การสนับสนุน classification จะถูกเพิ่มในไม่ช้าCaptionOntology ซึ่งแจ้งให้แบบจำลองพื้นฐานพร้อมคำบรรยายภาพข้อความและแมปกับชื่อคลาส ตัวอย่างเช่น ontologies อื่น ๆ อาจใช้เวกเตอร์คลิปหรือตัวอย่างภาพแทนคำอธิบายข้อความautodistill ; มันเป็นชุดของน้ำหนักที่ปรับแต่งสำหรับงานของคุณที่สามารถปรับใช้เพื่อรับการคาดการณ์ การติดฉลากของมนุษย์เป็นหนึ่งในอุปสรรคที่ใหญ่ที่สุดในการใช้วิสัยทัศน์คอมพิวเตอร์อย่างกว้างขวาง อาจใช้เวลาหลายพันชั่วโมงในการสร้างชุดข้อมูลที่เหมาะสมสำหรับการฝึกอบรมรูปแบบการผลิต กระบวนการกลั่นสำหรับการฝึกอบรมแบบจำลองการดูแลไม่ใช่เรื่องใหม่ในความเป็นจริงการติดฉลากมนุษย์แบบดั้งเดิมเป็นเพียงรูปแบบหนึ่งของการกลั่นจากแบบจำลองฐานที่มีความสามารถอย่างมาก (สมองมนุษย์?)
โมเดลรากฐานมีความรู้มากเกี่ยวกับมาก แต่สำหรับการผลิตเราต้องการโมเดลที่รู้มากเกี่ยวกับเล็กน้อย
เมื่อโมเดลพื้นฐานดีขึ้นเรื่อย ๆ พวกเขาจะสามารถเพิ่มหรือแทนที่มนุษย์ในกระบวนการติดฉลากได้มากขึ้น เราต้องการเครื่องมือสำหรับการบังคับเลี้ยวการใช้และเปรียบเทียบโมเดลเหล่านี้ นอกจากนี้โมเดลรากฐานเหล่านี้มีขนาดใหญ่แพงและมักจะอยู่เบื้องหลัง API ส่วนตัว สำหรับกรณีการใช้งานการผลิตจำนวนมากเราต้องการโมเดลที่สามารถทำงานได้อย่างถูกและตามแบบเรียลไทม์ที่ขอบ
โมเดลพื้นฐานของ Autodistill สามารถสร้างชุดข้อมูลสำหรับกรณีการใช้งานทั่วไปจำนวนมาก (และผ่านการแจ้งเตือนความคิดสร้างสรรค์และการถ่ายภาพไม่กี่ครั้งเราสามารถขยายยูทิลิตี้ของพวกเขาไปอีกมากมาย) แต่พวกเขายังไม่สมบูรณ์แบบ ยังมีงานอีกมากที่ต้องทำ นี่เป็นเพียงจุดเริ่มต้นและเราชอบการทดสอบความช่วยเหลือของคุณและขยายขีดความสามารถของระบบ!
Autodistill เป็นโมดูลาร์ คุณจะต้องติดตั้งแพ็คเกจ autodistill (ซึ่งกำหนดอินเทอร์เฟซสำหรับแนวคิดข้างต้น) พร้อมกับโมเดลพื้นฐานและปลั๊กอินโมเดลเป้าหมาย (ซึ่งใช้โมเดลเฉพาะ)
โดยการบรรจุสิ่งเหล่านี้แยกต่างหากเป็นปลั๊กอินการพึ่งพาและความไม่ลงรอยกันของลิขสิทธิ์จะลดลงและทุกรุ่นสามารถนำไปใช้และบำรุงรักษาได้
ตัวอย่าง:
pip install autodistill autodistill-grounded-sam autodistill-yolov8นอกจากนี้คุณยังสามารถโคลนโครงการจาก GitHub เพื่อการพัฒนาในท้องถิ่น:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .โมเดลฐานและเป้าหมายเพิ่มเติมมีการระบุด้านล่าง
ดูสมุดบันทึกตัวอย่างสำหรับการแนะนำอย่างรวดเร็วเกี่ยวกับ autodistill สมุดบันทึกนี้เดินผ่านการสร้างรูปแบบการตรวจจับภาชนะนมโดยไม่มีการติดฉลาก
ด้านล่างนี้เราได้ย่อส่วนสำคัญของสมุดบันทึกเพื่อแนะนำ autodistill อย่างรวดเร็ว
คุณยังสามารถเรียกใช้ Autodistill ในคำสั่งเดียว ก่อนอื่นติดตั้ง autodistill :
pip install autodistillจากนั้นเรียกใช้:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " คำสั่งนี้จะติดฉลากรูปภาพทั้งหมดในไดเรกทอรีที่เรียกว่า images ด้วยดิน Dino และใช้ภาพที่มีป้ายกำกับเพื่อฝึกอบรมรุ่น YOLOV8 Dino Grounding จะติดฉลากรูปภาพทั้งหมดด้วย "พรอมต์" และบันทึกฉลากเป็น "ฉลาก" คุณสามารถระบุพรอมต์และฉลากได้มากเท่าที่คุณต้องการ ชุดข้อมูลที่ได้จะถูกบันทึกในโฟลเดอร์ที่เรียกว่า dataset
สำหรับตัวอย่างนี้เราจะแสดงวิธีกลั่นกรอง Groundedsam ในรุ่น YOLOV8 ขนาดเล็กโดยใช้ Autodistill-Grounded-Sam และ Autodistill-YOLOV8
pip install autodistill autodistill-grounded-sam autodistill-yolov8
from autodistill_grounded_sam import GroundedSAM
from autodistill . detection import CaptionOntology
from autodistill_yolov8 import YOLOv8
# define an ontology to map class names to our GroundingDINO prompt
# the ontology dictionary has the format {caption: class}
# where caption is the prompt sent to the base model, and class is the label that will
# be saved for that caption in the generated annotations
base_model = GroundedSAM ( ontology = CaptionOntology ({ "shipping container" : "container" }))
# label all images in a folder called `context_images`
base_model . label (
input_folder = "./images" ,
output_folder = "./dataset"
)
target_model = YOLOv8 ( "yolov8n.pt" )
target_model . train ( "./dataset/data.yaml" , epochs = 200 )
# run inference on the new model
pred = target_model . predict ( "./dataset/valid/your-image.jpg" , confidence = 0.5 )
print ( pred )
# optional: upload your model to Roboflow for deployment
from roboflow import Roboflow
rf = Roboflow ( api_key = "API_KEY" )
project = rf . workspace (). project ( "PROJECT_ID" )
project . version ( DATASET_VERSION ). deploy ( model_type = "yolov8" , model_path = f"./runs/detect/train/" ) ในการพล็อตคำอธิบายประกอบสำหรับภาพเดียวโดยใช้ autodistill คุณสามารถใช้รหัสด้านล่าง รหัสนี้มีประโยชน์ในการมองเห็นคำอธิบายประกอบที่สร้างขึ้นโดยโมเดลพื้นฐานของคุณ (เช่น GroundedSam) และผลลัพธ์จากโมเดลเป้าหมายของคุณ (เช่น YOLOV8)
import supervision as sv
import cv2
img_path = "./images/your-image.jpeg"
image = cv2 . imread ( img_path )
detections = base_model . predict ( img_path )
# annotate image with detections
box_annotator = sv . BoxAnnotator ()
label_annotator = sv . LabelAnnotator ()
labels = [
f" { base_model . ontology . classes ()[ class_id ] } { confidence :0.2f } "
for _ , _ , confidence , class_id , _ , _ in detections
]
annotated_frame = box_annotator . annotate (
scene = image . copy (), detections = detections
)
annotated_frame = label_annotator . annotate (
scene = annotated_frame , detections = detections , labels = labels
)
sv . plot_image ( annotated_frame , ( 16 , 16 )) เป้าหมายของเราคือ autodistill เพื่อสนับสนุนการใช้แบบจำลองพื้นฐานทั้งหมดเป็นแบบจำลองพื้นฐานและโมเดล SOTA ที่ดูแลส่วนใหญ่เป็นรุ่นเป้าหมาย เรามุ่งเน้นไปที่งานตรวจจับวัตถุและการแบ่งส่วนก่อน แต่วางแผนที่จะเปิดการสนับสนุนการจำแนกประเภทเร็ว ๆ นี้! ในอนาคตเราหวังว่า autodistill จะถูกใช้สำหรับรุ่นที่นอกเหนือจากการมองเห็นคอมพิวเตอร์
| ฐาน / เป้าหมาย | YOLOV8 | YOLO-NAS | YOLOV5 | เครื่องดั่ง | YOLOV6 | YOLOV7 | MT-YOLOV6 |
|---|---|---|---|---|---|---|---|
| Sam 2 สายดิน | - | ||||||
| พยากรณ์ | - | ||||||
| สายดิน | - | ||||||
| ดิน | - | ||||||
| นกฮูก | - | ||||||
| คลิปแซม | - | ||||||
| llava-1.5 | - | ||||||
| Kosmos-2 | - | ||||||
| OWLV2 | - | ||||||
| โมเดล Roboflow Universe (รุ่น 50K+ ที่ผ่านการฝึกอบรมมาก่อน) | - | ||||||
| ตัวเข้ารหัส | - | ||||||
| Azure Custom Vision | - | ||||||
| aws rekognition | - | ||||||
| Google Vision | - |
| ฐาน / เป้าหมาย | YOLOV8 | YOLO-NAS | YOLOV5 | YOLOV7 | ผู้ทำนาย |
|---|---|---|---|---|---|
| สายดิน | - | - | |||
| คลิปแซม | - | - | |||
| ซุกซน | - | - | |||
| Fastsam | - | - | - |
| ฐาน / เป้าหมาย | ความรู้สึก | YOLOV8 | YOLOV5 |
|---|---|---|---|
| คลิป | - | ||
| การเผาผลาญ | - | ||
| Dinov2 | - | ||
| ทำให้เสีย | - | ||
| อัลเบฟ | - | ||
| FastVit | - | ||
| อัลดิสคลิป | - | ||
| การอพยพ | - | ||
| ราศีเมถุน | - | ||
| ฟูวู | - | - | - |
| เปิดฟลามิงโก | - | - | - |
| GPT-4 | |||
| ปาล์ม 2 |
คุณสามารถเลือกปรับใช้รุ่นเป้าหมายบางอย่างที่ผ่านการฝึกอบรมโดยใช้ Autodistill บน Roboflow การปรับใช้บน Roboflow ช่วยให้คุณใช้ SDKs ที่กระชับสำหรับการใช้โมเดลของคุณบนขอบจาก Roboflow.js สำหรับการปรับใช้เว็บไปยังอุปกรณ์ Nvidia Jetson
โมเดลเป้าหมาย Autodistill ต่อไปนี้ได้รับการสนับสนุนโดย Roboflow สำหรับการปรับใช้:
| ชื่อนางแบบ | รองรับ? |
|---|---|
| การตรวจจับวัตถุ YOLOV8 | |
| การแบ่งส่วนอินสแตนซ์ของ YOLOV8 | |
| การตรวจจับวัตถุ YOLOV5 | |
| การแบ่งส่วนอินสแตนซ์ของ YOLOV5 | |
| การจำแนกประเภท YOLOV8 |
Autodistill: ฝึก YOLOV8 ด้วยคำอธิบายประกอบเป็นศูนย์
นอกเหนือจากการเพิ่มโมเดลใหม่แล้วยังมีหลายพื้นที่ที่เราวางแผนที่จะสำรวจด้วย autodistill รวมถึง:
เรารักการป้อนข้อมูลของคุณ! โปรดดูคู่มือการสนับสนุนของเราในการเริ่มต้น ขอบคุณผู้สนับสนุนทุกคนของเรา!
แพ็คเกจ autodistill ได้รับอนุญาตภายใต้ Apache 2.0 ปลั๊กอินโมเดลฐานหรือเป้าหมายแต่ละตัวอาจใช้ใบอนุญาตของตัวเองที่สอดคล้องกับใบอนุญาตของโมเดลพื้นฐาน โปรดดูใบอนุญาตในปลั๊กอิน repo แต่ละรายการสำหรับข้อมูลเพิ่มเติม
PytorchStreamReader failed reading zip archive: failed finding central directory ? ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Pytorch ไม่สามารถโหลดน้ำหนักแบบจำลองสำหรับรุ่นได้ ไปที่ไดเรกทอรี ~/.cache/autodistill และลบโฟลเดอร์ที่เกี่ยวข้องกับรุ่นที่คุณพยายามโหลด จากนั้นเรียกใช้รหัสของคุณอีกครั้ง น้ำหนักรุ่นจะถูกดาวน์โหลดตั้งแต่เริ่มต้น ปล่อยให้กระบวนการติดตั้งอย่างต่อเนื่อง
| โครงการ | คำอธิบาย |
|---|---|
| การดูแล | ยูทิลิตี้อเนกประสงค์ทั่วไปสำหรับใช้ในโครงการวิสัยทัศน์คอมพิวเตอร์จากการคาดการณ์การกรองและการแสดงผลจนถึงการติดตามวัตถุไปจนถึงการประเมินแบบจำลอง |
| Autodistill (โครงการนี้) | ติดฉลากภาพโดยอัตโนมัติสำหรับใช้ในการฝึกอบรมแบบจำลองการมองเห็นคอมพิวเตอร์ |
| การอนุมาน | เซิร์ฟเวอร์การอนุมานพร้อมการผลิตที่ใช้งานง่ายสำหรับการมองเห็นคอมพิวเตอร์ที่รองรับการปรับใช้สถาปัตยกรรมโมเดลยอดนิยมมากมายและรุ่นที่ปรับจูน |
| สมุดบันทึก | บทเรียนสำหรับงานการมองเห็นคอมพิวเตอร์ตั้งแต่การฝึกอบรมโมเดลที่ทันสมัยไปจนถึงการติดตามวัตถุไปจนถึงการนับวัตถุในโซน |
| เก็บรวบรวม | การรวบรวมข้อมูลอัจฉริยะอัตโนมัติขับเคลื่อนโดยคลิป |