¿Se puede usar Matlab Computer vision para productos a gran escala?

Versión TLDR : Lata ? Debería ? NO

Descripción

Debido a la simplicidad de MATLAB, uno podría verse tentado, pero personalmente recomendaría encarecidamente no usarlo para productos a gran escala, especialmente en visión por computadora. Y aquí está la razón por la cual:

  • Propietario : MATLAB es un software propietario y, dependiendo de las características que pueda usar, puede terminar pagando una gran cantidad de dinero o terminar en el otro extremo de una demanda (según el nivel de ignorancia). Las bibliotecas como OpenCV, por otro lado, son de uso gratuito.
  • Personalización : MATLAB le impide modificar su código fuente, a diferencia de otras bibliotecas de código abierto. Este es un gran inconveniente de MATLAB. Aunque proporcionan una funcionalidad realmente sorprendente en su caja de herramientas de Adquisición de datos, Análisis de datos, Visión por computadora, Procesamiento de imágenes, sin embargo, dependiendo de cuál sea su caso de uso, puede no ser suficiente y puede requerir alguna otra variante o función completamente diferente a la los disponibles por MATLAB. Otros lenguajes y bibliotecas de código abierto como PCL, OpenCV cuando se usan junto con Python y C ++ le darán el mejor escenario aquí.
  • Optimizaciones : Esto es algo que deberá considerar especialmente al trabajar en proyectos de visión por computadora a gran escala. Aunque MATLAB tiene su parte de las herramientas de aceleración CUDA y OpenCL, no son nada en comparación con lo que puede hacer con el código fuente sin procesar disponible para usted de las principales bibliotecas de código abierto cuando se usa junto con Python y C ++.
    • La mejor parte es que puede distribuir los módulos de gran cantidad de recursos a C ++ mientras utiliza los marcos CUDA u OpenCL (según su preferencia), y luego automatiza todo el flujo de trabajo utilizando Python. Simplemente no puede alcanzar este nivel de sofisticación tan fácilmente con MATLAB . Período
    • Cuando profundice en el repositorio de MATLAB en su sistema, encontrará que utiliza las mismas bibliotecas de C ++ como Boost, Eigen, Flann que requieren OpenCV y PCL (pueden requerir Qt, VTK, etc.) al compilarlas desde la fuente, por lo que no debería tener quejas al respecto.
  • Compatibilidad : esta es una característica importante a tener en cuenta. Python y C ++ son compatibles con casi todas las bibliotecas, marcos, servicios de alojamiento, hardware, lenguaje y procesos de compilación más importantes. MATLAB viene con su propio ecosistema. Aunque puede generar archivos .mex y .c de su código MATLAB, ese es el final. Este es un problema importante junto con la personalización y las optimizaciones para considerar la escalabilidad.

Usted mencionó Java explícitamente y encontrará que todo este ecosistema de código abierto que acabo de describir es compatible con Java sin problemas. Pero la razón más importante de todas es:

  • MATLAB se usa para la creación de prototipos, no para la producción . Su requisito establece explícitamente la arquitectura y el código de calidad de producción, y por contra intuitivo que parezca, pero el código prototipo y el código de calidad de producción son muy diferentes.

En cuanto al volumen de datos a procesar, realmente no importa qué arquitectura use, ya sea basada en MATLAB o Python / C ++ / Java utilizando OpenCV y PCL, todos ellos tienen herramientas de funcionalidad incorporadas para ayudar a codificar rutinas para automatice el flujo de trabajo para que pueda concentrarse en sus algoritmos principales.

Espero que esto ayude 🙂

¡Todo lo mejor para tu proyecto!

La respuesta depende de qué procesamiento desea hacer en las imágenes y cuál es el tamaño del equipo dedicado para realizar esa función. Porque entiendo este hecho, no se puede hacer todo automáticamente, en algún momento se requiere intervención humana, tanto en MATLAB CV como en OpenCV.

OpenCV es una buena biblioteca para Java, pero tiene serias limitaciones en comparación con MATLAB CV, que es muy amplia y extensa. Entonces, si el procesamiento que se realizará en 1 millón de imágenes es de baja naturaleza, entonces use OpenCV, ya que ahorraría tiempo y habilidades a ambos. (En serio, MATLAB es duro )

Pero, si desea hacer un procesamiento de alta gama y que también capas de procesamiento de alta gama sobre imágenes, mi elección sería MATLAB CV. El único inconveniente es la velocidad, por eso preferiría usar MATLAB en un entorno informático paralelo, pero definitivamente eso costaría mucho. (La licencia de usuario único del servidor MATLAB básico, sin ninguna caja de herramientas, hace 2 años, costaba más de 80K, y la caja de herramientas CV es uno de los productos costosos en el mercado de MATLAB).

Además, si elige usar MATLAB CV, mi sugerencia sería usar MS SQL como DB o superior.

More Interesting

¿Cuál es el estado del arte en los sistemas de recomendación?

¿La Facultad de Ingeniería Poonjar está produciendo ingenieros informáticos de clase mundial?

¿Representando materiales de mundos 3D utilizando datos químicos?

¿Cuáles son los documentos más influyentes en el mundo de SDN (Software Defined Networking)?

¿Cuáles son algunos buenos proyectos importantes de ML o AI?

En el problema del embalaje del contenedor (BPP), ¿por qué el primer ajuste decreciente (FFD) es más eficiente que el primer ajuste creciente (FFI)?

¿Cuáles son las principales y más prometedoras áreas de investigación en CS en este momento?

¿Cuál es la investigación de HCI que fue hace 10 años pero que ya no es la tendencia?

¿Quiénes son los mejores académicos y practicantes del aprendizaje automático?

¿Es necesario asistir a Stuyvesant para tener éxito en los concursos de investigación científica?

¿Cuáles son los temas más candentes en matemáticas aplicadas?

¿Por qué casi todos los trabajos de investigación en informática escritos por profesores universitarios y estudiantes de doctorado tienen muy poco que ver con escribir código? La mayoría de los documentos que he leído son simplemente inútiles cuando se trata de mejorar mis habilidades de programación.

¿Cuáles son las ventajas y desventajas de los lenguajes de programación visual en comparación con los lenguajes de programación normales?

Nanotecnología: ¿Sería posible en el futuro transferir el olor de forma remota? ¿Cuál es el estado actual de la investigación en curso en esa área?

Predicción de tráfico sobre hosts o nodos en la nube: ¿es un tema de tendencia o un área de investigación en la computación en la nube?