Hace 8 años | Por mr_b a newsroom.ucla.edu
Publicado hace 8 años por mr_b a newsroom.ucla.edu

Ingenieros de la UCLA han lanzado un nuevo y potente algoritmo de reconocimiento de imágenes bajo la fórmula del código abierto. El algoritmo, denominado Phase Stretch Transform, tiene como principal característica que mejora las imágenes, reconoce texturas y puede distinguir los bordes y otros detalles que aparecen en las imágenes. Incluso es capaz de mostrar detalles no visibles, como estructuras de diversos materiales. [Vía: http://www.microsiervos.com/archivo/tecnologia/avanzado-reconocimiento-imagenes-codigo-abierto.html ]

Comentarios

R

#1 #2
Solo comentar que el “reconocimiento de células cancerígenas” no es tan extraño, hay bastantes conjuntos de datos (datasets) para la detección de células cancerígenas para que los científicos prueben sus algoritmos (mirad un poco en kaggle o búsquedas en papers).

E

#7 Si, muchos estan patentados en EEUU (de hecho, incluido el de la propia noticia #13)... como ya he dicho, cualquier paper cientifico da el codigo del algoritmo (no he dicho que lo puedas usar para lo que te de la gana), aunque en la UE las patentes de software no son validas.

No necesitas ningun codigo para patentar un algoritmo (de hecho las patentes de software en EEUU son muy genericas), ni el dar el codigo en Github te impide que tengas que pagar si lo usas para fines comerciales. Lo dicho, ¿Es seria una noticia que lo unico que dice es que unos investigadores han publicado un algoritmo en Github?

#5 #16 A mi desde luego me parece un sensacionalismo de libro, "codigo abierto" pero patentado; los investigadores creen que sera util para muchas cosas, pero la noticia lo pone como si ya se estubiera usando (en el paper ni siquiera dan los resultados de los datasets de reconocimiento de celulas cancerigenas solo un ejemplo concreto, como dice #4 es un problema bastante estandar); la principal ventaja es la velocidad, pero no se dan comparativas. Yo tambien estoy hasta las narices de las noticias sobre Esperanza Aguirre, pero espero algo mas de calidad en cuanto a noticias cientificas se refiere...

E

#25 Por lo que yo he visto, no, los realza muchisimo y hace mas facil identificarlos, pero no los identifica completamente... identificar los bordes (en vision artificial) quiere decir sacar una imagen nueva donde solo queden los bordes del objeto (y lo mismo con las texturas). Pero por lo que he visto el algorithmo este te lo da todo mezclado, que ayuda muchisimo, pero no es lo mismo; no se si trasteandole los parametros se puede hacer que solo de uno u otro (yo no he visto la opcion).

De todas formas, sacar los bordes (o las texturas) de un objeto es un problema clasico de vision artificial y hay muchos algoritmos que ya lo hacen (incluso algunos clasicos que funcionan muy bien y muy rapido), por ejemplo uno de los primeros que se estudian es el algoritmo o filtro de Canny (1986)

, junto con el de Kalman (1960) y el de Sobel (1968).

La ventaja principal ventaja de este del propuesto en este articulo es su supuesta velocidad, de la que todavia no he podido ver ningun dato.

Detectar bordes en imagenes no es algo nuevo (como bien dice #4, ni siquiera en celulas cancerigenas, que es uno de los datasets estandar del area de computer vision), yo mismo tuve que hacerlo durante la carrera... otro dataset clasico es el de detectar cancer de mama (dado los datos de las celulas detectadas), muy tipico para aprender redes neuronales (sacan resultados por encima del 98% de precision). Lo importante es saber los resultados que saca en los dataset estandares del campo, comparadolo con los demas algoritmos actuales (es una mejora si acierta mas que los demas, o si acierta lo mismo pero lo hace mas rapido).

En ese sentido la noticia deja muchisimo que desear, ya que no da ningun dato util, lo unico que dice es que es "open sorce" (cuando en realidad esta patentado), que detecta bordes y texturas (como si eso fuera algo nuevo, cuando se viene haciendo desde los 70s) y que es potentisimo (pero sin compararlo con ningun otro en data sets estandares).

Acido

#18
Algunos comentarios a lo que dijiste:

1. Efectivamente sirve para transformar una imagen en otra, típicamente una imagen 'física' como una fotografía, típicamente con colores o diferentes tonos de grises, en una imagen típicamente compuesta de líneas, que serían los "bordes" en los que habría un cambio de color o de tono de gris. El resultado sería una imagen de líneas como las que haría un dibujante o como los dibujos de líneas que se dan a los niños para colorear, donde cada niño rellena el espacio delimitado por esas líneas o bordes con un color. Luego ya el para qué se pueden usar esas líneas pues lógicamente puede ser para muchas cosas: para reconocimiento de formas (OCR, caras, iris, objetos, señales de tráfico...), para hacer un filtro 'chuli' de Instagram / Photoshop, ... Y en el caso de coches autónomos, supongo que viene bien para saber las líneas de la carretera (más que para 'reconocer' que es una línea o no, quizá para saber dónde está situada la línea o incluso la situación de otros vehículos o peatones: que no tienes que reconocer si es un niño o perro o bicicleta sino saber que hay un objeto, con bordes, que no es carretera y que no lo debes atropellar). Nota: ojo, los coches autónomos no sólo usan imágenes sino también señales de RADAR, LIDAR, etc. para tener con todo ello un conocimiento bastante completo y rápido del entorno por el que se mueven.

Existen otros "filtros" o transformaciones de imágenes para detectar bordes, como el filtro/operador de Sobel (básicamente una aproximación del gradiente) o el algoritmo de Canny (que se resumiría como un suavizado previo + aproximación de gradiente), este último mucho más famoso que el PST del artículo por lo que he visto. ( de esto habla también #27 )

Aunque el nombre a mi me confundió porque la palabra "transform" se suele traducir en español como "transformada" y la transformada suele ser a otro "dominio" / "espacio vectorial" diferente. Por ejemplo, la transformada de Fourier o de Laplace... la "señal" original está en el dominio del tiempo o del espacio y la transformada es en el "dominio" de la frecuencia (ciclos por segundo, ciclos por metro, etc). Viene a ser un cambio de base ortonormal... Pero, vamos, sin enrollarme más, lo que quería decir es que cuando se habla de "transform" o "transformada" el resultado es en un espacio diferente, que si partes de una fotografía (que es la proyección de objetos en un plano, con significado espacial: derecha, izquierda, arriba, abajo) la transformada no suele tener un significado espacial (la Fourier serían amplitudes a fases, es decir, un significado en el campo de las frecuencias).

2.
Desde el momento en el que publican el código fuente (en este caso es "fuente" y también "ejecutable", porque es un lenguaje interpretado, no compilado) creo que puede entrar un poco en la categoría de "código abierto" ¿no?. Vale, ya se que OpenSource es una filosofía o movimiento cultural que va más allá de meramente enseñar el código fuente, hasta el punto de ser prácticamente equivalente a Software Libre / Free Software... pero creo que también es cierto que el término OpenSource hace énfasis más en la publicación del código que en otros aspectos. Vamos, que aunque estrictamente no cumplan todas las condiciones para poder llamarlo Open-Source pues en lo fundamental sí se acerca bastante... Yo diría que en ciertas condiciones sí mantiene total libertad: mientras no pretendas enriquecerte con ello. Es decir, que no sólo puedes ver el código (estudiarlo), también puedes ejecutarlo, modificarlo, distribuirlo... lo cual puede ser muy útil. Otras licencias consideradas libres también impiden en la práctica obtener beneficio, porque vender el producto original no es muy realista si el original está disponible gratuitamente y vender una modificación tampoco lo veo muy realista si estás obligado a distribuir los fuentes de forma gratuita con la misma licencia que incluye el uso gratuito.

Por otro lado, aunque el código es para Matlab, que es propietario, también son ciertas otras cosas que harían que esto no fuese problema. Existe un software libre llamado Octave que es compatible con Matlab. Y, además, el Matlab tiene versiones de prueba gratuitas.

3.
Efectivamente el código es muy simple, hasta el punto de que la función PST en sí, con comentarios son 131 líneas y sin comentarios ni líneas en blanco se queda en ¡37 líneas de código!!. Y no son líneas gigantescas, son de unos 40 caracteres de media, total unos 1500 caracteres.

https://github.com/JalaliLabUCLA/Image-feature-detection-using-Phase-Stretch-Transform/blob/master/PST.m

Y aparte de la función PST en sí no hay mucho más, hay otra función llamada "imoverlay" que al parecer es para visualizar mejor el resultado (con colores y eso), que tampoco es mucho, otras 20 líneas.

A eso se le añade la típica imagen de Lena, la chica de Playboy y un ejemplo de uso.

Se puede ver todo aquí:
https://github.com/JalaliLabUCLA/Image-feature-detection-using-Phase-Stretch-Transform

Y, sí, en el código puede verse que usa FFT y también la transformada inversa IFFT (cuyo algoritmo es casi idéntico al de FFT excepto cambios de signo o conjugados complejos y quizá de escala).

Lo de los años de investigación estoy totalmente de acuerdo, que esto no creo que sean muchos años de investigación. Pero no lo digo por el hecho de ser pocas líneas de código (por ejemplo, la famosa ecuación de Einstein es E=m*c^2 que son sólo 7 caracteres y eso no quita que tardase siglos en descubrirse y en desarrollar toda la teoría que lleva detrás) sino por el hecho de que el uso de FFT me parece algo habitual en tratamiento de imágenes y la idea de asociar mentalmente un cambio brusco de color a las altas frecuencias tampoco me parece una gran genialidad... hasta el punto que admitir que esto se patente me parece incluso vergonzoso. Ya de por sí admitir las patentes de software no me parece muy bien, o al menos discutible, pero admitirlo en algo bastante evidente me parece mucho más grave.

D

#5 Estoy de acuerdo en que se genera ese efecto que comentas, por simplificar un poco que hay modas de noticias, sin embargo no me parece mal que se haga seguimiento a ciertas noticias, especialmente a largo plazo porque me parece que hace mucha falta de eso en el periodismo actual.

Eso sí, también estoy de acuerdo que esta noticia no aporta mucho más que simplemente darnos la oportunidad de hablar de este tema en los comentarios. Y eso es otro aspecto de meneame que tampoco me gusta demasiado.

AaLiYaH

#2 ¿Sabes que muchos de esos algoritmos que cualquiera puede implementar tienen patentes y para su uso comercial tienes que pagar?

De nada.

D

#7 Sin querer quitarte razón, si me dices que "muchos" tienen patentes implícitamente me estás diciendo que por lo menos hay algunos que no, o incluso también "muchos".

De todas formas código abierto no significa que tu puedas coger y utilizarlo sin violar alguna patente, que es lo que de hecho comenta #13.

U

#2 Algo has malinterpretado, porque el algoritmo sí reconoce texturas y distingue bordes:

"The algorithm performs a mathematical operation that identifies objects’ edges and then detects and extracts their features. It also can enhance images and recognize objects’ textures."

Es un algoritmo en sí, por lo que dice el artículo.

Y respecto a lo de Open Source, como ya apunta #7, el que un algoritmo esté descrito en un documento accesible no quiere decir que su uso sea libre. Así es el mundo de las patentes, y peor que podría ser si se hace caso a ciertas opiniones.

D

#25 Me parece que es un matiz de a qué quieras llamar "reconocer" (algo que en muchos casos puede ser bastante difuso ), y ese sentido se refiere a que solo es un preprocesado de la imagen, quién vaya a reconocer esas texturas y bordes será otro algoritmo.

D

La licencia bajo la que está no es de código abierto:

This function is provided for research purposes only. A license must be obtained from the University of California, Los Angeles for any commercial applications. The software is protected under a US patent.

Vamos que solo lo puedes usar para investigación, para cualquier otra cosa está limitado.

f

Venía a decir lo que ponen #13 y #18, vaya puta mierda.

visualito

De las noticias que merecen portada y buenos comentarios.

Una de las aplicaciones que más interesan es la de la detección de células cancerigenas en la sangre.

M

Vaya M (Mayúscula) de titular (y casi de noticia).

1. No es un algoritmo de reconocimiento:
-- Es un algoritmo de transformación de imágenes que facilita la detección de bordes, objetos y formas. Puede ser útil para algoritmos de reconocimiento o de muchas otras cosas (por ejemplo coches autónomos).
2. No es openSource (ni código abierto)
-- El código publicado, es un trocito de código Matlab (herramienta propietaria de código cerrado).
-- El uso del algoritmo (aunque lo reescribas en otro lenguaje) está reservado y patentado y únicamente es libre para investigación.
3. El algoritmo es realmente bastante simple y usa funciones de cálculo muy rápido y muy optimizadas en muchos sistemas (transformada rápida de fourier básicamente). No dudo que haya buena ciencia detrás... pero no parecen años de investigación.
++ Que sea simple y rápido es muy bueno y puede ampliar sus aplicaciones... esto salva la noticia, que no el titular.

D

#18 Generalmente en términos de méritos a un investigador le interesa que la patente esté en explotación, por lo que las patentes en propiedad de universidades suelen tener licencias mucho más baratas que las que están en manos de empresas, que buscan dinero, no productividad científica.

Mariele

¿Es una broma todo esto? El resultado que se ve en las imágenes parece un simple filtro paso-alto lineal de toda la vida que viene incluso en el Paint Shop Pro 5 de 1998, por decir algo. ¿Cómo ha llegado a portada esto?

Un tal Uqam ha ido bombardeando la Wikipedia con referencias a este método.

x

cuidado, que el algoritmo esta patentado
'The algorithm is patented, so for educational purposes you can use the algorithm but to use it in a commercial application, you need to obtain license from UCLA.'

Xtrem3

Pues me podría venir bien husmear un poco para mi TFG. A favoritos

DonaldTrump

Malditos EEUU, imperialistas, siervos del capital y de las grandes corporaciones!! (y resto de tópicos que se leen a diario en Menéame)

m

Abierto pero no libre, así que por mi algo ignorable.

PS: creo que con GIMP puedo hacer lo mismo con un algoritmo de detección de bordes y aplicando el filtro retinex luego.

C

#6 Los algoritmos de inteligencia artificial corren el enorme riesgo que terminen siendo patentados todos. Luego el hecho que no sea libre pero si se pueda mirar de que trata nos permitirá generar nuevos algoritmos mejores, si lo ignoramos estamos perdiendo la guerra contra las patentes y la libertad.

s

Hablando de estos algoritmos...

Alguien conoce alguna buena librería opensource de reconocimiento de imágenes que esté portada a (o usada en) varios lenguajes?

s

#19 Muchas gracias

D

#14 mira a ver si te vale este listado:



el blog tb es muy bueno

B

Celebrar que se publiquen utiles y herramientas soft que motive a la gente con ideas a implementar, mejorar, y acoplar a sus necesidades - como punto de partida- para solventar su emprendimientos. Mas tecnología y menos chorradas.

solrac79

Esto ya se cuenta en el libro Cicatriz