Difference between revisions of "2018SpringTeam2"
Line 5: | Line 5: | ||
Some applications of this project include medical robotics (e.g. medical assistance) and military applications (e.g. target location). This project be applied to crowds, collecting data on people through human computer interactions. | Some applications of this project include medical robotics (e.g. medical assistance) and military applications (e.g. target location). This project be applied to crowds, collecting data on people through human computer interactions. | ||
== Hardware == | == Hardware == | ||
Line 14: | Line 13: | ||
Raspberry Pi Camera V2: | Raspberry Pi Camera V2: | ||
== Initial Research == | == Initial Research == | ||
Line 35: | Line 33: | ||
Cons: Not as intricate as YOLO. | Cons: Not as intricate as YOLO. | ||
== Issues Encountered == | == Issues Encountered == | ||
Line 48: | Line 44: | ||
- Source code did not provide an easy interface for Python. | - Source code did not provide an easy interface for Python. | ||
- Certain versions had several configurations, of which exactly one would work. | - Certain versions had several configurations, of which exactly one would work. | ||
- Several respositories only worked with exactly one version of YOLO. | - Several respositories only worked with exactly one version of YOLO. | ||
Line 57: | Line 53: | ||
- The actual code had a bug that took 2 days to find. We went to pull request, but another UCSD student had ran into the same problem and posted it, but the code was unchanged. | - The actual code had a bug that took 2 days to find. We went to pull request, but another UCSD student had ran into the same problem and posted it, but the code was unchanged. | ||
- The only Tiny YOLO configuration file that works with the yolov2-tiny weights (which is required for YAD2K) is not listed in the list of valid yolov2-tiny weights. | |||
== Process == | |||
We ended up using YAD2K (Yet Another Darknet 2 Keras) as our Tiny YOLO library. YAD2K is fast and easy to interface (exposes functionality through Python). | |||
The original YOLO repository takes about 34 seconds to load the neural network and add weights on the RPi3. | |||
[[File:yololoadtimes.jpg]] |
Revision as of 22:33, 7 June 2018
Team 2: Follow Me
Project Objective: Identify and follow a person, given two people in the field of view. Tiny YOLO was fed into OpenCV to identify targets in a live feed.
Some applications of this project include medical robotics (e.g. medical assistance) and military applications (e.g. target location). This project be applied to crowds, collecting data on people through human computer interactions.
Hardware
Camera mount:
Electronics board design:
Raspberry Pi Camera V2:
Initial Research
The first objective was to be able to identify a person in a live feed. Our project takes Tiny YOLO's person identification information and puts it into OpenCV, which we use to follow the person.
Tiny YOLO: real time object detection. Tiny YOLO (45 MB) is a reduced version of YOLO (248 MB). Tiny YOLO is capable of classification and segmentation, and can recognize objects with accuracy.
Several identifiable objects, such as people, dogs and cars, are already built in to the program. There are many resources available online, including source code and video tutorials. Online forums suggested that timing would run at <1 Hz with Tiny YOLO.
Pros: Capable of recognizing objects with accuracy confidence levels, and can distinguish between dogs and people.
Cons: Runs at a slower frequency and requires further retraining.
OpenCV: a library of functions specified for real-time computer vision. OpenCV is capable of identifying color blocks and boundaries, and has functions to determine centroids. The centroids would be used to identify the location of the person/object, and subsequently to follow the person.
Pros: Simple code/logic, easy to follow.
Cons: Not as intricate as YOLO.
Issues Encountered
- Source code had fatal errors.
- Running took so long the Raspberry Pi killed the process.
- Image reader choked when opening certain images.
- Source code did not provide an easy interface for Python.
- Certain versions had several configurations, of which exactly one would work.
- Several respositories only worked with exactly one version of YOLO.
- Certain configuration files were mislinked on the website/README.
- Several required file dependencies were not described in documentation and had to be found elsewhere.
- The actual code had a bug that took 2 days to find. We went to pull request, but another UCSD student had ran into the same problem and posted it, but the code was unchanged.
- The only Tiny YOLO configuration file that works with the yolov2-tiny weights (which is required for YAD2K) is not listed in the list of valid yolov2-tiny weights.
Process
We ended up using YAD2K (Yet Another Darknet 2 Keras) as our Tiny YOLO library. YAD2K is fast and easy to interface (exposes functionality through Python).
The original YOLO repository takes about 34 seconds to load the neural network and add weights on the RPi3. File:Yololoadtimes.jpg