/Product-Detection-for-Visually-Impaired

πŸ›’πŸ§ƒ Product Detection in Convenience Store for Visually Impaired

Primary LanguageJupyter Notebook

μ‹œκ°μž₯애인을 μœ„ν•œ μ†Œλ§€μ  λ‚΄ μ œν’ˆ ꡬ맀 보쑰 μ‹œμŠ€ν…œ
Product Purchase Assistance System for the Visually Impaired in Retail Store

μΌμƒμƒν™œ 속 μ‹œκ°μž₯μ• μΈμ˜ 독립적이고 자유둜운 μ†Œλ§€μ  μ΄μš©μ„ μœ„ν•œ μŒμ„± ꡬ맀 보쑰 μ‹œμŠ€ν…œ

πŸ“Œ Background of the Project

background

  • 일반적인 μ†Œλ§€μ μ—μ„œ κ³Όμžλ‚˜ μ‹λ£Œν’ˆ 및 기타 μƒν’ˆμ—λŠ” μ μžκ°€ ν‘œκΈ° λ˜μ–΄ μžˆμ§€ μ•Šμ€ κ²½μš°κ°€ λŒ€λΆ€λΆ„μž„
  • μ μžκ°€ ν‘œκΈ°λ˜μ–΄ μžˆλŠ” μΊ” 음료의 κ²½μš°μ΄λ”λΌλ„, 탄산과 κ·Έ μ™Έμ˜ 음료둜만 ꡬ뢄 κ°€λŠ₯
  • 촉각을 톡해 μƒν’ˆμ— λŒ€ν•œ 정보λ₯Ό μ–»κ³ μž 물건을 집어 듀어도, 물건을 λ‹€μ‹œ μ œμžλ¦¬μ— λ‹€μ‹œ λ‘λŠ” 것도 μ–΄λ €μš΄ 상황
  • μ‹œκ°μž₯애인은 λ‹€λ₯Έ μ‚¬λžŒμ˜ 도움 μ—†μ΄λŠ” 개인의 μ„ ν˜Έλ‚˜ ν•„μš”μ— 따라 μƒν’ˆμ„ κ΅¬λ§€ν•˜κΈ° μ–΄λ €μš΄ μ‹€μ • β†’ μ‚¬μ§„μœΌλ‘œ 각 μƒν’ˆλ“€μ„ μΈμ‹ν•˜μ—¬ 을 μŒμ„±μœΌλ‘œ 이에 λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•΄μ£ΌλŠ” ꡬ맀 보쑰 μ‹œμŠ€ν…œμ„ μ œμ•ˆ

πŸ“Œ Process of the System

image

  1. μ†Œλ§€μ  λ‚΄ μ œν’ˆμ„ μ΄¬μ˜ν•œ 이미지(μ •μ§€μ˜μƒ) μž…λ ₯
  2. μž…λ ₯된 μ˜μƒμ—μ„œ 객체 인식 μˆ˜ν–‰ : YOLO λͺ¨λΈ μ‚¬μš© 2-1. μž…λ ₯ ν™”λ©΄ λ‚΄ μƒν’ˆ 객체 μ°ΎκΈ° : μƒν’ˆ 정보λ₯Ό μΈμ‹ν•˜μ—¬ 이에 λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•¨ 2-2.μž…λ ₯ ν™”λ©΄ λ‚΄ 손 객체 μ°ΎκΈ° : ν™”λ©΄ λ‚΄ μˆ˜λ§Žμ€ μƒν’ˆ 정보가 λ™μ‹œμ— 인식 될 λ•Œ ν•˜λ‚˜λ₯Ό μ§€μ •ν•˜μ—¬ μ°¨λ‘€λ‘œ 정보λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•¨
  3. 손 객체 μ˜μ—­κ³Ό μ€‘μ²©λœ μƒν’ˆ 객체 μ°ΎκΈ° : 화면에 μΈμ‹λ˜λŠ” λ§Žμ€ μ œν’ˆ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜κΈ° μœ„ν•¨
  4. κ°€μž₯ λ§Žμ€ μ˜μ—­μ΄ μ€‘μ²©λœ μƒν’ˆ 객체의 이름과 μ˜μ–‘μ •λ³΄(칼둜리, μ˜μ–‘μ„±λΆ„ λ“±)λ₯Ό 뢈러였기
  5. 뢈러온 정보λ₯Ό TTS 둜 좜λ ₯

πŸ“Œ Install

  • OpenCV : Hand Detection에 μ‚¬μš©ν•˜κΈ° μœ„ν•¨

  • Pandas : ν…μŠ€νŠΈλ‘œ μ €μž₯λ˜λŠ” μƒν’ˆ 인식 μ˜μ—­ μ’Œν‘œ 정보λ₯Ό 뢈러였기 μœ„ν•¨

  • Gtts : μΈμ‹λœ 정보λ₯Ό μŒμ„±μœΌλ‘œ μ•ˆλ‚΄ν•΄μ£ΌκΈ° μœ„ν•¨

      pip install opencv-python pandas gttse
    

πŸ“Œ How to Use

1️⃣ Learning_Product_Detect_(colab).ipynb

  • Yolov5 λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ ν•™μŠ΅μ„ μ§„ν–‰ν•©λ‹ˆλ‹€.
  • Colab으둜 μ‹€ν–‰ν•˜λŠ” 것을 ꢌμž₯ν•˜λ©°, 데이터셋은 μžλ™μœΌλ‘œ μ—°κ²°λ©λ‹ˆλ‹€.
  • μƒˆλ‘œμš΄ ν•™μŠ΅ λͺ¨λΈμ„ λ§Œλ“€κ³ μž ν•˜λŠ” 경우만 μ‹€ν–‰ν•˜λ©°, 그렇지 μ•Šμ„ λ•ŒλŠ” 2️⃣뢀터 μ‹œμž‘ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

2️⃣ Classify_Product.ipynb

  • ν•™μŠ΅λœ λͺ¨λΈμ„ λΆˆλŸ¬μ™€ 손 μ˜μ—­ κ²€μΆœκ³Ό μ œν’ˆ μ˜μ—­ κ²€μΆœμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  • (1) μ²˜λ¦¬ν•˜κ³ μž ν•˜λŠ” μ΄λ―Έμ§€λŠ” /datasets/images/에 넣어주도둝 ν•©λ‹ˆλ‹€
  • (2) ν•΄λ‹Ή μ΄λ―Έμ§€μ˜ 경둜(IMAGE_FILENAME)λ₯Ό μ½”λ“œμ—μ„œ κΌ­ λ°”κΏ”μ£ΌλŠ” 것에 μœ μ˜ν•©λ‹ˆλ‹€
    • img_file_name = "IMAGE_FILENAME" --- 3rd Cell 1st Line
    • !python yolov5/detect.py --weights weights/best_10class_150.pt --img 416 --conf 0.3 --source datasets/images/IMAGE_FILENAME.jpg --line-thickness 4 --save-txt --- 5th Cell 1st Line
  • (3) 각 μƒν’ˆ 인식 결과와 μŒμ„± μ„€λͺ…은 datasets/results/IMAGE_FILENAME/ κ²½λ‘œμ— μ €μž₯λ©λ‹ˆλ‹€

βœ… Dataset & Model Learning & Result

1. Datasets

image

  1. AI Hubμ—μ„œ 'μƒν’ˆ 이미지' 데이터셋 μ €μž₯ (일뢀 10가지 ν•­λͺ©μ˜ μ œν’ˆλ§Œ ν”„λ‘œμ νŠΈμ— μ‚¬μš©) image

  2. RoboFlowλ₯Ό μ‚¬μš©ν•˜μ—¬ Annotation & Augmentationμˆ˜ν–‰

    • Train : Valid : Test = 70 % : 20 % : 10 % (896μž₯ / 250μž₯ / 144μž₯)
    • 원본 총 1290μž₯에 λŒ€ν•΄μ„œ Annotation μˆ˜ν–‰ β†’ λ‹€μ–‘ν•œ μ „μ²˜λ¦¬ 및 μ¦κ°•μž‘μ—… μˆ˜ν–‰ β†’ 3082μž₯으둜 증강

2. Model (Yolov5) Leanring

image

image

image

3. Result

3-1. Hand Detection

image

3-2. Product Detection

image image image

πŸ’¬ References

πŸ‘©β€πŸ’» Authors

Dong-Yeon Park | πŸ“§ yeon0729@sookmyung.ac.kr