การตรวจจับวัตถุ: จำเป็นต้องมีการฝึกอบรมหรือไม่จำเป็นต้องมีการฝึกอบรม?

คำถามนี้เกี่ยวข้องกับการตรวจจับวัตถุ และโดยพื้นฐานแล้วคือการตรวจจับวัตถุที่ "รู้จัก" ใด ๆ ตัวอย่างเช่น ลองจินตนาการว่าฉันมีวัตถุด้านล่าง

  1. โต๊ะ
  2. ขวด.
  3. กล้อง
  4. รถ

ฉันจะถ่ายรูป 4 รูปจากวัตถุแต่ละชิ้นเหล่านี้ คนหนึ่งจากซ้าย อีกคนจากขวา และอีก 2 คนจากบนและล่าง เดิมทีฉันคิดว่าเป็นไปได้ที่จะจดจำวัตถุเหล่านี้ด้วยภาพถ่ายทั้ง 4 ภาพต่อภาพ เพราะคุณมีภาพถ่ายทั้ง 4 มุม ไม่ว่าคุณจะมองเห็นวัตถุด้วยวิธีใดก็ตาม คุณก็ตรวจจับมันได้

แต่ฉันสับสนกับความคิดของใครบางคนเกี่ยวกับการฝึกเครื่องยนต์ด้วยภาพเชิงบวกและเชิงลบนับพันจากแต่ละวัตถุ ฉันไม่คิดว่าสิ่งนี้เป็นสิ่งจำเป็น

พูดง่ายๆ ก็คือ คำถามของฉันคือ ในการที่จะระบุวัตถุนั้น ฉันจำเป็นต้องมีวัตถุเชิงบวกและเชิงลบหลายพันรายการเหล่านี้หรือไม่? หรือแค่ 4 รูปจาก 4 มุมก็เพียงพอแล้ว?

ฉันคาดว่าจะใช้ OpenCV สำหรับสิ่งนี้

อัปเดต

จริงๆ แล้วหลักๆ ก็ประมาณนี้ครับ.. ลองนึกภาพผมมีโน้ตบุ๊ก 2 เครื่อง หนึ่งคือ Dell และอีกอันคือ HP ทั้งสองเครื่องเป็นแล็ปท็อป แต่คุณรู้ไหมว่าทั้งสองเครื่องมีความแตกต่างที่มองเห็นได้ชัดเจนรวมถึงโลโก้ด้วย เราสามารถทำได้โดยใช้ คำอธิบายฟีเจอร์ ได้ไหม ถ้าไม่ กระบวนการ "ฝึกฝน" จะ "ยาก" แค่ไหน? ต้องมีกี่รูป?

อัปเดต 2 ฉันต้องตรวจจับวัตถุ "เฉพาะ" ไม่ใช่รถทุกคัน ทุกขวด เป็นต้น เช่น "รถมารูติ รุ่น 123" และ "รถเฟอร์รารี รุ่น 234" ต่างก็เป็นรถคนละคันแต่ต่างกัน ลองนึกภาพฉันมีรูปภาพของ Maruti และ Ferrari ของรถรุ่นที่กล่าวมาข้างต้น แล้วฉันต้องตรวจจับพวกมัน ฉันไม่ต้องกังวลกับรถหรือรถรุ่นอื่น หรือแม้แต่รุ่นอื่นๆ ของ Maruti และ Ferrari แต่ที่กล่าวมาข้างต้น "รถยนต์รุ่น Maruti 123" ควรระบุเป็น "รถยนต์รุ่น Maruti 123" และที่กล่าวมาข้างต้น "รถยนต์รุ่น Ferrari 234" ควรระบุเป็น "รถยนต์รุ่น Ferrari 234" ฉันต้องมีรูปภาพจำนวนเท่าใดเพื่อสิ่งนี้?


person JustCause    schedule 06.05.2014    source แหล่งที่มา
comment
ขึ้นอยู่กับว่าคุณจะใช้อัลกอริทึมประเภทใด   -  person eerorika    schedule 06.05.2014
comment
คุณรู้ไหมว่าคุณกำลังถ่ายภาพวัตถุ 3 มิติ 2 มิติ? เนื่องจากการหมุนที่แตกต่างกันเกิดขึ้นในพื้นที่ 3 มิติ แต่การจดจำต้องเกิดขึ้นในพื้นที่ 2 มิติ หากคุณสามารถสร้างวัตถุ 3 มิติขึ้นมาใหม่ได้ การจดจำในพื้นที่ 3 มิติจะง่ายกว่ามาก แต่นั่นก็ถือเป็น IF ที่ยิ่งใหญ่   -  person MSalters    schedule 06.05.2014
comment
@ user2079303: โปรดดูการอัปเดตคำถามของฉัน   -  person JustCause    schedule 06.05.2014
comment
@MSalters: โปรดดูการอัปเดตคำถามของฉัน   -  person JustCause    schedule 06.05.2014
comment
@HashMap คุณต้องการตรวจจับขวด / โต๊ะ / กล้อง / รถยนต์หรือขวด / โต๊ะ / กล้อง / รถยนต์ใด ๆ หรือไม่? หากคุณต้องการตรวจจับวัตถุที่ไม่เปลี่ยนรูปเฉพาะเจาะจง รูปภาพสองสามรูปของวัตถุนั้นอาจเพียงพอแล้วโดยไม่ต้องฝึกฝนใดๆ ในทางกลับกัน หากคุณต้องการตรวจจับรถปอร์เช่ คาร์เรร่า รูปภาพฟอร์ด โฟกัส 2-3 รูปอาจไม่ช่วยอะไรได้ ;)   -  person Micka    schedule 06.05.2014
comment
@Micka: คุณพูดถูก ฉันต้องตรวจจับวัตถุเฉพาะ ไม่ใช่รถทุกคัน ทุกขวด เป็นต้น เช่น รถ Maruti รุ่น 123 และรถ Ferrary รุ่น 234 ต่างก็เป็นรถคนละคันแต่ต่างกัน ลองนึกภาพฉันมีรูปภาพของมารูติและเฟอร์รารี แล้วฉันต้องตรวจจับพวกมัน ฉันไม่ต้องกังวลกับรถรุ่นอื่น รถรุ่นอื่น หรือแม้แต่รุ่นอื่นๆ ของ Maruty และ Ferrary แต่รถ Maruti รุ่น 123 ที่กล่าวมาข้างต้นควรระบุเป็นรถ Maruti รุ่น 123 และรถรุ่น Ferrary รุ่น 234 ที่กล่าวถึงข้างต้นควรระบุเป็นรุ่นรถ Ferrary 234 ฉันต้องใช้รูปภาพจำนวนเท่าใดในการดำเนินการนี้   -  person JustCause    schedule 06.05.2014
comment
อย่างน้อยด้านละด้านของวัตถุที่อาจมองเห็นได้ในการตรวจพบในภายหลัง ยิ่งมากก็ยิ่งดี แต่หากโมเดลรถเหล่านั้นได้รับการแก้ไขโดยผู้ใช้หรือเปลี่ยนแปลงด้วยวิธีอื่น (สี/การออกแบบ ฯลฯ) โมเดลอ้างอิงของคุณอาจไม่ถูกต้องเพียงพออีกครั้ง คุณจะต้องฝึกโมเดล แต่ทำไมคุณไม่ลองทำโดยไม่ได้ฝึกฝนล่ะ?   -  person Micka    schedule 06.05.2014
comment
อาจจะดูที่: courses.cs.washington.edu/ courses/csep576/05wi/lectures/   -  person Micka    schedule 06.05.2014
comment
@Micka: หากผู้ใช้แก้ไขมัน ตอนนี้เราก็สามารถเพิกเฉยต่อมันได้   -  person JustCause    schedule 06.05.2014
comment
@มิกะ: ว้าว! ลิงค์ที่น่าทึ่ง!!! คุณมีแบบนี้มากกว่านี้ไหม? ว้าว!   -  person JustCause    schedule 06.05.2014
comment
@Micka: ฉันขอทราบได้ไหมว่าต้องใช้รูปภาพจำนวนเท่าใดในการฝึกซ้อมและต้องทำอย่างไร ตามลิงก์ที่คุณให้มา ดูเหมือนว่าเราต้องให้ 1 ภาพในกรณีของ 2D เนื่องจากของฉันเป็นแบบ 3 มิติ 4 ภาพจาก 4 ด้านจะเพียงพอหรือไม่   -  person JustCause    schedule 07.05.2014
comment
ไม่มีประสบการณ์จริงแต่ผมจะนึกถึงภาพ 8 ภาพ รวมทั้งภาพระหว่าง 2 ด้านด้วย อาจค้นหากระดาษร่อนต้นฉบับ (โดย Lowe) อีกอย่างพวกเขาก็ใช้ฐานข้อมูลด้วย   -  person Micka    schedule 07.05.2014
comment
@HashMap google สำหรับบทความนี้ด้วย: คุณสมบัติรูปภาพที่โดดเด่นจากจุดสำคัญที่ไม่แปรเปลี่ยนมาตราส่วน - UBC ... ในตอนท้ายพวกเขาจะให้ข้อมูลบางอย่างเกี่ยวกับการรับรู้ obj พื้นฐาน และอ้างอิงบทความอื่น ๆ ของพวกเขา!   -  person Micka    schedule 07.05.2014
comment
@Micka: ขอบคุณ คำแนะนำทั้งหมดของคุณใช้ได้กับสถานการณ์แบบเรียลไทม์ใช่ไหม ซึ่งหมายความว่ากล้องมองเห็นวัตถุและระบุได้   -  person JustCause    schedule 08.05.2014


คำตอบ (2)


คำตอบ:

  1. หากคุณต้องการตรวจจับวัตถุเฉพาะและคุณไม่จำเป็นต้องคำนึงถึงการเปลี่ยนแปลงมุมมอง คุณสามารถใช้คุณสมบัติ 2 มิติ: http://docs.opencv.org/doc/tutorials/features2d/feature_homography/Feature_homography.html

  2. หากต้องการแยกความแตกต่างระหว่างโลโก้ 2 แบบ คุณอาจต้องสร้างเครื่องมือตรวจสอบสำหรับโลโก้แต่ละอันซึ่งจะได้รับการฝึกฝนเกี่ยวกับชุดรูปภาพ ตัวอย่างเช่น คุณสามารถฝึกตัวแยกประเภท Haar cascade ได้

  3. หากต้องการแยกความแตกต่างระหว่างรถยนต์รุ่นต่างๆ คุณอาจต้องฝึกตัวแยกประเภทโดยใช้รูปภาพการฝึกของรถแต่ละคัน อย่างไรก็ตาม ฉันพบแอปพลิเคชันที่ใช้วิธีเพื่อนบ้านที่ใกล้ที่สุด - เพียงแยกคุณสมบัติจากรูปภาพทดสอบที่กำหนดและเปรียบเทียบกับชุดรูปภาพที่ทราบของรถยนต์รุ่นต่างๆ

นอกจากนี้ ฉันสามารถแนะนำแนวทางและแพ็คเกจบางอย่างได้หากคุณจะอธิบายเพิ่มเติมเกี่ยวกับแอปพลิเคชัน

person GilLevi    schedule 06.05.2014
comment
สวัสดี ขอบคุณสำหรับการตอบกลับ ใช่ อย่างที่ผมบอกไปแล้วในคำถาม ลองจินตนาการว่าผมมีรูปภาพรถ Maruti รุ่น 123 และรุ่น Ferrary Car 234 อยู่แล้ว ดังนั้นหากกล้องเห็นรถ Maruti รุ่น 123 (เรียลไทม์) ก็ควรจะระบุตามที่เป็นอยู่ ไม่ควรสับสนกับเฟอร์รารี เราไม่ต้องคำนึงถึงรถคันอื่น ต่อมาในแอปพลิเคชันนี้ ฉันอาจต้องระบุประตู ไฟ ฯลฯ ของรถคันนี้ด้วย ฉันรอคอยการตอบกลับของคุณ - person JustCause; 06.05.2014
comment
ฉันจะลองใช้คุณสมบัติ Decaf: github.com/UCB-ICSI-Vision- กลุ่ม/decaf-release - person GilLevi; 06.05.2014
comment
ขอบคุณ! นี่คือ courses.cs.washington.edu/courses หรือไม่ /csep576/05wi/lectures/ ? - person JustCause; 07.05.2014
comment
ขอบคุณ. คำแนะนำเหล่านี้ใช้ได้กับสถานการณ์แบบเรียลไทม์ใช่ไหม ซึ่งหมายความว่ากล้องมองเห็นวัตถุและระบุวัตถุได้แบบเรียลไทม์ - person JustCause; 08.05.2014
comment
บางทีสำหรับการตรวจจับแบบเรียลไทม์ คุณควรลองใช้ Caffe: caffe.berkeleyvision.org ซึ่งเร็วกว่า Decaff - person GilLevi; 08.05.2014
comment
ขอบคุณมาก. เรายังต้องฝึกภาพใช่ไหม? ฉันต้องใส่รูปภาพจำนวนเท่าใดในขั้นตอนการสอนนี้ จะถ่ายรูปให้ครบ 4 ด้าน ข้างละ 2 รูปจะพอเหรอ? ที่ได้ 8 ภาพ - person JustCause; 08.05.2014
comment
กระบวนการที่ฉันแนะนำมีดังต่อไปนี้: ในขั้นตอนการฝึก ให้แยกฟีเจอร์โดยใช้ Decaf จากอิมเมจจำนวนมาก และฝึกตัวแยกประเภท ในขั้นตอนการทดสอบ เมื่อได้รับอิมเมจทดสอบแล้ว ให้ดึงคำอธิบายออกมาแล้วป้อนไปยังตัวแยกประเภท ฉันคิดว่าคุณจะต้องมีมากกว่า 8 ภาพ ถ่ายภาพจำนวนมากในสภาพฟ้าผ่าที่ต่างกันและจากมุมมองที่ต่างกัน - person GilLevi; 08.05.2014
comment
อืม..รูปภาพจำนวนมากหมายถึงหลายพันต่อวัตถุใช่ไหม หรือ 20-30 ? จริงๆ แล้วฉันแค่ต้องตรวจจับวัตถุที่เฉพาะเจาะจงเท่านั้น ดังนั้นหากมีวัตถุเป็นพันๆ ชิ้น ก็จะมีภาพหลายล้านภาพ! - person JustCause; 08.05.2014
comment
เป็นการยากที่จะบอกว่าคุณต้องการภาพจำนวนเท่าใด นอกจากนี้ยังขึ้นอยู่กับข้อจำกัดของเงื่อนไขของการเปลี่ยนแปลงฟ้าผ่าและก่อให้เกิดการเปลี่ยนแปลงด้วย เริ่มต้นด้วยสองสามโหลแล้วดูว่ามันทำงานได้ดีแค่ไหน - person GilLevi; 08.05.2014
comment
ขอบคุณ กระบวนการนี้ใช้เวลานานเท่าใด? - person JustCause; 08.05.2014
comment
การแยกคุณสมบัติ decaf จะใช้เวลาประมาณ 1-3 วินาทีต่อภาพ (บนคอมพิวเตอร์ของฉัน) ฉันไม่แน่ใจว่าการฝึกจะผ่านไปนานแค่ไหน - person GilLevi; 08.05.2014
comment
ขอบคุณสำหรับการตอบกลับและการสนับสนุนอย่างต่อเนื่อง คุณพูดถึงบางอย่างเกี่ยวกับสิ่งเพื่อนบ้านที่ใกล้ที่สุดใช่ไหม? ลิงค์ที่ฉันให้คุณเป็นแบบนั้นเหรอ? ฉันเพิ่งเห็นว่ามันถูกใช้เพื่อระบุชิ้นส่วนและตำแหน่งของยานพาหนะ! ฉันขอทราบความคิดของคุณเกี่ยวกับเรื่องนี้ได้ไหม? ขอขอบคุณอีกครั้งสำหรับการสนับสนุนอย่างต่อเนื่องของคุณ - person JustCause; 08.05.2014
comment
โดยพื้นฐานแล้ว คุณสามารถแยกคุณสมบัติออกจากตัวอย่างการฝึกชุดใหญ่ได้ กำหนดอิมเมจทดสอบ ให้แยกคุณสมบัติจากนั้นและค้นหาคุณสมบัติที่ใกล้เคียงที่สุดของอิมเมจทดสอบในชุดการฝึก คุณสามารถจัดประเภทอิมเมจทดสอบให้เป็นคลาสเดียวกันกับฟีเจอร์ที่ใกล้เคียงที่สุดในชุดการฝึก (หรือที่เรียกกันทั่วไปว่าใกล้เคียงที่สุด) - person GilLevi; 09.05.2014
comment
สวัสดี ฉันมีอีกหนึ่งคำถาม หลังจากอบรมแล้วผลงานเป็นยังไงบ้าง? ไฟล์ XML? - person JustCause; 18.05.2014
comment
โดยพื้นฐานแล้ว ขึ้นอยู่กับการใช้งานและสภาพแวดล้อม (คุณกำลังฝึกอบรมตัวแยกประเภทใด ในภาษาโปรแกรมใด OpenCV หรือ Matlab) ฉันไม่แน่ใจว่าผลลัพธ์คืออะไรในกรณีที่คุณใช้ OpenCV - person GilLevi; 19.05.2014

ในการตอบคำถามที่คุณถามในชื่อเรื่อง หากคุณต้องการที่จะระบุได้ว่าวัตถุในภาพคืออะไร คุณต้องมีอัลกอริธึมที่ได้รับการดูแล (หรือที่เรียกว่าการฝึกอบรม) มิฉะนั้นคุณจะสามารถระบุได้ในบางกรณีถึงขอบหรือการมีอยู่ของวัตถุ แต่ไม่ใช่ว่าเป็นวัตถุประเภทใด ในการที่จะบอกว่าวัตถุนั้นคืออะไร คุณต้องมีชุดการฝึกที่มีป้ายกำกับ

จากเนื้อหาของคำถาม จำนวนมุมที่เป็นไปได้ในภาพของวัตถุนั้นไม่มีที่สิ้นสุด หากคุณมีรูปภาพสี่ภาพในชุดการฝึกของคุณ ตัวอย่างการทดสอบอาจถ่ายในมุมที่อยู่กึ่งกลางระหว่างตัวอย่างการฝึก A และตัวอย่างการฝึก B ซึ่งทำให้ยากต่อการจดจำสำหรับอัลกอริทึมของคุณ ยิ่งการฝึกอบรมมากเท่าไรก็ยิ่งมีโอกาสจดจำวัตถุได้มากขึ้นเท่านั้น ระวัง: คุณจะไม่มีทางมั่นใจได้เลยว่าอัลกอริทึมของคุณจะจดจำวัตถุได้ มันก็มีแนวโน้มมากขึ้น

person cangrejo    schedule 06.05.2014
comment
ขอบคุณสำหรับการตอบกลับ. จริงๆ แล้วหลักๆ ก็ประมาณนี้ครับ.. ลองนึกภาพผมมีโน้ตบุ๊ก 2 เครื่อง หนึ่งคือ Dell และอีกอันคือ HP ทั้งสองเครื่องเป็นแล็ปท็อป แต่คุณรู้ไหมว่าทั้งสองเครื่องมีความแตกต่างที่มองเห็นได้ชัดเจนรวมถึงโลโก้ด้วย เราสามารถทำได้โดยใช้คำอธิบายคุณลักษณะหรือไม่(docs.opencv .org/doc/tutorials/features2d/feature_description/) ถ้าไม่ กระบวนการฝึกอบรมจะยากแค่ไหน ต้องมีกี่รูป? - person JustCause; 06.05.2014