Advanced Vision Course Materials
The goal of this course is provide you with the skills to understand and sketch out solutions to a variety of computer vision applications. You should end up with the skills to tackle novel situations and incompletely defined applications. We will approach this by looking at 6 simplified computer vision systems that cover a large portion of the range of both applied and research computer vision.IMPORTANT INFORMATION: This course is not taught by the traditional lectures. Instead, AV uses an Inverted Classroom method. This means that you will have about 15 hours of video to watch in your own time. This material is assessible. There are still 2 full class meetings each week. Normally, at the first meeting we will be discussing any questions that you either suggest in advance or raise in class on the day. The second meeting will be a guest lecture teaching you some advanced vision technology and applications (these talks are not assessed).Syllabus
This module looks at several approaches to building vision systems. The order of the topics might change depending on the practicals. See links to the systems in the left side navigation panel.- System 1: Orthographically viewed non-rigid 2D objects
- System 2: Recognising classes of shape
- System 3: Video Tracking (2D)
- System 4: 3D objects from range data (recognition)
- System 5: Video based human behaviour understanding
- System 6: 3D objects from stereo vision (recognition)
- System 7: Deep nets for Vision
In the process of doing this, we will encounter a variety of topics in low, middle and high level computer visionOther References, Course Notes and Other Study Materials
There is no perfect text book for this course.- Recommended course textbooks (All available electronically from the University library)
- E.R. Davies - Machine Vision - Theory, Algorithms and Practice, Elsevier, 5th Edition, 2005. (content for about 1/2 of course)
- Solomon & Breckon, "Fundamentals of Digital Image Processing - A Practical Approach with Examples in Matlab", "Support Web Site", Wiley-Blackwell, 2010, ISBN: 978-0470844731. (content for about 1/2 of course)
- R. Szeliski, "Computer Vision", Springer, 2011, ISBN: 978-1-84882-934-3. (content for about 1/2 of course)
- Optional supplementary textbooks
- T. Morris - "Computer Vision and Image Processing" (Palgrave, 1st Edition, 2004)
- D. A. Forsyth & J. Ponce - "Computer Vision - a modern approach" (Prentice Hall, 2nd Edition, 2012)
- Online computer vision resources at University of Edinburgh (and beyond)
- An index to online notes on some topics covered in the lectures.
- Online computer vision books.
- The HIPR image processing summary and on-line interactive demonstration package. Direct access is via HIPR2
- CVonline - an online encyclopedia of computer vision. (About 1200 of the 1600 topics have entries so far.)
- Illustrated Dictionary of Computer Vision (UoE internal access only, not wireless)
- Online documentation for the matlab image processing toolkit.
- Recent academic and industrial research in computer vision/graphics:
- ACM SIGGRAPH (graphics)
- Eurographics Digital Library (graphics)
- USC Bibliography (computer vision)
Online computer vision and image processing courses- Online computer vision lectures from the University of Central Florida.
- Robotic Vision - 50 hour MOOC from Queensland University of Technology
- Robotics: Perception - MOOC from University of Pennsylvania
Online MATLAB introductions and tutorials- MathWorks - Learn with MATLAB and Simulink Tutorials
- MATLAB Courses
- Learn to Code with MATLAB
- MATLAB Tutorial
- Introduction to MATLAB | MIT OpenCourseWare
MATLAB code for the systems demonstrated in the lectures.Summary of In-class Activities
There is a summary of the questions that students emailed to me before class meetings and a summary of the in-class discussion exercises.Inverted Classroom Advice
Introduction: The expectation is that you take more control of your education in this course. There are no lectures in the traditional sense. Instead, we have pre-recorded 50-60 short videos (typically 15 minutes each) on different topics. You are to watch the videos in your own time (about 2 hours/week).There are six main topics and the videos for each topic are intended to be watched in the order listed on the Learn page. However, the topics themselves can largely be watched in any order. There are cross references from one topic to others.Using the materials: Each topic has a set of subtopics in a suggested order. You can get to the topic by clicking on one of the "View details" links. On the page for each of the topics, there are links to the subtopics. You can expose these by clicking on the topic name. Each subtopic has potentially 4 resources:- PDF: There are 3 PDF files. The first file is a full size set of the slides that are used in the video. The second file is a 4 slide to a page version. The third set generally has an unfilled box on each content slide. The idea is that you fill in the box while listening to the video; writing helps you remember the concept. The 4-to-a-page format is to save paper if you decide to print the file.
- Review question + answer: A question based on the material presented in this subtopic that helps you better understand the material. A brief answer to the question is given
- Video: A video explaining the content. It should be playable inline by clicking on the video, or the video can be downloaded in 3 different formats.
- References/Examples/Online: Other resources that will help you understand the topic, and also additional topics.
Timing: The topics are given a planned order and the main course web page has suggested a set of subtopics to be covered each week. You are expected to have watched the videos for that week before the start of the week. The class sessions are used: a) to answer questions that you email to me or ask in class and b) do some non-assessed group discussion on a vision problem related to the week's videos.The order and timing of the topics is chosen so that you will have covered the materials needed for the practicals in time.
Hiển thị các bài đăng có nhãn Programming. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Programming. Hiển thị tất cả bài đăng
Thứ Tư, 6 tháng 2, 2019
Advanced Vision Course from The university of Edinburgh
Link: https://www.learn.ed.ac.uk/webapps/blackboard/content/listContent.jsp?course_id=_54479_1&content_id=_2584712_1
Chủ Nhật, 14 tháng 10, 2018
Programming Language
Python:
1) edX_MITx-6.00.1x Introduction to Computer Science and Programming Using Python (python 3.6)
Online: https://courses.edx.org/courses/course-v1:MITx+6.00.1x+2T2018/course/
Ebook: [John_V._Guttag]_EdX course_Introduction_to_Computation_and_Python
2) edX_MITx: 6.00.2x Introduction to Computational Thinking and Data Science
https://courses.edx.org/courses/course-v1:MITx+6.00.2x+3T2017/courseware/
3) edX_HarvardX-PH526x_Using Python for Research
Online: https://courses.edx.org/courses/course-v1:HarvardX+PH526x+2T2018/course/
Library: https://docs.python.org/3/library/index.html
4) edX_UTArlingtonX: CSE1309x_Introduction to Programming Using Python
Online: https://courses.edx.org/courses/course-v1:UTArlingtonX+CSE1309x+1T2018/course/
5) Python Tutorial:
http://cs231n.github.io/python-numpy-tutorial/
ROS
1) edX_DelftX-ROS1x_Hello (Real) World with ROS ? Robot Operating System
Online: https://courses.edx.org/courses/course-v1:DelftX+ROS1x+3T2018/course/
MATLAB
Help: https://au.mathworks.com/help/
Math: https://matlabacademy.mathworks.com/
code: http://cs103.net/
http://apmonitor.com/che263/index.php/Main/MatlabDynamicSim
Opimization: http://apmonitor.com/che263/index.php/Main/MatlabOptimization
Sphere in sphere contact force:
https://au.mathworks.com/matlabcentral/fileexchange/65316-designing-robot-manipulator-algorithms
Designing Robot Manipulator Algorithms
https://www.youtube.com/watch?v=5DnKot3mMSc
1) Industrial Controls Code Generation
https://au.mathworks.com/solutions/embedded-code-generation/industrial-controls.html
2) REU: Introduction to MATLAB
https://sites.wustl.edu/neumann/courses/previous-semesters/spring-2016/intro2matlab/
3) edX_PennX: ROBO4x_Robotics: Locomotion Engineering
Introduction to MATLAB: https://courses.edx.org/courses/course-v1:PennX+ROBO4x+3T2017/course/
1) edX_MITx-6.00.1x Introduction to Computer Science and Programming Using Python (python 3.6)
Online: https://courses.edx.org/courses/course-v1:MITx+6.00.1x+2T2018/course/
Ebook: [John_V._Guttag]_EdX course_Introduction_to_Computation_and_Python
2) edX_MITx: 6.00.2x Introduction to Computational Thinking and Data Science
https://courses.edx.org/courses/course-v1:MITx+6.00.2x+3T2017/courseware/
3) edX_HarvardX-PH526x_Using Python for Research
Online: https://courses.edx.org/courses/course-v1:HarvardX+PH526x+2T2018/course/
Library: https://docs.python.org/3/library/index.html
4) edX_UTArlingtonX: CSE1309x_Introduction to Programming Using Python
Online: https://courses.edx.org/courses/course-v1:UTArlingtonX+CSE1309x+1T2018/course/
5) Python Tutorial:
http://cs231n.github.io/python-numpy-tutorial/
ROS
1) edX_DelftX-ROS1x_Hello (Real) World with ROS ? Robot Operating System
Online: https://courses.edx.org/courses/course-v1:DelftX+ROS1x+3T2018/course/
MATLAB
Help: https://au.mathworks.com/help/
Math: https://matlabacademy.mathworks.com/
code: http://cs103.net/
http://apmonitor.com/che263/index.php/Main/MatlabDynamicSim
Opimization: http://apmonitor.com/che263/index.php/Main/MatlabOptimization
Sphere in sphere contact force:
https://au.mathworks.com/matlabcentral/fileexchange/65316-designing-robot-manipulator-algorithms
Designing Robot Manipulator Algorithms
https://www.youtube.com/watch?v=5DnKot3mMSc
1) Industrial Controls Code Generation
https://au.mathworks.com/solutions/embedded-code-generation/industrial-controls.html
2) REU: Introduction to MATLAB
https://sites.wustl.edu/neumann/courses/previous-semesters/spring-2016/intro2matlab/
3) edX_PennX: ROBO4x_Robotics: Locomotion Engineering
Introduction to MATLAB: https://courses.edx.org/courses/course-v1:PennX+ROBO4x+3T2017/course/
Thứ Sáu, 14 tháng 10, 2016
Programming Course
Open Courseware của
đại học MIT cung cấp 2100 khóa học về các chủ đề đa dạng, bao gồm cả kỹ thuật
điện và khoa học máy tính. Các nguồn tài nguyên miễn phí bao gồm sách giáo khoa
trực tuyến, kỳ thi, nội dung đa phương tiện, bài tập, các dự án và các ví dụ -
và tất cả các khóa học thực tế từ MIT trong thời gian gần đây.
Coursera ra mắt vào
tháng 4/2012 và đã mở rộng bao gồm trên 200 khóa học từ 33 trường đại học. Nếu
bạn chưa nghe nói về Coursera, đó là một startup về cơ bản cho phép bạn nhận
được một khóa học đại học trực tuyến được dạy bởi một giáo sư chính tại một
trong những trường đại học tốt nhất thế giới.
Udacity là một dịch vụ
miễn phí hiện nay với 14 lớp học ở đó, "Bạn học bằng cách giải quyết các
vấn đề khó khăn... với các giảng viên đại học nổi tiếng trên thế giới."
Các lớp học bao gồm các chủ đề liên quan đến lập trình, và đồng thời cũng tạo
cho bạn một nền tảng vững chắc về toán học, vật lý và hơn thế nữa, đó là
"Làm thế nào để khởi nghiệp".
Đó là trường dạy lập
trình của Google, một nguồn tài nguyên miễn phí, và rõ ràng là một trong những
nguồn tài nguyên tốt nhất nếu bạn quan tâm đến phát triển Android. Ở đây cũng
có một số chủ đề nâng cao bao gồm hệ thống phân tán và bảo mật web.
Mozilla biết rõ một
trang web như thế nào là tốt, và nó có một trung tâm dạy học miễn phí bao gồm
các tài liệu được viết bởi mạng lưới cộng tác viên và từ các trang web khác.
Trong trường hợp bạn
đang tự hỏi trang web này thuộc loại nào. Thì xin thưa rằng nó có rất nhiều
thông tin miễn phí về HTML5, bao gồm cả các bài viết blog, và các hướng dẫn
trực tuyến khác.
The Code Player là một
nơi tuyệt vời để học lập trình. Với rất nhiều tài nguyên phong phú dành cho
bạn. Bạn hãy tự khám phá nhé!
Codecademy trở nên nổi
tiếng vào đầu năm 2012 khi thị trưởng thành phố New York là Michael Bloomberg
đã nói rằng ông sẽ tự học lập trình trên trang này.
Một học viện khác,
Khan Academy cung cấp nhiều khóa học ngoài lập trình nếu bạn đang tìm kiếm
những kiến thức nhiều lĩnh vực khác - nhưng nếu bạn chỉ cần học lập trình thì
nó cũng có rất đầy đủ tài liệu dành cho bạn.
General Assembly có
một cách tiếp cận khác bằng cách cung cấp livestream (trả tiền) về các chủ đề
như "Rapid Prototyping: From Wireframes to HMTL" - bạn mua một
e-ticket trên Eventbrite, nhận được một mật khẩu, và xem các livestream khi nó
diễn ra.
PeepCode bao gồm rất
nhiều ngôn ngữ lập trình, nó cung cấp bản tải về (trả tiền), và các bài học
được thu lại.
Eloquent JavaScript
thực sự là một cuốn sách trực tuyến hoàn toàn miễn phí (hoặc bạn có thể mua
cuốn ebook này trên Amazon). Từ giới thiệu của tác giả: "JavaScript là
ngôn ngữ mà vào thời điểm này nó hầu như được sử dụng để làm tất cả mọi thứ
thông minh và tuyệt vời với các trang web trên World Wide Web."
Nếu học Ruby (đây là
Ruby, chứ không phải Ruby-on-Rails) là những gì bạn đang tìm kiếm, thì Ruby
Koans có một hướng dẫn miễn phí, hứa hẹn là "người bạn đồng hành” khi bạn
học Ruby.
Learn Code The Hard
Way bắt đầu bằng cuốn sách (miễn phí trực tuyến) Learn Python The Hard Way, và
sau này được nó bổ sung thêm cho các ngôn ngữ khác như Ruby và C.
Có rất nhiều thông tin
(dễ dàng tìm kiếm) trên StackOverflow có thể là nguồn giúp đỡ tuyệt vời dành
cho bạn. Ngoài ra, nếu bạn gặp phải vấn đề hóc búa trong lập trình thì cộng
đồng trên StackOverflow sẽ hỗ trợ rất tốt để tìm ra giải pháp cho vấn đề đó.
Coder Dojo là nơi
những bạn trẻ có thể học lập trình cùng nhau, vì vậy các bậc phụ huynh nên cho
con em mình tham gia học ở đây. Trang web này cũng có một nguồn tài liệu được
đăng tải bởi các instructor/ volunteer, nhưng còn tương đối hạn chế.
Ngoài rất nhiều
sách mà O'Reilly xuất bản, công ty này cũng cung cấp các khóa học trực tuyến
(trả tiền) trên nhiều ngôn ngữ lập trình khác nhau.
Một lần nữa, nếu bạn
là một phụ huynh, thì Scratch là một chương trình miễn phí có thể tải về, được
phát triển bởi MIT Media Lab, chương trình này giúp trẻ em xây dựng những câu
chuyện tương tác rất có ích trong phát triển trí tuệ.
Nếu bạn quan tâm đến
việc phát triển ứng dụng trên các sản phẩm của Apple, thì bạn nên tìm hiểu
trang web phát triển chính thức của Apple, xem nó với tất cả sự hăng say và học
hỏi từ nguồn tài nguyên có sẵn trực tuyến này.
Trang web dành cho các
nhà phát triển Android của Google, bao gồm các video từ Google I/O cũng như
phần best practices cho việc thiết kế các ứng dụng.
Mobiletuts + có các
bài viết blog miễn phí hướng dẫn về phát triển Android và iOS cũng như các công
nghệ di động khác, nó còn có nhiều dịch vụ cao cấp khác mà bạn phải trả tiền
thì mới có thể truy cập.
Udemy cung cấp các
khóa học (một số miễn phí, một số trả tiền) trên một phạm vi rộng của nhiều đối
tượng, và họ tự hào là có những giáo viên hướng dẫn nổi tiếng như Mark
Zuckerberg và Marissa Mayer.
Code School cung cấp
các khóa học và video theo kiểu thuê bao tháng, và cũng có một vài khóa học
miễn phí chất lượng rất tốt.
Bloc hứa hẹn sẽ dạy
cho bạn "trở thành một nhà phát triển web trong 12 tuần." Với một mức
phí hơi cao, nhưng Bloc sẽ ghép bạn với một lập trình viên mentor giúp đỡ bạn
trong suốt khóa học.
Treehouse đã có hơn
600 video mà bạn có thể xem với một khoản phí hàng tháng, nếu đăng ký là thuê
bao cao cấp thì sẽ được cung cấp nhiều tính năng hơn.
Programr có một cách
dạy lập trình hoàn toàn khác: bạn xây dựng các sản phẩm cho đến khi nó hoạt
động tốt mới thôi. Hãy đọc bài phỏng vấn của
chúng tôi với nhà sáng lập của Programr là Rajesh Moorjani để biết thêm chi
tiết nhé!
Processing là một nơi tuyệt vời khác để bạn có thể học lập
trình, với rất nhiều sách và video miễn phí. Bạn hãy tự khám phá trang web này
nhé!
From:
techmaster.vn
Thứ Ba, 8 tháng 12, 2015
How to Become a Computer Scientist
Being a Computer Scientist is not about programming; it is about the study of algorithms (a series of steps, understood by someone or something, in order to complete a task in a given number of steps). Many Computer Scientists don't program at all. Indeed, Edsger Dijkstra once said “Computer science is no more about computers than astronomy is about telescopes.”
Part 1 of 4: Starting out
- 1Become a lifelong learner. Being a computer scientist is all about learning to be a student, not just during training, but for all time throughout your career. Technology changes, new languages develop, new algorithms are devised: you need to be able to learn new things to stay current.
- 2Understand your future role. As a computer scientist, it is your job to solve problems. It is also about solving problems in a way which can leave everyone happy in the end. This means learning good communication skills as well as coding skills because you are more likely to match the needs of your client with the apt solution if you listen well and relay back your understandings clearly, as well as keep the client informed during the project.
Part 2 of 4: Writing pseudocode
- 1Start with pseudocode. Pseudocode isn't really a programming language, but it is a way to represent a program in a very English-like way. The most familiar algorithm to you is probably on your shampoo bottle: Lather, rinse, repeat. This is an algorithm. It is understandable by you (the "Computing Agent") and has a finite number of steps. Or does it ...
- 2Tweak the pseudocode. The shampoo example isn't a very good algorithm for two reasons: it doesn't have a condition to end on, and it doesn't really tell you what to repeat. Repeat lathering? Or just the rinsing. A better example would be "Step 1 - Lather. Step 2 - Rinse. Step 3 - Repeat steps 1 and 2(2 or 3 times for better results) and then finish(exit)." This is understandable by you, has an end condition (a finite number of steps), and is very explicit.
Part 3 of 4: Writing algorithms
- 1Try writing algorithms for all sorts of things. For example, how to get from one building to another on campus, or how to make a casserole. Soon, you'll be seeing algorithms all over the place!
- 2After you've learned how to write algorithms, programming should come naturally to you. Buy a book, and read it entirely to learn the language. Avoid online tutorials as they're often written by hobbyists, not professionals.
- However, feel free to look for help on the internet. Object-oriented languages like Java and C++ are "in" right now, but Procedural languages like C are easier to start with because they deal solely in algorithms.
- 3Programming is only the translation of pseudocode into a programming language. The more time before programming you spend planning in pseudocode, the less time you'll spend typing and scratching your head.
Part 4 of 4: Algorithm analysis
- 1Read up on RAM (the random access machine). One of the best places to start is by reading Steven Skiena's book The algorithm design manual.
- 2Learn about the limiting behavior of functions. Read up on Big O notation.
- 3Read about how worst case inputs can break your algorithm or cost you heavily in CPU processing time. It is important to learn what ways can efficiently counteract them.
- http://www.wikihow.com/
Đăng ký:
Bài đăng (Atom)