VIAME เป็นแอปพลิเคชันคอมพิวเตอร์วิทัศน์ที่ออกแบบมาสำหรับปัญญาประดิษฐ์ที่ต้องทำด้วยตัวเอง รวมถึงการตรวจจับวัตถุ การติดตามวัตถุ คำอธิบายประกอบรูปภาพ/วิดีโอ การค้นหารูปภาพ/วิดีโอ การโมเสคภาพ การเพิ่มประสิทธิภาพของรูปภาพ การวัดขนาด การประมวลผลข้อมูลจากกล้องหลายตัว การสร้างแบบจำลองอย่างรวดเร็ว และเครื่องมือสำหรับการประเมินอัลกอริธึมต่างๆ เดิมทีมุ่งเป้าไปที่การวิเคราะห์พันธุ์สัตว์ทะเล ปัจจุบัน VIAME มีอัลกอริธึมและไลบรารีทั่วไปมากมาย และยังมีประโยชน์ในฐานะชุดเครื่องมือคอมพิวเตอร์วิทัศน์ทั่วไปอีกด้วย ประกอบด้วยเครื่องมือแบบสแตนด์อโลนจำนวนหนึ่งเพื่อให้บรรลุผลข้างต้น กรอบงานไปป์ไลน์ซึ่งสามารถเชื่อมต่อโหนด C/C++, Python และ Matlab เข้าด้วยกันในรูปแบบมัลติเธรด และอัลกอริธึมหลายตัวที่อยู่ด้านบนของโครงสร้างพื้นฐานไปป์ไลน์ สุดท้ายนี้ ส่วนหนึ่งของอัลกอริธึมได้รับการรวมเข้ากับอินเทอร์เฟซผู้ใช้ทั้งบนเดสก์ท็อปและบนเว็บเพื่อการปรับใช้ในสภาพแวดล้อมประเภทต่างๆ โดยมีการเก็บถาวรคำอธิบายประกอบแบบเปิดและตัวอย่างของแพลตฟอร์มเว็บที่สามารถดูได้ที่ viame.kitware.com
คู่มือเริ่มต้นใช้งานฉบับย่อของผู้ใช้ วิดีโอแนะนำการใช้งาน และคู่มือนักพัฒนามีความครอบคลุมมากกว่า แต่รายการที่เลือกยังแสดงไว้ด้านล่างโดยแบ่งตามฟังก์ชันการทำงานแต่ละรายการ:
ภาพรวมเอกสารประกอบ <> การติดตั้ง <> อาคาร <> ตัวอย่างทั้งหมด <> อินเทอร์เฟซ DIVE <> อินเทอร์เฟซ VIEW <> ค้นหาและการสร้างโมเดลอย่างรวดเร็ว <> ตัวตรวจจับวัตถุ CLI <> ตัวติดตามวัตถุ CLI <> การฝึกอบรมตัวตรวจจับ CLI <> การประเมินตัวตรวจจับ <> การตรวจจับ รูปแบบไฟล์ <> การปรับเทียบและการปรับปรุงภาพ <> การลงทะเบียนและโมเสค <> การวัดแบบสเตอริโอและแผนที่ความลึก <> ภาพรวมการวางท่อ <> คลาสหลักและข้อมูลไปป์ไลน์ <> การรวมปลั๊กอิน <> ตัวอย่างเทมเพลตปลั๊กอิน <> การฝังอัลกอริทึมใน C ++
สำหรับคู่มือการติดตั้งฉบับสมบูรณ์และคำอธิบายของ VIAME เวอร์ชันต่างๆ โปรดดูคู่มือเริ่มต้นใช้งานฉบับย่อด้านบน เวอร์ชันเดสก์ท็อปเต็มรูปแบบมีให้ในรูปแบบไฟล์ .msi, .zip หรือ .tar อีกทางหนึ่ง สามารถใช้คำอธิบายประกอบแบบสแตนด์อโลน (โดยไม่มีอัลกอริธึมการประมวลผล) ผ่านทางโปรแกรมติดตั้งขนาดเล็ก (ดู DIVE แบบสแตนด์อโลนด้านล่าง) สุดท้ายนี้ ไฟล์นักเทียบท่าสามารถใช้ได้กับทั้ง VIAME Desktop และเว็บ (ด้านล่าง) สำหรับการติดตั้งเดสก์ท็อปแบบเต็ม ให้แยกไบนารีและวางไว้ในไดเร็กทอรีที่คุณเลือก เช่น /opt/noaa/viame บน Linux หรือ C:Program FilesVIAME บน Windows หากใช้แพ็คเกจที่สร้างด้วยการรองรับ GPU ตรวจสอบให้แน่ใจว่าได้ติดตั้งไดรเวอร์วิดีโอที่เพียงพอ เวอร์ชัน 465.19 หรือสูงกว่า วิธีที่ดีที่สุดในการติดตั้งไดรเวอร์ขึ้นอยู่กับระบบปฏิบัติการของคุณ สิ่งนี้ไม่จำเป็นหากเพียงใช้คำอธิบายประกอบแบบแมนนวล (หรือตัวแยกประเภทเฟรมเท่านั้น) ไบนารีมีขนาดค่อนข้างใหญ่ในแง่ของพื้นที่ดิสก์ เนื่องจากมีไฟล์โมเดลและโปรแกรมเริ่มต้นหลายไฟล์รวมอยู่ด้วย แต่หากเพียงสร้างคุณสมบัติที่คุณต้องการจากแหล่งที่มา (เช่น สำหรับแอปที่ฝังไว้) ไบนารีเหล่านั้นก็จะเล็กกว่ามาก
ข้อกำหนดในการติดตั้ง:
คำแนะนำในการติดตั้ง:
ไบนารีเดสก์ท็อปแบบเต็มของ Windows:
ไบนารีเดสก์ท็อป Linux เต็มรูปแบบ:
แอปพลิเคชันเว็บ :
แพ็คเกจเพิ่มเติม:
อิมเมจ Docker มีอยู่ที่: https://hub.docker.com สำหรับคอนเทนเนอร์เริ่มต้นที่มีเพียงอัลกอริธึมหลัก ซึ่งสามารถรันผ่านบรรทัดคำสั่ง โปรดดู:
ชุดเครื่องมือ / viame: gpu-algorithms-latest
รูปภาพนี้ไม่มีส่วนหัว (กล่าวคือ ไม่มี GUI) และมีการติดตั้ง VIAME บนเดสก์ท็อป (ไม่ใช่เว็บ) ในโฟลเดอร์ /opt/noaa/viame สำหรับลิงก์ไปยังคอนเทนเนอร์นักเทียบท่า VIAME-Web โปรดดูส่วนด้านบนในเอกสารประกอบการติดตั้ง โมเดลส่วนเสริมส่วนใหญ่ไม่รวมอยู่ในอินสแตนซ์ แต่สามารถดาวน์โหลดได้ผ่านการเรียกใช้สคริปต์ download_viame_addons.sh ในโฟลเดอร์ bin
คำแนะนำเหล่านี้มีไว้สำหรับนักพัฒนาหรือผู้ที่สนใจสร้างสาขารุ่นล่าสุด ใครก็ตามที่สนใจใช้งานซอฟต์แวร์ตามที่เป็นอยู่และไม่แก้ไขใดๆ ควรใช้โปรแกรมติดตั้งที่ระบุไว้ในส่วนก่อนหน้า โดยไม่จำเป็นต้องสร้างซอฟต์แวร์ สามารถดูคำแนะนำการสร้างเชิงลึกเพิ่มเติมได้ที่นี่ แต่ซอฟต์แวร์สามารถสร้างได้ทั้งแบบ super-build ซึ่งสร้างการพึ่งพาส่วนใหญ่ควบคู่ไปกับตัวมันเองหรือแบบสแตนด์อโลน ในการสร้าง VIAME จำเป็นต้องมี Git, CMake และคอมไพเลอร์ C++ เป็นอย่างน้อย แนะนำให้ติดตั้ง Python และ CUDA ด้วย หากใช้ CUDA แนะนำให้ใช้เวอร์ชัน 11.7 หรือ 11.6 โดยมี CUDNN 8 เวอร์ชัน CUDA หรือ CUDNN อื่นๆ อาจจะใช้งานได้หรือไม่ก็ได้ สำหรับการแจกแจงแบบหลาม จำเป็นต้องมี Python3.6 ขึ้นไปเป็นอย่างน้อย ควบคู่ไปกับการติดตั้ง pip
หากต้องการสร้างบนบรรทัดคำสั่งใน Linux ให้ใช้คำสั่งต่อไปนี้ โดยแทนที่ [source-directory] และ [build-directory] ด้วยตำแหน่งที่คุณเลือกเท่านั้น แม้ว่าไดเรกทอรีเหล่านี้จะเหมือนกันได้ แต่แนวทางปฏิบัติที่ดีคือมีการชำระเงิน 'src' จากนั้นจึงมีไดเรกทอรี 'build' แยกกันอยู่ข้างๆ:
git clone https://github.com/VIAME/VIAME.git [source-directory]
cd [source-directory] && git submodule update --init --recursive
ถัดไป สร้างไดเร็กทอรี build และรันคำสั่ง cmake
ต่อไปนี้ (หรือใช้ cmake GUI หากคุณไม่ได้ใช้อินเทอร์เฟซบรรทัดคำสั่ง):
mkdir [build-directory] && cd [build-directory]
cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]
เมื่อคำสั่ง cmake
ของคุณเสร็จสมบูรณ์ คุณสามารถกำหนดค่าแฟล็กบิวด์ที่คุณต้องการโดยใช้ 'ccmake' หรือ cmake GUI จากนั้นสร้างด้วยคำสั่งต่อไปนี้บน Linux:
make -j8
หรืออีกวิธีหนึ่งคือสร้างมันขึ้นมาใน Visual Studio หรือคอมไพเลอร์ที่คุณเลือกบน Windows บน Linux '-j8' บอกให้บิลด์รันแบบมัลติเธรดโดยใช้ 8 เธรด สิ่งนี้มีประโยชน์สำหรับบิลด์ที่เร็วกว่า แต่ถ้าคุณได้รับข้อผิดพลาดก็อาจเป็นเรื่องยากที่จะมองเห็น ซึ่งในกรณีนี้การรันเพียง 'make' อาจเป็น มีประโยชน์มากขึ้น สำหรับ Windows ปัจจุบัน VS2019 เป็นคอมไพเลอร์ที่ได้รับการทดสอบมากที่สุด
มีอาร์กิวเมนต์ทางเลือกหลายข้อในการควบคุมว่าจะสร้างปลั๊กอินใด เช่น รายการด้านล่าง หากเปิดใช้งานปลั๊กอินที่ขึ้นอยู่กับการขึ้นต่อกันอื่น เช่น OpenCV) แฟล็กการพึ่งพาจะถูกบังคับให้เปิด หากไม่แน่ใจว่าจะเปิดอะไร วิธีที่ดีที่สุดคือปล่อยการตั้งค่าสถานะเปิดใช้งานและปิดใช้งานเริ่มต้นไว้ ซึ่งจะสร้างฟังก์ชันการทำงานส่วนใหญ่ (แม้ว่าจะไม่ใช่ทั้งหมด) เหล่านี้เป็นส่วนประกอบหลักที่เราแนะนำให้เปิดไว้:
ธง | คำอธิบาย |
---|---|
VIAME_ENABLE_OPENCV | สร้าง OpenCV และกระบวนการ OpenCV พื้นฐาน (โปรแกรมอ่านวิดีโอ, GUI แบบง่าย) |
VIAME_ENABLE_VXL | สร้างกระบวนการ VXL และ VXL พื้นฐาน (โปรแกรมอ่านวิดีโอ ฟิลเตอร์รูปภาพ) |
VIAME_ENABLE_PYTHON | เปิดการสนับสนุนสำหรับการใช้กระบวนการหลาม (อัลกอริธึมหลายตัว) |
VIAME_ENABLE_PYTORCH | ติดตั้งกระบวนการ pytorch ทั้งหมด (เครื่องตรวจจับ ตัวติดตาม ตัวแยกประเภท) |
และแฟล็กจำนวนหนึ่งซึ่งควบคุมว่าจะสร้างยูทิลิตี้ระบบและการเพิ่มประสิทธิภาพใด เช่น:
ธง | คำอธิบาย |
---|---|
VIAME_ENABLE_CUDA | เปิดใช้งานการเพิ่มประสิทธิภาพ CUDA (GPU) ในทุกแพ็คเกจ |
VIAME_ENABLE_CUDNN | เปิดใช้งานการเพิ่มประสิทธิภาพ CUDNN (GPU) ในทุกกระบวนการ |
VIAME_ENABLE_DIVE | เปิดใช้งาน DIVE GUI (คำอธิบายประกอบและการฝึกอบรมในหลายลำดับ) |
VIAME_ENABLE_VIVIA | สร้าง VIVIA GUIs (ดูและค้นหาสำหรับคำอธิบายประกอบและการค้นหาวิดีโอ) |
VIAME_ENABLE_DOCS | สร้างเอกสารระดับคลาส Doxygen (วางในแผนผังการติดตั้ง) |
VIAME_BUILD_DEPENDENCIES | สร้าง VIAME เป็น super-build สร้างการพึ่งพาทั้งหมด (ค่าเริ่มต้น) |
VIAME_INSTALL_EXAMPLES | ติดตั้งตัวอย่างสำหรับโมดูลข้างต้นลงในแผนผังการติดตั้ง/ตัวอย่าง |
VIAME_ดาวน์โหลด_MODELS | ดาวน์โหลดโมเดลที่ได้รับการฝึกอบรมล่วงหน้าเพื่อใช้กับตัวอย่างและอินเทอร์เฟซ |
และสุดท้าย แฟล็กจำนวนหนึ่งที่สร้างอัลกอริธึมหรืออินเทอร์เฟซพร้อมฟังก์ชันพิเศษเพิ่มเติม:
ธง | คำอธิบาย |
---|---|
VIAME_ENABLE_TENSORFLOW | สร้างปลั๊กอินตัวตรวจจับวัตถุ TensorFlow |
VIAME_ENABLE_DARKNET | สร้างปลั๊กอินตัวตรวจจับวัตถุ Darknet (YOLO) |
VIAME_ENABLE_TENSORRT | สร้างปลั๊กอินตัวตรวจจับวัตถุ TensorRT |
VIAME_ENABLE_BURNOUT | สร้างปลั๊กอินลักษณนามพิกเซลตาม Burn-Out |
VIAME_ENABLE_SMQTK | สร้างปลั๊กอิน SMQTK เพื่อรองรับการจัดทำดัชนีและการค้นหารูปภาพ/วิดีโอ |
VIAME_ENABLE_KWANT | สร้างเครื่องมือตรวจจับ KWANT และติดตามการประเมินผล (การให้คะแนน) |
VIAME_ENABLE_เรียนรู้ | สร้างวิธีการเพิ่มเติมสำหรับการเรียนรู้แบบ low-shot |
VIAME_ENABLE_SCALLOP_TK | สร้างปลั๊กอินตัวตรวจจับวัตถุที่ใช้ Scallop-TK |
VIAME_ENABLE_SEAL | สร้าง GUI แบบหลายรูปแบบ Seal |
VIAME_ENABLE_ITK | สร้างการลงทะเบียนอิมเมจข้ามรูปแบบ ITK |
VIAME_ENABLE_UW_CLASSIFIER | สร้างปลั๊กอินลักษณนามปลา UW |
VIAME_ENABLE_MATLAB | เปิดการสนับสนุนและติดตั้งกระบวนการ Matlab ทั้งหมด |
VIAME_ENABLE_LANL | สร้างเครื่องตรวจจับหอยเชลล์เพิ่มเติม (Matlab) |
เวียม ├── cmake # ไฟล์การกำหนดค่า CMake สำหรับแพ็คเกจย่อย ├── docs # ไฟล์เอกสารและคู่มือ (รวบรวมล่วงหน้า) ├── configs # ไฟล์และโมเดลการกำหนดค่าที่ระบบรันได้ทั้งหมด │ ├──ไปป์ไลน์ # การกำหนดค่าไปป์ไลน์การประมวลผลทั้งหมด │ │ └── รุ่น # ทุกรุ่นซึ่งดาวน์โหลดตามแฟล็กเท่านั้น │ ├── prj-linux # ไฟล์โครงการ linux เริ่มต้น │ └── prj-windows # ไฟล์โครงการ windows เริ่มต้น ├── ตัวอย่าง # ตัวอย่างที่รันได้ทั้งหมดและตัวอย่างบทช่วยสอน ├──แพ็คเกจ # โครงการภายนอกที่ระบบใช้ │ ├── kwiver # กำลังประมวลผลโครงสร้างพื้นฐานแบ็กเอนด์ │ ├── fletch # ตัวสร้างการพึ่งพาสำหรับสิ่งที่ไม่ได้เปลี่ยนแปลงบ่อย │ ├── kwant # เครื่องมือประเมินการให้คะแนนและเครื่องตรวจจับ │ ├── vivia # GUI เดสก์ท็อปพื้นฐาน (v1.0) │ └── ... # แพ็คเกจอื่น ๆ ที่หลากหลาย (โดยทั่วไปสำหรับอัลกอริทึม) ├──ปลั๊กอิน # อัลกอริธึมแบบรวมหรือตัวหุ้มรอบโครงการภายนอก │ └── ... # ปลั๊กอินสารพัน (เครื่องตรวจจับ แผนที่เชิงลึก ตัวกรอง ฯลฯ) ├── เครื่องมือ # เครื่องมือหรือสคริปต์แบบสแตนด์อโลนซึ่งมักจะสร้างจากที่กล่าวมาข้างต้น └── README.md # หน้าแนะนำโครงการที่คุณกำลังอ่าน └── RELEASE_NOTES.md # รายการอัปเดตล่าสุดในระบบต่อเวอร์ชัน
หากคุณมีการชำระเงิน VIAME อยู่แล้ว และต้องการเปลี่ยนสาขาหรืออัปเดตโค้ดของคุณ จำเป็นต้องเรียกใช้ใหม่อีกครั้ง:
git submodule update --init --recursive
หลังจากเปลี่ยนสาขาเพื่อให้แน่ใจว่าคุณมีแฮชที่ถูกต้องของแพ็คเกจย่อยภายในบิลด์ น้อยมากที่คุณอาจต้องเรียกใช้:
git submodule sync
ในกรณีที่มีการเปลี่ยนแปลงที่อยู่ของโมดูลย่อย คุณจะต้องเรียกใช้คำสั่งนี้หากคุณได้รับข้อผิดพลาด "ไม่สามารถดึงข้อมูลแฮช #hashid" ได้
VIAME ได้รับการเผยแพร่ภายใต้ใบอนุญาต BSD-3
คุณสามารถดูรายการเอกสารที่เกี่ยวข้องโดยย่อซึ่งใช้ภายในโครงการร่วมกับผู้ร่วมให้ข้อมูลได้ที่นี่
VIAME ได้รับการพัฒนาด้วยเงินทุนจากหลายแหล่ง ขอขอบคุณเป็นพิเศษต่อผู้ที่ระบุไว้ที่นี่