Mi campo de interés para el doctorado es la visión por computadora, el aprendizaje automático y el procesamiento de imágenes. ¿Qué recursos hay para principiantes con respecto a estos temas? Yo sé Java; ¿Debo aprender otros idiomas primero o puedo comenzar los cursos de inmediato?

Como alguien que ha incursionado en los tres, aquí están mis dos centavos:

El aprendizaje automático , la visión por computadora y el procesamiento de imágenes , aunque se superponen en partes, son campos bastante distintos a la hora de realizar el tipo de investigación estrecha que se espera a nivel de doctorado. Puede terminar definiendo su tesis en la intersección de dos o incluso los tres, pero es bueno ser consciente de sus diferencias desde el principio. Dicho esto, es una buena señal de que mantienes tus opciones abiertas al explorar las tres.

Ahora, en términos de elegir material educativo para comenzar, sería muy cuidadoso aquí porque hay una gran cantidad de recursos, la mayoría de los cuales no valen su tiempo (la ley de Sturgeon), o son demasiado avanzados y, por lo tanto, no son accesibles para Un principiante. Lo más importante para alguien como usted que está al comienzo del camino, es invertir mucho en aprender los fundamentos lo mejor que puedan. Confía en mí, esta inversión dará sus frutos en cada paso del camino (en la publicación de documentos, redacción de tesis, conseguir trabajos después de la graduación, etc.). Entonces, ¿cuáles son estos fundamentos en el contexto de la inclinación de la máquina, el procesamiento de imágenes y la visión por computadora?

En primer lugar, las imágenes y los videos son matrices ( ¡alerta de spoiler! ), Por lo que querrá repasar sus habilidades de álgebra lineal (por ejemplo, normas vectoriales y matriciales, descomposición de valores propios, descomposición de valores singulares, etc.). Otro tema imprescindible es el cálculo de las funciones multivariadas (p. Ej., Gradiente, arpillera, regla de cadena, etc.). Probablemente necesitará probabilidad (juego de palabras) en el camino, así que agregue probabilidad / estadísticas a la mezcla. La optimización matemática es otra herramienta importante que desea tener en su mochila. Y por último pero no menos importante es la codificación por computadora . Aquí, sus opciones son Matlab y Python (siendo C ++ un lenguaje opcional altamente recomendado). Notarás que en la academia muchos todavía prefieren / confían en Matlab (que es una herramienta conveniente para la creación rápida de prototipos), mientras que esta preferencia en la industria se inclina fuertemente hacia Python (para la creación de prototipos) y C ++ (para la producción en masa). De todos modos, necesitará tener fluidez en al menos uno de estos idiomas, que no debería ser difícil de aprender, dado que ya conoce Java . También hay una gran cantidad de bibliotecas que usará en el futuro (por ejemplo, OpenCV), pero no se preocupe por ellas en este momento. Nuevamente, su enfoque por ahora debe estar en aprender los fundamentos.

Aquí están mis sugerencias en términos de libros de texto para estudiar y MOOC para tomar:

Este primero es uno de mis favoritos personales:
Las transformadas de Fourier y sus aplicaciones Por Brad Osgood.
La transformación de Fourier es uno de esos fundamentos matemáticos en el procesamiento de señales / imágenes que realmente quieres dominar.

Aquí hay otro, centrado exclusivamente en DSP:
Procesamiento de señales de tiempo discreto por Alan Oppenheim y Tom Baran.

Para un libro de texto sobre procesamiento de imágenes, comenzaría con:
Procesamiento digital de imágenes por Rafael González y Richard Woods.

También para un principiante en el aprendizaje automático, recomendaría MOOC de Andrew Ng
así como el siguiente libro de texto:
Aprendizaje automático refinado por Jeremy Watt, Reza Borhani y Aggelos Katsaggelos. Divulgación completa: soy coautor de este libro, por lo que puedo estar sesgado aquí, pero creo que este es actualmente uno de los mejores textos, especialmente para un principiante en el tema.

El reconocimiento de patrones y el aprendizaje automático de Christopher Bishop también es clásico (con una perspectiva bayesiana), pero puede ser una lectura difícil para un principiante.

También recomiendo consultar el libro de texto Computer Vision de Simon Prince.

Hice esta lista en la parte superior de mi cabeza, por lo que definitivamente estoy pasando por alto algunos títulos dignos aquí, pero los encontrará usted mismo mientras sumerge el dedo del pie en el agua.

¡Buena suerte!

Tenía intereses similares cuando me embarqué en mi viaje de doctorado. Estos son mis pensamientos …

  1. No se concentre solo en su área de investigación.
    Lo más probable es que dentro de cinco años trabajes en algo muy interdisciplinario. Lo más probable es que al construir un sistema real de ciencia de datos, necesite saber tanto sobre algoritmos y estructuras de datos e ingeniería de software como sobre ML.
  2. Lea el trabajo seminal y las ideas centrales antes de especializarse.
    Elementos de aprendizaje estadístico
    Aprendizaje profundo
    Optimización convexa en línea
  3. Sigue escribiendo y desafiándote presentando tu aprendizaje.
    La mejor manera de aprender es someterte a la humillación de ser llamado al respecto.

Tal vez el siguiente video pueda ayudarlo a aprender un poco sobre el aprendizaje automático necesario en Trading

Gracias por el A2A.

Solo soy un estudiante universitario, pero tengo experiencia en investigación sobre estos temas y sigo activamente a la comunidad, también publiqué un documento de taller, así que creo que puedo responder esta pregunta.

En primer lugar, la mayoría de la investigación en curso sobre estos temas se basa en gran medida en enfoques de aprendizaje profundo (DL). Así que supongo que probablemente también investigará sobre el aprendizaje profundo. Mi sugerencia es tomar cursos y aprender idiomas simultáneamente. Mis sugerencias mixtas están a continuación;

Creo que, en primer lugar, debe aprender temas fundamentales sobre el aprendizaje automático (ML) y la visión por computadora (CV). Para el aprendizaje automático, el curso Coursera del Prof. Andrew NG es una forma muy simple y elegante de aprender los conceptos básicos del aprendizaje automático. El curso tiene una tarea básica sobre algoritmos de aprendizaje automático. Cuando tomé el curso no sabía nada sobre ML y Matlab / Octave, pero son muy fáciles de implementar y muy educados. Entonces, al tomar este curso, obtendrá conocimientos sobre ML y algunas habilidades básicas de programación sobre Matlab.

Para la introducción al CV, sugiero las conferencias en video del profesor Mubarak Shah en YouTube, ya que sus conferencias son muy fáciles de seguir. No hay ninguna tarea oficial sobre conferencias, pero puede intentar implementar algoritmos con Matlab. (Hay un breve tutorial sobre Matlab en las conferencias.) Finalmente, después de terminar esas dos conferencias, mi curso favorito se acerca. cs231n. Se trata de aprendizaje profundo para la visión por computadora y enseñado por Andrej Karpathy, quien es un recién graduado de doctorado estrella de rock de Stanford y el actual estudiante de doctorado Justin Johnson. El curso tiene tareas de Python. Al hacer la asignación, puedes aprender Python y CNN fácilmente al mismo tiempo.

Generalmente en el entorno de investigación, el idioma o la biblioteca no son importantes. Lo importante es qué tan rápido puede probar sus ideas sobre un problema específico. En el dominio ML y CV, generalmente las personas usan los lenguajes Matlab, Python y C ++. Porque hay muy buenas bibliotecas implementadas con estos idiomas. En la investigación, usaría otro algoritmo en su proyecto, pero implementar un algoritmo antiguo nuevamente lleva mucho tiempo, por lo que usará las bibliotecas existentes para este propósito. Algunas bibliotecas excelentes sobre ML y CV son Vlfeat (Matlab), Caffe (C ++ / Python), Tensorflow (C ++ / Python), Sklearn (Python), OpenCV (C ++ / Python).

El libro sobre Visión por computadora de Richard Szeliski (Visión por computadora: algoritmos y aplicaciones) es una gran recomendación para obtener una visión general del campo. Proporciona una buena introducción a los fundamentos matemáticos y también se centra en el procesamiento de imágenes. Cada capítulo te deja con ejemplos y ejercicios. Realmente recomiendo que trabajes con al menos algunos de ellos para experimentar la relevancia de los temas.

Sin embargo, para esto definitivamente no propondría usar Java. Intente acostumbrarse a Python (+ Numpy & Scipy) y / o MATLAB. Además, no vendrá a aprender C ++, ya que eventualmente necesitará su rendimiento para ejecutar los algoritmos. Dijiste que conoces Java, por lo que no tendrás muchos problemas con C ++. ¡Solo asegúrate de comprender el concepto de punteros y cómo cuidar tu memoria!

Un último consejo: trabaje con los tutoriales de OpenCV (Tutoriales de OpenCV). OpenCV es una gran biblioteca y trabajar con ejemplos no solo mejorará sus habilidades de codificación, ¡sino también su comprensión del tema!

También estoy en el proceso de postulación a programas de doctorado, ¡así que buena suerte en sus aplicaciones!

Aquí hay algo para pensar y discutir con alguien que sea su mentor: ¿es usted realmente un principiante en estos temas o tal vez hay algunos problemas de confianza? Si realmente eres un principiante, ¿de dónde viene la idea de que sería una buena inversión de tu tiempo pasar años investigándolos? Puede haber problemas para predecir sus niveles de interés y capacidad en estos temas si no tiene mucha experiencia previa. Pero los extraños en Internet como yo no te conocen realmente, así que es algo de lo que hablar con cualquiera en la academia con la que seas amigable.