GSoC2013OpenCVApplication
Version 22 (Gary Bradski, 2015-02-10 10:29 pm)
1 | 13 | Gary Bradski | h1. GSoC OpenCV Application |
---|---|---|---|
2 | 1 | ||
3 | 1 | h3. Org ID? |
|
4 | 1 | ||
5 | 1 | OpenCV |
|
6 | 1 | ||
7 | 1 | h3. Org name? |
|
8 | 1 | ||
9 | 1 | Open Source Computer Vision Library (OpenCV) |
|
10 | 1 | ||
11 | 1 | h3. Description? |
|
12 | 1 | ||
13 | 2 | Gary Bradski | The Open Source Computer Vision Library (OpenCV) is a comprehensive computer vision library and machine learning (over 2500 functions) written in C++ and C with additional Python and Java interfaces. It officially supports Linux, Mac OS, Windows, Android and iOS. OpenCV has specific optimizations for SSE instructions, CUDA and especially Tegra. |
14 | 2 | Gary Bradski | |
15 | 19 | Gary Bradski | OpenCV is now supported by a non-profit organization: OpenCV.org. It has over 10M downloads. OpenCV has uses from gesture recognition, Android and iPhone vision apps on up to medical, robotics, mine safety and Google Streetview. |
16 | 1 | ||
17 | 20 | Gary Bradski | h3. Tags? |
18 | 20 | Gary Bradski | |
19 | 20 | Gary Bradski | OpenCV, Computer Vision, Machine Learning, Image Processing, Computational Photography, Fun |
20 | 20 | Gary Bradski | |
21 | 1 | h3. URL? |
|
22 | 1 | ||
23 | 5 | Gary Bradski | http://opencv.org/ |
24 | 1 | ||
25 | 1 | h3. License? |
|
26 | 1 | ||
27 | 1 | New and Simplified BSD |
|
28 | 1 | ||
29 | 1 | h3. Backup Admin? |
|
30 | 1 | ||
31 | 1 | Vadim.Pisarevsky |
|
32 | 1 | ||
33 | 1 | h3. Ideas Page? |
|
34 | 1 | ||
35 | 5 | Gary Bradski | http://code.opencv.org/projects/gsoc2013/wiki |
36 | 1 | ||
37 | 1 | h3. IRC channel? |
|
38 | 1 | ||
39 | 1 | <pre> |
|
40 | 1 | #opencv on freenode |
|
41 | 1 | </pre> |
|
42 | 1 | ||
43 | 1 | h3. Mailing list? |
|
44 | 1 | ||
45 | 1 | http://tech.groups.yahoo.com/group/OpenCV/ |
|
46 | 1 | ||
47 | 20 | Gary Bradski | h3. Feed URL? |
48 | 20 | Gary Bradski | |
49 | 20 | Gary Bradski | http://opencv.org/feed |
50 | 20 | Gary Bradski | |
51 | 20 | Gary Bradski | h3. Google+? |
52 | 20 | Gary Bradski | |
53 | 20 | Gary Bradski | https://plus.google.com/u/1/+OpencvOrg/posts |
54 | 20 | Gary Bradski | |
55 | 20 | Gary Bradski | h3. Twitter? |
56 | 20 | Gary Bradski | |
57 | 20 | Gary Bradski | https://twitter.com/opencvlibrary |
58 | 20 | Gary Bradski | |
59 | 20 | Gary Bradski | h3. Blog? |
60 | 20 | Gary Bradski | |
61 | 20 | Gary Bradski | http://opencv.org/ |
62 | 20 | Gary Bradski | |
63 | 20 | Gary Bradski | h3. Facebook? |
64 | 20 | Gary Bradski | |
65 | 20 | Gary Bradski | https://www.facebook.com/opencvlibrary |
66 | 20 | Gary Bradski | |
67 | 1 | ||
68 | 21 | Gary Bradski | h3. Vetran: Past summer of code, If so, challenges? |
69 | 15 | Gary Bradski | |
70 | 15 | Gary Bradski | veteran history |
71 | 15 | Gary Bradski | |
72 | 15 | Gary Bradski | OpenCV has been involved in GSoC every year since 2010. The past idea pages are listed at the bottom of the current ideas list: |
73 | 21 | Gary Bradski | http://code.opencv.org/projects/opencv/wiki/GSoC_2015 |
74 | 15 | Gary Bradski | |
75 | 21 | Gary Bradski | We do surprisingly well to meeting our top objectives each year. Contributions are listed in our change log: |
76 | 15 | Gary Bradski | http://code.opencv.org/projects/opencv/wiki/ChangeLog Note that some major milestones such as Android and iOS port derived from GSoC. |
77 | 15 | Gary Bradski | |
78 | 21 | Gary Bradski | I co-founded a company with one of my past GSoC students (Ethan Rublee) and sold that company to Google. He's now a part of Google! Project Replicant (robotics). |
79 | 15 | Gary Bradski | |
80 | 21 | Gary Bradski | Google has tended to grant us many slots, 15 last year, all passed, see below. |
81 | 15 | Gary Bradski | |
82 | 15 | Gary Bradski | Our biggest challenge is students who look very good on paper but not in practice. They misrepresent their coding or project skills in particular. Those are most at risk of dropping or failing out. This year we are going to have some Google hangout coding interviews. Simple ones since even simple interviews can filter much of this out. |
83 | 1 | ||
84 | 1 | ||
85 | 1 | ||
86 | 21 | Gary Bradski | *VETERAN HISTORY:* |
87 | 1 | OpenCV (C++) has been involved in GSoC for 5 years now. It has been an amazing help to us. It generated our ports to Android, IOS and initialized our Python and Java interfaces. It has vastly improved our sample code base and added some very key algorithms such as image denoising, image stitching and camera stabilization. A very popular addition (I use it every time I code) is a QT backend for viewing images. This came from GSOC 2010, Yannick Verdie. |
|
88 | 1 | ||
89 | 21 | Gary Bradski | *GSOC 14 HIGHLIGHTS:* |
90 | 21 | Gary Bradski | This was our most productive year ever. For a student to pass, they must complete an accepted Pull request to our repository. The code is now available in OpenCV. From the Change Log: |
91 | 21 | Gary Bradski | |
92 | 21 | Gary Bradski | Our new release OpenCV 3.0 and its contribution repository feature a lot of new functionality created by our GSoC students last year, namely: |
93 | 21 | Gary Bradski | * Text detection and recognition by Lluis Gomez and Stefano Fabri |
94 | 21 | Gary Bradski | * HDR by Fedor Morozov |
95 | 21 | Gary Bradski | * Smart segmentation and edge-aware filters by Vitaly Lyudvichenko, Yuri Gitman, Alexander Shishkov and Alexander Mordvintsev |
96 | 21 | Gary Bradski | * Car detection using Waldboost, ACF by Vlad Shakhuro and Nikita Manovich |
97 | 21 | Gary Bradski | * TLD tracker and several common-use optimization algorithms by Alex Leontiev |
98 | 21 | Gary Bradski | * RGBD module by Vincent Rabaud and associated students |
99 | 21 | Gary Bradski | * Line Segment Detector by Daniel Angelov along with custom calibration |
100 | 21 | Gary Bradski | * Many useful Computational Photography algorithms by Siddharth Kherada |
101 | 21 | Gary Bradski | * Long-term tracking + saliency-based improvements (tracking module) by Antonella Cascitelli and Francesco Puja |
102 | 21 | Gary Bradski | * Another good pose estimation algorithm and the tutorial on pose estimation by Edgar Riba and Alexander Shishkov |
103 | 21 | Gary Bradski | * Line descriptors and matchers by Biagio Montesano and Manuele Tamburrano |
104 | 21 | Gary Bradski | |
105 | 21 | Gary Bradski | *_2014 PASS/FAIL RATES_* |
106 | 21 | Gary Bradski | We had 15 students this year, all 15 passed (100% complete, a first!) |
107 | 21 | Gary Bradski | |
108 | 21 | Gary Bradski | *GSOC 13 HIGHLIGHTS:* |
109 | 16 | Gary Bradski | * Abidrahmank Did a great job on building out the OpenCV-Python interface. This is rock solid now. |
110 | 16 | Gary Bradski | * Oli Wilkie did great Android development example code |
111 | 1 | * Hilton Bristow did a great foundation and start to a fully compliant Matlab interface for OpenCV |
|
112 | 16 | Gary Bradski | * Di YangPb segmentation works and fairly fast |
113 | 16 | Gary Bradski | * Daniel Angelov Line Segment Detection. Maybe the most useful contribution this year. |
114 | 1 | * Juan Perez Rua, Shape context descriptor |
|
115 | 16 | Gary Bradski | * Ozan Tonkal 3D visualizer. We use this a lot |
116 | 16 | Gary Bradski | * Luise Bigorda Text detection in scenes. Great. |
117 | 16 | Gary Bradski | * Antonella Cascitelli, long term tracking optical flow API. |
118 | 18 | Gary Bradski | |
119 | 21 | Gary Bradski | *_2013 PASS/FAIL RATES_* |
120 | 16 | Gary Bradski | We had 14 people this year (plus one more we paid ourselves) and failed 3. |
121 | 1 | ||
122 | 6 | Gary Bradski | |
123 | 21 | Gary Bradski | *GSOC 12 HIGHLIGHTS:* |
124 | 6 | Gary Bradski | An offical iOS port was added to OpenCV. Eduard Feicho and Charu Hans improved the port and created detailed tutorials on how to add OpenCV to an iOS app |
125 | 6 | Gary Bradski | http://docs.opencv.org/doc/tutorials/ios/table_of_content_ios/table_of_content_ios.html |
126 | 6 | Gary Bradski | They made a cool tutorial for it: |
127 | 1 | gsoc2012:source:/ios/trunk/doc/CVPR2012_OpenCV4IOS_Tutorial.pdf |
|
128 | 6 | Gary Bradski | |
129 | 6 | Gary Bradski | Python was a big success for '12. The interface was improved and the student, Alexander Mordvintsev, wrote several key code examples |
130 | 1 | https://github.com/Itseez/opencv/tree/master/samples/python2 |
|
131 | 6 | Gary Bradski | |
132 | 6 | Gary Bradski | OpenCV has a lot of machine learning algorithms. Many people want to use these "out of the box", so in the course of working on new feature types for our cascade classifier, Attila Novak, pre-trained it on two new classes. The algorithm is extensively used for frontal face, he added profile faces. And, silverware detectors (for a robot project): |
133 | 1 | https://github.com/Itseez/opencv/tree/master/data/lbpcascades |
|
134 | 6 | Gary Bradski | |
135 | 6 | Gary Bradski | People have been asking for better computational photography support. Victor Passichenko implemented a non-local means denoising algorithm |
136 | 1 | http://docs.opencv.org/trunk/modules/photo/doc/denoising.html |
|
137 | 1 | ||
138 | 1 | For movie effects and VR, we've been wanting a dense optical flow algorithm for a long time. Yuri Zemlyansky implemented "simple flow" (it's not so simple, but it is dense -- assigns motion vectors to every point in a reasonable way). |
|
139 | 6 | Gary Bradski | https://github.com/Itseez/opencv/tree/master/samples/cpp/simpleflow_demo.cpp |
140 | 1 | ||
141 | 6 | Gary Bradski | OpenCV has been dying for SLAM and SfM (basically 3D reconstruction code) for years. It's a hard project to get right, it's not in yet, but Srimalj made good progress and we'll probably combine this with Google's own libmv this year. |
142 | 1 | ||
143 | 1 | Finally, no one student, but we kicked off a tutorial section 2 years ago and many students have contributed since. We'd now like each student to end their work with a tutorial example of how to use what they coded ... which ensures that it actually does get used. Tutorials have grown quite a bit and past students have continued to add tutorials: |
|
144 | 1 | http://docs.opencv.org/doc/tutorials/tutorials.html |
|
145 | 1 | ||
146 | 1 | _*2012 PASS/FAIL RATES*_ |
|
147 | 1 | We were allocated 12 students, 10 passed. |
|
148 | 1 | ||
149 | 1 | The failures were in: Active Appearance Models, and Fast Linear Program Solver. Our library is computer vision and machine learning. Many things border on active research, many algorithms have complex mathematical underpinnings. Some students look capable of performing these tasks "on paper" and with code samples but simply aren't. |
|
150 | 1 | ||
151 | 1 | Mentors try to help but sometimes the student just stops responding. Sometimes we suspect they have multiple jobs and may just be overwhelmed or have other priorities. We often have the best results from people who are pushing code at us well before the start and/or whose thesis area covers what we want implemented. We'll try to vet more closely based on these criteria, but we always seem to get about this rate of fall off. |
|
152 | 6 | Gary Bradski | |
153 | 22 | Gary Bradski | h3. Why participate? |
154 | 1 | ||
155 | 22 | Gary Bradski | OpenCV has several full time contractors working on robotic applications and another paid group working on CUDA. However, the scope of the library is much larger and GSoC interns were invaluable last year in addressing other critical areas: |
156 | 1 | ||
157 | 22 | Gary Bradski | * getting a solid port of OpenCV to Android, |
158 | 22 | Gary Bradski | * getting a solid port of OpenCV to iOS, |
159 | 22 | Gary Bradski | * developing a QT based graphical interface, the old GUI was decidedly limited and stale |
160 | 22 | Gary Bradski | * creating an automatic interface to PASCAL VOC http://pascallin.ecs.soton.ac.uk/challenges/VOC/ (the main computer vision object recognition challenge) |
161 | 22 | Gary Bradski | * coding up a long time winning classifier in PASCAL VOC: Latent SVM |
162 | 22 | Gary Bradski | * features and support for feature tracking |
163 | 22 | Gary Bradski | * A set of tutorials |
164 | 22 | Gary Bradski | * A set of python examples |
165 | 1 | ||
166 | 22 | Gary Bradski | This year, among many other ideas, we'd like to use GSoC to support vision applications for |
167 | 1 | ||
168 | 22 | Gary Bradski | * Google Cardboard! Pose tracking and visual odometry |
169 | 22 | Gary Bradski | * Projector based augmented reality. This can be done for whole buildings, see here |
170 | 22 | Gary Bradski | ** https://www.youtube.com/watch?v=XSR0Xady02o |
171 | 22 | Gary Bradski | * Deep learning. We are already installing seemless interface to Caffe and have plans (GSoC willing) to connect to Torch/LUA |
172 | 1 | ||
173 | 22 | Gary Bradski | All the above things were out of scope of the paid work and had substantial impact on OpenCV, especially making it work with Mobile. In addition, 3 of the interns are now regular contributors. 2 more are occasional contributors. |
174 | 1 | ||
175 | 22 | Gary Bradski | Thus, why we are applying: We want to bring in a new generation of contributors and also to fill out areas where to don't have active development. We hope to gain pretty much a repeat of last year: Filling out new areas, perhaps co-authoring new papers and getting new regular contributors. |
176 | 1 | ||
177 | 1 | h3. Mentor selection criterion? |
|
178 | 1 | ||
179 | 1 | 1) All mentors but one are known developers of OpenCV. We also allow Professors to mentor since they have great experience in student-mentor interactions. |
|
180 | 1 | ||
181 | 1 | (2) All mentors have extensive computer vision AND coding background. |
|
182 | 1 | ||
183 | 1 | (3) All mentors are people who have had interns or students to manage, either in companies, academic settings or research groups. If we have a particularly high performing and social student, we would let them mentor also because they have recently seen things from the other side. |
|
184 | 1 | ||
185 | 1 | h3. Disappearing students? |
|
186 | 1 | ||
187 | 1 | * We will try to prevent this by having mentors keep regular contact via skype meetings 1/week, twitter and email, but if it happens: |
|
188 | 1 | * We will post the orphaned project to our user group and offer a some of the mentor compensation (~$200) to someone who completes the project. |
|
189 | 1 | * Something we've now learned, that we will "interview" potential students with a google hangout simple coding test. Most of our problems have been from students who represented to us that they could program but could not/had never done a project at all. We will now try to weed that out. |
|
190 | 1 | ||
191 | 1 | h3. Disappearing Mentors? |
|
192 | 1 | ||
193 | 1 | (1) We will have back up mentors on hand. We have a pool of mentors already who are busy and so don't want to promise to be mentors but who are willing to serve as a backup. |
|
194 | 1 | -- Last year we had several such mentors who were not needed. |
|
195 | 1 | ||
196 | 1 | (2) The admins are the back up of last resort. Both of us have extensive mentoring experience, both have already mentored up to 3 GSoC students at a time. |
|
197 | 1 | ||
198 | 22 | Gary Bradski | |
199 | 22 | Gary Bradski | |
200 | 1 | h3. Steps for interaction? |
|
201 | 1 | ||
202 | 22 | Gary Bradski | These techniques were used in 2010 - 2014 and worked well, so we'll use them again: |
203 | 1 | ||
204 | 1 | Before the project, we will encourage them to post a detailed project plan to the user group (also socially committing them to complete). |
|
205 | 1 | We will set up a 2x daily twitter feed for all the summer's development projects. |
|
206 | 1 | ||
207 | 1 | We ask they put project results up on a youtube channel that will be posted to the large user group. This provides positive reinforcement and feedback. |
|
208 | 1 | ||
209 | 1 | We hope to set up projects with 3 goals: |
|
210 | 1 | ||
211 | 1 | (1) Quick and turn around (within a few weeks they should have a baseline accomplishment), this will be followed by |
|
212 | 1 | ||
213 | 1 | (2) the main, reasonable summer goal, but there will also be |
|
214 | 1 | ||
215 | 1 | (3) a more comprehensive "stretch goal" that we will encourage them to complete, getting feedback and feature requests from the community. |
|
216 | 1 | ||
217 | 1 | For the more advanced projects, we try to write a paper with the students (in the past we have an ICCV, ACCV and CVPR submissions) |
|
218 | 1 | -- The best students may become interns at mentor's work places (which has happened 5 times now). |
|
219 | 1 | ||
220 | 1 | h3. Encourage students to keep contributing/stick to their projects. |
|
221 | 1 | ||
222 | 1 | Right after the project, the student can, almost always, still add documentation, tutorials, test code. |
|
223 | 1 | ||
224 | 1 | As above, for advanced projects, we like to see if we can publish joint papers together, a win-win for students and for us and a strong incentive for students to stay involved. Our ICCV paper "ORB: An efficient alternative to SIFT or SURF", is one such example -- highest cited paper from that whole conference. |
|
225 | 1 | ||
226 | 22 | Gary Bradski | In 2013, we also hired one student contributor for an independent internship by OpenCV itself. Since some money is coming in, we hope to do more of this. Many get hired into the places the mentors work. |
227 | 1 | ||
228 | 1 | These are often smaller side projects that can keep the student involved. |
|
229 | 1 | ||
230 | 1 | For the medium to longer term: |
|
231 | 1 | OpenCV will be fully refactored into small, independent modules by summer coding season. This means it will be easier to add new modules. |
|
232 | 1 | One place we've seen this already is in the continued growth of the tutorial section where its easy for student's to do something bit sized. |
|
233 | 1 | ||
234 | 1 | OpenCV is now on GIT which, again, makes it easy to do minor (or extensive) submissions. But small tweaks are easier for students to keep contributing to. We now have many pull requests and many of these from former students, often when they show up in some new workplace. |
|
235 | 1 | ||
236 | 22 | Gary Bradski | Starting in 2013 and continuing to 2014 and this year, we also require students to create a youtube video of their accomplishments. That is a big incentive and Resume item for them. |
237 | 22 | Gary Bradski | |
238 | 22 | Gary Bradski | |
239 | 22 | Gary Bradski | |
240 | 22 | Gary Bradski | |
241 | 22 | Gary Bradski | |
242 | 22 | Gary Bradski | h3. Ideas page? |
243 | 22 | Gary Bradski | |
244 | 22 | Gary Bradski | We have a page at http://code.opencv.org/projects/gsoc2013/wiki |
245 | 22 | Gary Bradski | |
246 | 22 | Gary Bradski | +*Summary:*+ |
247 | 22 | Gary Bradski | |
248 | 22 | Gary Bradski | *Contact info:* |
249 | 22 | Gary Bradski | * Please provide: |
250 | 22 | Gary Bradski | ** Your name |
251 | 22 | Gary Bradski | ** A phone number |
252 | 22 | Gary Bradski | ** An email address where we can reach you for daily communication. |
253 | 22 | Gary Bradski | *** If you have a website that discusses your research, work and/or coding, let us know. |
254 | 22 | Gary Bradski | |
255 | 22 | Gary Bradski | *Requirements:* |
256 | 22 | Gary Bradski | |
257 | 22 | Gary Bradski | * We are looking for people who have strong programming backgrounds, there is no time to "learn on the job". |
258 | 22 | Gary Bradski | ** Most of the positions will require advanced ability and experience in *C++* and/or *Python*. |
259 | 22 | Gary Bradski | *** Exception might be for help working on the website itself |
260 | 22 | Gary Bradski | ** Most of the projects require knowledge of computer vision techniques. If so, your application will not be accepted if you don't have such experience. These will be stated on the projects ideas page. |
261 | 22 | Gary Bradski | |
262 | 22 | Gary Bradski | Again, you must meet the requirements -- it is not enough to "want" to work on computer vision, we have limited time and so we need people who already have the necessary background. If you lack this background, spend the next year getting the background and apply then, we intend to be back for GSoC 2013. |
263 | 22 | Gary Bradski | |
264 | 22 | Gary Bradski | Students will be expected to ''meet'' with their mentors by email, skype or google chat once a week and to twitter at least 2x/day on their current coding activities |
265 | 22 | Gary Bradski | |
266 | 22 | Gary Bradski | *Sample Code:* |
267 | 22 | Gary Bradski | |
268 | 22 | Gary Bradski | ** With your application: *Please send in some sample code that you are proud of and are prepared to answer questions on.* |
269 | 22 | Gary Bradski | ** If you have other useful skills such as experience with code optimization, or knowledge of SSE, MMX, CUDA or especially development experience on Android or iPhone let us know. |
270 | 22 | Gary Bradski | |
271 | 22 | Gary Bradski | *Courses Taken:* |
272 | 22 | Gary Bradski | |
273 | 22 | Gary Bradski | List the courses that you have taken in: |
274 | 22 | Gary Bradski | ** Math |
275 | 22 | Gary Bradski | ** Computer programming, especially: |
276 | 22 | Gary Bradski | ** Programming languages |
277 | 22 | Gary Bradski | ** Data structures |
278 | 22 | Gary Bradski | ** Web programming |
279 | 22 | Gary Bradski | ** Data base |
280 | 22 | Gary Bradski | ** Computer vision |
281 | 22 | Gary Bradski | ** Engineering |
282 | 22 | Gary Bradski | h2. Work Experience |
283 | 22 | Gary Bradski | |
284 | 22 | Gary Bradski | * List any work experience that you've had in |
285 | 22 | Gary Bradski | ** software development and/or in |
286 | 22 | Gary Bradski | ** computer vision. |
287 | 22 | Gary Bradski | |
288 | 22 | Gary Bradski | *Open Source Experience:* |
289 | 22 | Gary Bradski | |
290 | 22 | Gary Bradski | * If you have already contributed to other open source projects, please tell us what it was and when you did this. |
291 | 22 | Gary Bradski | |
292 | 22 | Gary Bradski | *Which project you are interested in and and why you want to do it:* |
293 | 22 | Gary Bradski | |
294 | 22 | Gary Bradski | * Please tell us which of the project ideas you are interested and why you want to work on that one. |
295 | 22 | Gary Bradski | * If you have your __own idea__, please describe it clearly and provide a timeline of progress towards that goal. |
296 | 22 | Gary Bradski | |
297 | 22 | Gary Bradski | *References:* |
298 | 22 | Gary Bradski | |
299 | 22 | Gary Bradski | * Please list 2 or 3 academic or programming work references. |
300 | 22 | Gary Bradski | |
301 | 9 | Gary Bradski | |
302 | 9 | Gary Bradski | |
303 | 1 | h3. New organization with someone to vouch for us? |
|
304 | 1 | ||
305 | 1 | No, we're an established org, 2010 and 2011. Still, talk to Jean-Yves Bouguet "Jean-Yves Bouguet" <jyb atthat google>, in the streetview group for a view. Or talk to Sebastian Thrun "Sebastian Thrun" <thrun atthat google>, head of GoogleX who knows me (Gary Bradski) well. |
|
306 | 1 | ||
307 | 1 | h3. Vouch for younger orgs? |
|
308 | 1 | ||
309 | 9 | Gary Bradski | zxing |
310 | 9 | Gary Bradski | |
311 | 1 | ---- |
|
312 | 10 | Gary Bradski | |
313 | 10 | Gary Bradski | "Back":http://code.opencv.org/projects/gsoc2013/wiki |