Jump to: navigation, search

Workshop:Memory Learning

Memory learning-cover.jpg

Description

Mise en relation d'une base de données d'archives image avec des algorithmes de traitement (machine learning). L'idée est de mettre en lumière la compréhension qu'une machine peut avoir d'une image.

La recherche constiste à produire de nouvelles images et des informations textuelles nouvelles en utilisant des algorithmes de reconnaissance d'objets et de segmentation d'images.

Le session de travail se terminera par la production d'une série de documents mis en page automatiquement.

Les tâches seront distribuées aux étudiants en fonction de leur section:

  • AN: traitement des données, adaptation du script de génération et des algorithmes de traitement
  • CV: création d'un fichier template dans indesign et importation des données


Il est évident que ces tâches seront basées sur une collaboration active et constante entre les étudiants, qui devront prendre en compte les possibilités, spécialités et limitations des outils.

Horaire

Semaine blanche, du 24 au 26/10/2016

Workflow

File:Memory learning workflow schema.pdf

Memory learning workflow schema.gif

Images

Résultats

Benoît

version pdf

Rebecca

version pdf

Calcul et préparation du ColorMap

Why not tractors01.PNG

Voilà des photos de croquis

Croquis francois.jpg

Croquis francois 2.jpg

Promo-nl-visual.png

Je vous l'avais dit.

couleur moyenne

Croquis A-S memoryL.jpg Croquis A-S memoryL2.jpg Croquis A-S memoryL3.jpg Mise en page Memory L 1974 2.png Mise en page Memory L 1974.png Mise en page Memory L 1974 1.png

La propagande inversée

Travail réalisé sur base d'affiches de propagande anti-guerre. Le but est de revisiter le message en changeant la couleur dominante "le rouge" en "vert" donnant un tout autre sens iconographique.



Couverture.png Pages1et2.png Pages3et4.png Pages5et6.png Page capture.png Dernière De Couverture.png

Travail réaliser par Nicolle et Audrey

Déformation

Réalisé par Aurélie

voici des exemples:

PACIFISME-009 denoise1.jpgPACIFISME-008 skeletonize.jpg

PACIFISME-011' label.jpgPACIFISME-010 gradient1.jpgPACIFISME-002 denoise2.jpg

Installation

Windows

Mise en place de l'environnement de travail.

Powershell

Si vous utilisez windows 8.1, vous aurez certainement un problème d'affichage au lancement du powershell. Pour résoudre le bug d'affichage, lancer powershell en mode administrateur (cliquer droit sur le raccourci). Une fois lancé, cliequer droit sur la barre de titre, ouvrir les propriétés et modifier la font utilisée. Seule la consolas semble correcte.

Une fois fait, fermé powershell et relancez-le normalement.

Fix trouvé sur Powershell font wrong size on Windows 8.1

Bitbucket

Les sources du projets ainsi que les installer des programmes à installer se trouvent sur le dépôt bitbucket.

Pour récupérer l'ensemble des fichiers, aller sur la page de téléchargement et cliquer sur Download repository.

Une fois télécharger, dézipper dans un dossier sur le bureau ou dans les documents. Dans le suite des explications, le dossier contenant les sources sera appelé REPO.

Python

Ces explications se basent sur ce tutoriel: http://docs.python-guide.org/en/latest/starting/install/win/

  • Installer python depuis REPO\install\python-2.7.10.msi.
  • Laisser les paramètres par défaut et finaliser l'installation.
  • Ajouter python dans les variables d'environnement (ce qui permettra de taper python dans le terminal sans chaque fois devoir le préfixer de C:\Python27\) - voir stackoverflow pour le post complet.
    • Right click on "My computer"
    • Click "Properties"
    • Click "Advanced system settings" in the side panel
    • Click "Environment Variables"
    • Click the "New" below system variables
    • in name enter python
    • in value enter the path to your python.exe and extra tools: [ C:\Python27\;C:\Python27\Scripts\; ] (screenshots are not accurate)


Adding-python-path-on-windows-001.jpg

    • now edit the Path variable (in the system part) and add %python%; to the end of what's already there


Adding-python-path-on-windows-002.jpg

Une fois fait, ouvrir un terminal

  • touche windows
  • taper powershell
  • touche enter
  • une fenêtre comme celle-ci devrait apparaitre:


Windows10-powershell.jpg

  • taper python et puis touche enter, si le texte suivant s'affiche, python est correctement installé


Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

PIP

PIP est un gestionnaire d'extension pour python. Il permet le déploiement rapide de librairies. Nous en aurons besoin plus tard, lors de l'installation de scikit.

Pour l'installer, dans le powershell, rentrer dans le dossier REPO\install\:

  • taper cd C:\Users\[votre nom d'utilisateur]\[le dossier REPO]\install\ puis touche enter
  • taper python .\get-pip.py puis touche enter.
  • redémarrer le powershell
  • taper pip. Si le texte suivant s'affiche, pip est correctement installé:


Usage:
  pip <command> [options]
...

PIL

Le script utilise la librairie PIL (Python Imaging Library).

  • Installer depuis REPO\install\PIL-1.1.7.win32-py2.7.exe.
  • Lancer le programme et suivre les instructions.

Pytesseract

Pytesseract utilise Tesseract, une libraire de reconnaissance de texte (OCR).

Il faut donc premièrement installer Tesseract-OCR:

  • Lancer REPO\install\tesseract-ocr-setup-3.02.02.exe.
  • Suivre les instructions. Le programme devrait s'installer dans le dossier C:\Program Files (x86)\Tesseract-OCR.
  • L'installeur ajoute tesseract dans les variables d'environnement.
  • Redémarrer powershell si vous l'avez laisser ouvert.
  • Taper tesseract et la touche enter.
  • Si le texte suivant s'affiche, tesseract est correctement installé.


Usage:C:\Program Files (x86)\Tesseract-OCR\tesseract.exe imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
...
  • Dans le powershell, rentrer dans le dossier REPO\install\pytesseract-0.1.6:
    • taper cd C:\Users\[votre nom d'utilisateur]\[le dossier REPO]\install\pytesseract-0.1.6 puis touche enter
    • taper python .\setup.py build puis touche enter. Si le texte suivant s'affiche, la commande s'est effectuée avec succès:


running build
running build_py
creating build
creating build\lib
creating build\lib\pytesseract
copying src\pytesseract.py -> build\lib\pytesseract
copying src\__init__.py -> build\lib\pytesseract
copying src\test.png -> build\lib\pytesseract
copying src\test-european.jpg -> build\lib\pytesseract
    • taper python .\setup.py install puis touche enter. Si le texte se termine par ces infos, la commande s'est effectuée avec succès:


Installing pytesseract-script.py script to C:\Python27\Scripts
Installing pytesseract.exe script to C:\Python27\Scripts
Installing pytesseract.exe.manifest script to C:\Python27\Scripts

Installed c:\python27\lib\site-packages\pytesseract-0.1.6-py2.7.egg
Processing dependencies for pytesseract==0.1.6
Finished processing dependencies for pytesseract==0.1.6

Une fois l'installation terminée,

  • Dans le powershell, rentrer dans le dossier REPO\test\tesseract
  • Taper python .\test.py
  • Trois images sont analysées par le script: test.png, metropolis.jpg et arton1241.jpg. La sortie texte devrait être:



***** test.png *****
This is a lot of 12 point text to test the
ocr code and see if it works on all types
of file format.

The quick brown dog jumped over the
lazy fox. The quick brown dog jumped
over the lazy fox. The quick brown dog
jumped over the lazy fox. The quick
brown dog jumped over the lazy fox.

***** metropolis.png *****
SPECIAL IEIEKP EDITION

CLAS

GIORGIO MORODER

PRESENTS

IN I984 ACADEMY AWARDÔÇØ WINNER GIORGIO MORODER INTRODUCED
FRITZ LANGÔÇÖS CLASSIC VISION OF THE FUTURE TO A NEW GENERATION

***** arton1241.jpg *****
avec la

FEIIEHHIIIN ANARBHISIE

CONTRE ÔÇ£ÔÇ£



Bunlre Ia guerre snus tnutes 525 forms
Pour une Soci├®t├® sans ulasse

Eunlre les classes dirigeantes suns tons
Ieurs aspects

Pour un Snnialisme Egalitaire

ni maitre



Si vous ├®tes d├®cid├®s ├® poursuivre la lune r├®voluiionnaire

|.E BHIIUPE LIBEBTAIHE IJJIJISE MICHEL

/hlrassc:-Ivlms : 110, PASSAGE RAMEY, PARIS 18' - TEL : ORN 57-89
  • A la fin du script, 3 nouvelles images sont apparues dans le dossier: test-BW.png, metropolis-BW.jpg et arton1241-BW.jpg qui montrent les filtres appliqués sur l'image avant traitement.

Scikit-image

Scikit-image est une librairie généraliste de traitement d'images. Site de scikit-image. Pour avoir un aperçu des différentes fonctionnalités, rendez-vous sur la page galerie du site

Pour l'installer, nous allons utiliser PIP.

Dans le powershell, rentrer dans le dossier REPO\install\:

  • taper cd C:\Users\[votre nom d'utilisateur]\[le dossier REPO]\install\ puis touche enter
  • taper pip install scikit_image-0.12.3-cp27-cp27m-win32.whl puis touche enter.
  • Si le texte suivant s'affiche, Scikit-image est correctement installé:


...
Successfully installed dask-0.11.1 decorator-4.0.10 networkx-1.11 numpy-1.11.2 pillow-3.4.2 scikit-image-0.12.3 six-1.10
.0 toolz-0.8.0


  • taper pip install numpy-1.11.2+mkl-cp27-cp27m-win32.whl puis touche enter'.
  • Si le texte suivant s'affiche, numpy est correctement installé:


...
Successfully installed numpy-1.11.2+mkl
  • taper pip install scipy-0.18.1-cp27-cp27m-win32.whl puis touche enter'.
  • Si le texte suivant s'affiche, scipy est correctement installé:


...
Installing collected packages: scipy
Successfully installed scipy-0.18.1
  • installer matplot en tapant pip install matplotlib. Si le texte suivant s'affiche, matplotlib est correctement installé:


...
Installing collected packages: python-dateutil, cycler, pytz, pyparsing, matplotlib
Successfully installed cycler-0.10.0 matplotlib-1.5.3 pyparsing-2.1.10 python-dateutil-2.5.3 pytz-2016.7


Une fois fait,

  • taper cd C:\Users\[votre nom d'utilisateur]\[le dossier REPO]\test\scikit puis touche enter
  • taper python test.py puis touche enter
  • une fois le script terminé, plusieurs images apparaissent dans le dossier test\scikit


Scikit-test-output.jpg

Résultats des différents filtres appliqués dans le script.


color sets (cmaps) avaible in scikit

Liste des différentes cartes de couleurs disponibles dans la librairie.

Scikit est maintenant bien installé et prêt à fonctionner.


Scikit-effects.jpg


OpenCV [tmp]

OpenCV est une autre librairie généraliste de traitement d'images. Site deOpenCV. Il va servir à faire de reconnaissance de visages.

Pour l'installer, nous allons utiliser PIP.

Dans le powershell, rentrer dans le dossier REPO\install\:

  • taper cd C:\Users\[votre nom d'utilisateur]\[le dossier REPO]\install\ puis touche enter
  • taper pip install opencv_python-2.4.13-cp27-cp27m-win32.whl puis touche enter.
  • Si le texte suivant s'affiche, OpenCV est correctement installé:


...
Successfully installed opencv_python-2.4.13

Mac OSX

Mise en place de l'environnement de travail sous mac osx.

Terminal

L'installation des packages nécessaires au script vont être installés via le terminal. Il est accessible dans les applications ou via la recherche: ctrl + espace (? à valider)

Bitbucket

Les sources du projets ainsi que les installer des programmes à installer se trouvent sur le dépôt bitbucket.

Pour récupérer l'ensemble des fichiers, aller sur la page de téléchargement et cliquer sur Download repository.

Une fois télécharger, dézipper dans un dossier Documents. Renommer le dossier contenant les scripts memory_learning. Dans le suite des explications, le dossier contenant les sources sera appelé REPO.

Python

  • Installer python à partir du site python.org, prendre la version 2.7 - python-2.7.12-macosx10.6.pkg
  • Lancer le terminal.
  • Taper python. Si le texte suivant apparait, python est bien installé:


Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 26 2016, 12:10:39) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

PIP

PIP est un gestionnaire d'extension pour python. Il permet le déploiement rapide de librairies. Nous en aurons besoin plus tard, lors de l'installation de scikit. Il est installé avec python.

  • Taper pip. Si le texte se termine comme suit apparait, pip est bien installé:


...
  --disable-pip-version-check
                              Don't periodically check PyPI to determine whether a new version of pip is available for download.
                              Implied with --no-index.

PIL

Le script utilise la librairie PIL (Python Imaging Library).

  • Lancer le terminal.
  • Taper pip install Pillow. Si le texte se termine comme suit apparait, pip est bien installé:


...
Installing collected packages: Pillow


Pytesseract [tmp]

[pas complet - il est probable que ce ne soit pas possible de le faire fonctionner sous mac osx sans le recompiler complètement...]

Pytesseract utilise Tesseract, une libraire de reconnaissance de texte (OCR).

Il faut donc premièrement installer Tesseract-OCR. Sur mac osx, il faut passer par mac ports.

Pour installer mac ports:

  • Rendez-vous sur le site macports.org et télécharger la version de mac ports correspondant à votre version d'OSX.
  • Lancer l'installation et valider les différentes étapes.
  • Redémarrer votre terminal.
  • Taper port. Si le texte suivant s'affiche, mac ports est installé:


MacPorts 2.3.4
Entering interactive mode... ("help" for help, "quit" to quit)

Il reste encore à installer tesseract [on hold...].

Scikit-image

Scikit-image est une librairie généraliste de traitement d'images. Site de scikit-image. Pour avoir un aperçu des différentes fonctionnalités, rendez-vous sur la page galerie du site.

Pour l'installer, nous allons utiliser PIP.

  • Lancer le terminal.
  • Taper sudo pip install -U scikit-image et entrer votre mot de passe. Si le texte se termine comme suit apparait, scikit est bien installé:


...
Successfully installed dask-0.11.1 numpy-1.11.2 scikit-image-0.12.3 six-1.10.0 toolz-0.8.0
  • Taper sudo pip install scipy. Si le texte se termine comme suit apparait, scipy est bien installé:


...
Successfully installed scipy-0.18.1


  • Taper sudo pip install matplotlib. Si le texte se termine comme suit apparait, matplotlib est bien installé:


...
Successfully installed cycler-0.10.0 matplotlib-1.5.3 pyparsing-2.1.10 python-dateutil-2.5.3 pytz-2016.7


Une fois fait,

  • lancer le terminal
  • taper cd REPO/test/scikit/ puis touche enter
  • taper python test.py puis touche enter
  • une fois le script terminé, plusieurs images apparaissent dans le dossier test\scikit


Scikit-test-output.jpg

Résultats des différents filtres appliqués dans le script.


color sets (cmaps) avaible in scikit

Liste des différentes cartes de couleurs disponibles dans la librairie.

Scikit est maintenant bien installé et prêt à fonctionner.


Scikit-effects.jpg

Remarques

@frankiezafe > Le workshop était important au niveau des pratiques:

  • les étudiants d'arts numériques n'avait jamais fait de python (...);
  • il a modifié le rapport des comu à leur outil principal, en le replaçant dans un workflow plus ouvert et en ramenant l'attention sur la production du contenu.

Ressources

Python

Code source et scripts développés pour et pendant le workshop: Memory Learning sur bitbucket.

Le script reader.py génère un xml sur base du fichier excell fournit par la mundaneum. L'xml contient tous les champs correctement emballés dans des balises + les chemins vers les images à importer. Il permettra d'automatiser la mise en page d'un document.

Chaque ligne du fichier excell devient une entry. Le nom des tags dans fields dépend du nom de la colonne dans le fichier excell.

Memory learning-DB affiches-screencshot.jpg

screenshot du fichier fournit par le mundaneum.

Extrait du xml généré par le script.

<?xml version="1.0" encoding="UTF-8"?>
<mundaneum>
	<entries>
		<entry id="ARC-MUND-AFF-R1-001">
		<fields>
				<id_num name="ID NUM. ">
<![CDATA[ARC-MUND-AFF-R1-001]]>
	 			</id_num>
				<sujets name="sujet(s)">
<![CDATA[Affiche: élections: 1900-1939
Affiche: Angleterre: 1900-1939
Politique: élection : Campagne électorale: Angleterre: 1900-1939
Parti conservateur: Angleterre: 1900-1939
Politics : elections: Conservative & Unionist Party: England: 1900-1939]]>
				</sujets>
				<type_de_ressource name="type de ressource">
<![CDATA[Affiche]]>
				</type_de_ressource>
				<ressources_associes name="ressource(s) associée(s)"/>
				<auteurs_crateurs name="auteur(s) -créateur(s)"/>
				<localisation name="Localisation">
<![CDATA[AFF2-R1]]>
				</localisation>
				<droits name="droits"/>
				<titre name="titre">
<![CDATA[Vote Conservative  ]]>
				</titre>
				<dates name="date(s)"/>
				<purl name="purl">
<![CDATA[I:\AFFICHES POLITIQUES\Affiches politiques anglaises]]>
				</purl>
				<remarques name="Remarques"/>
				<description name="description">
<![CDATA[Socialism doesn't pay... you do!
For a return to sound finance]]>
				</description>
				<format name="format">
<![CDATA[20 x 25]]>
				</format>
				<ref_dem name="REF. DEM.">
<![CDATA[DEM-2011-07]]>
				</ref_dem>
				<diteurs name="éditeur(s)">
<![CDATA[Conservative & Unionist Central Office (London)]]>
				</diteurs>
				<id name="ID">
<![CDATA[ARC-MUND-AFF-R1-001]]>
				</id>
				<langues name="langue(s)">
 <![CDATA[en]]>
				</langues>
				<format_num name="format NUM.">
<![CDATA[TIFF ## JPEG]]>
				</format_num>
				<couverture_spatiale name="couverture spatiale"/>
				<droits name="droits ">
<![CDATA[Collections de la Fédération Wallonie-Bruxelles, en dépôt au Mundaneum à Mons.]]>
				</droits>
				<contributeurs name="contributeur(s) ">
<![CDATA[The Press at Colombelands, Ltd. (Addlestone)]]>
				</contributeurs>
				<dossier_duvre name="DOSSIER D'ŒUVRE"/>
		</fields>
		<files>
			<file path="data/ARC-MUND-AFF-R1-001_72.jpg" width="3378" height="4410"/>
			<file path="data/ARC-MUND-AFF-R1-001_72_vecto.jpg" width="1001" height="1306"/>
			<file path="data/ARC-MUND-AFF-R1-001_72_small.jpg" width="1000" height="1306"/>
		</files>
	</entry>

Les fichiers images sont récupérer automatiquement par le script. Le chemin est relatif (à valider dans indesign).

Le choix des champs à importer dans la mise en page sera fait lors du workshop par les étudiants.

Les algorithmes de traitement des images ne sont pas encore liés à ce script. D'autres champs seront donc disponibles dans la version finale du script.

Indesign

Pour pouvoir mettre en forme le contenu du xml (facilement), il est nécessaire que les différents champs soient repris dans des tags dont le nom varie. L'outil d'importation ne permet pas d'utiliser les attributs des tags! Ce comportement implique une modification du script de génération. Voir ce commit.

XML

Xml démo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE test [
<!ELEMENT titre (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT img (#PCDATA)>
<!ATTLIST img href CDATA #IMPLIED>
]>
<root>
	<Story>
		<titre>Workshop Mundaneum</titre>
		<img href="file:///image-test-big.png" />
		<body>Mise en relation d'une base de données d'archives image avec des algorithmes de traitement (machine learning). La recherche constiste à produire de nouvelles images et des informations textuelles nouvelles en utilisant des algorithmes de reconnaissance d'objets et de segmentation d'images. La session de travail se terminera par la production d'une série de documents mis en page automatiquement. </body>
		<img href="file:///image-test-2.png" />
		<img href="file:///image-test-3.png" />
		<img href="file:///image-test-4.png" />
		<img href="file:///image-test-5.png" />
		<img href="file:///image-test-6.png" />
		<img href="file:///image-test-7.png" />
		<img href="file:///image-test-8.png" />
		<img href="file:///image-test-9.png" />
		<img href="file:///Images/image-test.png" />
	</Story>
</root>

Bookmarks

related

tutorials

tools

python