Commit f775eab4 authored by Yannick TANGUY's avatar Yannick TANGUY

Lighter version of OTB General slides

parent 2849fdbf
\begin{frame}
\frametitle{5.0 (May 2015)}
\begin{block}{Make OTB more modular}
\begin{itemize}
\item Better code layout, coherent modules (124 modules and 16 groups) with
source, test and applications.
\item Dependency management
\item External contributions: \url{https://www.orfeo-toolbox.org/external-projects/}
\end{itemize}
\end{block}
\begin{block}{SuperBuild}
\begin{itemize}
\item No more third party software in OTB!
\item The Superbuild downloads, configures, builds and installs dependencies
\item Offline mode for compiling OTB without network access (e.g. airplane)
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Open governance: Project Steering Committee}
\begin{block}{PSC beginning}
\begin{itemize}
\item Until 2015: OTB is open-source software
\item In march 2015: OTB become free software, with CNES as the first PSC
\end{itemize}
\end{block}
\begin{block}{A club of developers, not managers}
\begin{itemize}
\item High level project steering, roadmaps, communication and planning
\item Vote RFCs: all members' votes have the same value ($\pm 1$, $\pm 0$)
\item Seats do not expire. Exits are by resignation or vote of expulsion
\item The PSC is not a legal entity and has no funding
\end{itemize}
\end{block}
\begin{block}{Numbers}
\begin{itemize}
\item 5 members from 4 different organizations
\item 2 releases under a PSC (5.2, 5.4)
\item 3 online meetings (with public logs)
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.0 (Mai 2015)}
\begin{block}{Modularité}
\begin{itemize}
\item Une meilleure organisation du code, en modules cohérents (124 modules et
16 groupes) contenants sources, tests et applications.
\item Gestion des dépendances
\item Contributions externes: \url{https://www.orfeo-toolbox.org/external-projects/}
\end{itemize}
\end{block}
\begin{block}{SuperBuild}
\begin{itemize}
\item Il n'y a plus de logiciels tiers dans l'OTB
\item Le Superbuild, télécharge, configure, compile et installe les dépendances
\item Il existe également un mode \textit{offline} pour compiler l'OTB sans
accès internet (en avion par exemple).
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Gouvernance ouverte: Project Steering Committee}
\begin{block}{Genèse du PSC}
\begin{itemize}
\item Jusqu'en 2015: l'OTB, un logiciel à sources ouvertes
\item En mars 2015: l'OTB devient un logiciel libre, le CNES nomme un PSC initial
\end{itemize}
\end{block}
\begin{block}{Un club de développeurs, pas de décideurs}
\begin{itemize}
\item Pilotage haut niveau du projet, roadmaps, communication, planification
\item Vote les RFCs: Tous les membres ont le même poids dans les votes ($\pm 1$, $\pm 0$)
\item Les sièges n'expirent pas, sortie par démission ou vote d'expulsion
\item Le PSC n'est pas une entité légale et n'a pas de moyens propres
\end{itemize}
\end{block}
\begin{block}{En chiffres}
\begin{itemize}
\item 5 membres de 4 entités différentes
\item 2 release sous l'égide du PSC (5.2, 5.4)
\item 3 meetings en ligne (logs publics)
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.10 (February 2017)}
\begin{block}{OTB}
\begin{itemize}
\item Composite applications framework
\item TrainImagesClassifier and BundleToPerfectSensor refactoring (composite)
\item Print corresponding command-line in apps QT GUI
\item Enhancement of field selector QT component
\item FFT/DWT application
\item Texture app now allows for subsampled results (faster)
\end{itemize}
\end{block}
\begin{block}{Monteverdi}
\begin{itemize}
\item Single band color mapping
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.10 (février 2017)}
\begin{block}{OTB}
\begin{itemize}
\item Framework pour applications composites
\item Refactoring TrainImagesClassifier et BundleToPerfectSensor (composite)
\item Affichage de la ligne de commande correspondante dans les GUI QT des applications
\item Amélioration du composant de sélection des champs dans les GUI QT
\item Application FFT/DWT
\item Calcul des textures de Haralick sous échantillonnées (release majeure)
\end{itemize}
\end{block}
\begin{block}{Monteverdi}
\begin{itemize}
\item Pseudo-couleur à bande unique
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.2 (December 2015)}
\begin{block}{OTB}
\begin{itemize}
\item New SAR processing applications (polarimetry, radiometry, speckle)
\item Support for Sentinel-1 products (radiometric calibration)
\item Better Python bindings
\item Better GDAL 2.0 compatibility and support Sentinel-2 images
\item Official package in DebianGIS (special thanks to Rashad and Debian maintainer)
\item \ldots
\end{itemize}
\end{block}
\begin{block}{Monteverdi 3.0}
\begin{itemize}
\item Display an image mosaic or multi-temporal dataset
\item Efficient visualization tools (local contrast, gradient \ldots)
\item Access to OTB applications
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.2 (Décembre 2015)}
\begin{block}{OTB}
\begin{itemize}
\item Nouvelles applications pour le traitement SAR (polarimétrie, radiométrie, speckle)
\item Support des produits Sentinel-1 (calibration radiométrique)
\item Amélioration accès OTB en Python
\item Compatibilité avec GDAL 2.0 et support des images Sentinel-2
\item \ldots
\end{itemize}
\end{block}
\begin{block}{Monteverdi 3.0}
\begin{itemize}
\item Affichage mosaïque d'images ou série multi-temporelle
\item Outils de visualisation performants (contraste local, gradient\ldots)
\item Accès aux applications OTB
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.4 (May 2016)}
\begin{block}{OTB}
\begin{itemize}
\item Switched to a fixed release schedule
\item Merged Ice (visualization lib) into OTB
\item External build of external modules
\item New SAR decomposition methods: Barnes, Huynen, Pauli
\end{itemize}
\end{block}
\begin{block}{Monteverdi 3.2}
\begin{itemize}
\item Screen-shot feature
\item Generate GDAL overviews
\item Support for GDAL sub-datasets
\item Added to the SuperBuild
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.4 (Mai 2016)}
\begin{block}{OTB}
\begin{itemize}
\item Passage à un cycle de release fixe (3 mois)
\item Intégration du composant de visualisation
\item Compilation externe des modules externes
\item Nouvelles décompositions SAR: Barnes, Huynen, Pauli
\end{itemize}
\end{block}
\begin{block}{Monteverdi 3.2}
\begin{itemize}
\item Capture d'écran
\item Génération d'overviews GDAL
\item Gestion des sous datasets GDAL
\item Ajout au SuperBuild
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.6 (August 2016)}
\begin{block}{OTB}
\begin{itemize}
\item MPI pipeline execution
\item Samples extractor and selection for supervised classification
\item Improve classification on vector
\item Support for Sentinel-1 products (geometric calibration)
\end{itemize}
\end{block}
\begin{block}{Monteverdi 3.4}
\begin{itemize}
\item Improve OTB-applications display \& search bar
\end{itemize}
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Parallel OTB pipeline with MPI}
\begin{center}
\vspace{-0.5cm}
\includegraphics[width=0.6\textwidth]{images/mpi.png}
\begin{scriptsize}
\begin{verbatim}
$ mpirun -np $nb_procs --hostfile $PBS_NODEFILE \
otbcli_BundleToPerfectSensor \
-inp $ROOT/IMG_PHR1A_P_001/IMG_PHR1A_P_201605260427149_ORT_1792732101-001_R1C1.JP2 \
-inxs $ROOT/IMG_PHR1A_MS_002/IMG_PHR1A_MS_201605260427149_ORT_1792732101-002_R1C1.JP2 \
-out $ROOT/pxs.tif uint16 -ram 1024
------------ JOB INFO 1043196.tu-adm01 -------------
JOBID : 1043196.tu-adm01
USER : michelj
GROUP : ctsiap
JOB NAME : OTB_mpi
SESSION : 631249
RES REQSTED : mem=1575000mb,ncpus=560,place=free,walltime=04:00:00
RES USED : cpupercent=1553,cput=00:56:12,mem=4784872kb,ncpus=560,vmem=18558416kb,
walltime=00:04:35
BILLING : 42:46:40 (ncpus x walltime)
QUEUE : t72h
ACCOUNT : null
JOB EXIT CODE : 0
------------ END JOB INFO 1043196.tu-adm01 ---------
\end{verbatim}
\end{scriptsize}
\end{center}
\end{frame}
\begin{frame}
\frametitle{5.6 (August 2016)}
\begin{block}{OTB}
\begin{itemize}
\item Parallélisation de l'exécution du pipeline avec la librairie MPI
\item Extraction et sélection d'échantillons pour la classification supervisée
\item Amélioration de la classification données vecteurs
\item Support des images Sentinel-1 (calibration géométrique)
\end{itemize}
\end{block}
\begin{block}{Monteverdi 3.4}
\begin{itemize}
\item Amélioration affichage et accès aux OTB applications
\end{itemize}
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Parallélisation de traitements OTB avec MPI}
\begin{center}
\vspace{-0.5cm}
\includegraphics[width=0.6\textwidth]{images/mpi.png}
\begin{scriptsize}
\begin{verbatim}
$ mpirun -np $nb_procs --hostfile $PBS_NODEFILE \
otbcli_BundleToPerfectSensor \
-inp $ROOT/IMG_PHR1A_P_001/IMG_PHR1A_P_201605260427149_ORT_1792732101-001_R1C1.JP2 \
-inxs $ROOT/IMG_PHR1A_MS_002/IMG_PHR1A_MS_201605260427149_ORT_1792732101-002_R1C1.JP2 \
-out $ROOT/pxs.tif uint16 -ram 1024
------------ JOB INFO 1043196.tu-adm01 -------------
JOBID : 1043196.tu-adm01
USER : michelj
GROUP : ctsiap
JOB NAME : OTB_mpi
SESSION : 631249
RES REQSTED : mem=1575000mb,ncpus=560,place=free,walltime=04:00:00
RES USED : cpupercent=1553,cput=00:56:12,mem=4784872kb,ncpus=560,vmem=18558416kb,
walltime=00:04:35
BILLING : 42:46:40 (ncpus x walltime)
QUEUE : t72h
ACCOUNT : null
JOB EXIT CODE : 0
------------ END JOB INFO 1043196.tu-adm01 ---------
\end{verbatim}
\end{scriptsize}
\end{center}
\end{frame}
\begin{frame}
\frametitle{5.8 (October 2016)}
\begin{block}{OTB}
\begin{itemize}
\item Access to Shark random forests (better performances, parallel learning)
\item Better performances in BandMathX
\item Spot7 support (radiometric and geometric calibration)
\item Applications in-memory connection
\item Full new classification framework available
\item And lots of other small improvements ...
\end{itemize}
\end{block}
\begin{block}{Monteverdi}
\begin{itemize}
\item Now part of OTB source code
\item Zoom with mouse wheel without CTRL
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{5.8 (Octobre 2016)}
\begin{block}{OTB}
\begin{itemize}
\item Implémentation Random Forest de Shark: plus performante, apprentissage parallèle
\item Meilleure performances BandMathX
\item Support spot7 (calibration radiométrique et géométrique)
\item Connection en mémoire des applications
\item Finalisation du nouveau framework de classification
\item Et plein d'autres petites améliorations ...
\end{itemize}
\end{block}
\begin{block}{Monteverdi}
\begin{itemize}
\item Intégration aux sources de l'Orfeo ToolBox
\item Zoom avec molette sans CTRL
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{6.0 (May 2017)}
\begin{block}{OTB}
\begin{itemize}
\item Licence change to Apache v2.0
\item OpenCV 3.0 support
\item Sentinel1 IW SLC deburst application
\item Band selection through extended filenames
\item Unsupervised classification in framework
\item Morphological profiles app
\item Vector files classification app
\item Deprecated code cleanup (major release)
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{6.0 (mai 2017)}
\begin{block}{OTB}
\begin{itemize}
\item Changement de licence pour Apache v2.0
\item Support OpenCV 3.0
\item Application pour deburst des produits Sentinel1 IW SLC
\item Sélection des bandes par noms de fichier étendus
\item Classification non-supervisée intégrée au framework
\item Application pour profils morphologiques
\item Application pour classer des vecteurs
\item Nettoyage des fonctions dépréciées
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{6.2 (October 2017)}
\begin{block}{OTB}
\begin{itemize}
\item Better help, doc and logs
\item \textit{All in one} LSMS segmentation
\item Improvements and refactoring of several applications: Convert, DownloadSRTMTiles, PixelValue, ExtractROI
\item Binary packages include files needed to develop with OTB
\item OTB has graduated in July from incubation and is now a full fledged OSGeo project!
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{6.2 (Octobre 2017)}
\begin{block}{OTB}
\begin{itemize}
\item Amélioration des messages d'erreurs, de la documentation des applications
\item Application de segmentation \textit{all in one}
\item Amélioration applications: Convert, DownloadSRTMTiles, PixelValue, ExtractROI
\item Paquets binaires inclus fichiers nécessaires pour développer avec l'OTB
\item OTB est officiellement un logiciel OSGeo!
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{6.4 (January 2018)}
\begin{itemize}
\item Enhancement of multiple files selection widget
\item Application and filter for local contrast enhancement (CLAHE)
\item Improvement of generic SAR sensor model
\item Python 3 support
\item After this release: moving to gitlab!
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gitlab: easier, more integrated}
\begin{columns}
\column{0.4\textwidth}
\begin{itemize}
\item Request for comments, bugs, feature requests $\Rightarrow$ gitlab issues
\item All code modifications goes through Merge Requests
\item Easier code review, links between issues and Merge Requests
\item Code contribution more straightforward
\item Provides hosting for Remote Modules
\end{itemize}
\column{0.6\textwidth}
\includegraphics[width=\textwidth]{images/gitlab_mr.png}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{6.4 (Janvier 2018)}
\begin{itemize}
\item Améliorations du widget de sélection des fichiers multiples
\item Application et filtre pour l'amélioration du contraste local (CLAHE)
\item Amélioration du modèle générique de capteur SAR
\item Support de python 3
\item Après cette release: déménagement vers gitlab!
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gitlab: plus facile, plus intégré}
\begin{columns}
\column{0.4\textwidth}
\begin{itemize}
\item Request for comments, bugs, feature requests $\Rightarrow$ issues gitlab
\item Toute modification passe par une Merge Request
\item Revue de code facilitée, lien entre issues et Merge Request
\item Démarche facilitée pour les contributeurs
\item Hébergement possible pour les Remote Modules
\end{itemize}
\column{0.6\textwidth}
\includegraphics[width=\textwidth]{images/gitlab_mr.png}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{6.6 (June 2018)}
\begin{itemize}
\item Data augmentation : generate synthetic samples to improve classifiers
performances (CESBIO)
\item New algorithms for dimensionality reduction : Autoencoders, PCA and Self
Organizing Map (CESBIO)
\item Multi writer (CS-SI)
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{6.6 (June 2018)}
\begin{itemize}
\item Multi writer (CS-SI)
\begin{lstlisting}[language=c++,breaklines=true,breakatwhitespace=true,frame =
tb,framerule =
0.25pt,fontadjust,backgroundcolor={\color{listlightgray}},basicstyle =
{\ttfamily\tiny},keywordstyle =
{\ttfamily\color{red}\textbf},identifierstyle = {\ttfamily},commentstyle =
{\ttfamily\color{listcomment}\textit},stringstyle =
{\ttfamily},showstringspaces = false,showtabs = false,numbers =
none,numbersep = 2pt, numberstyle={\ttfamily\color{listnumbers}},tabsize =
2]
ReaderType1::Pointer reader1 = ReaderType1::New();
reader1->SetFileName( inputImageFileName1 );
ReaderType2::Pointer reader2 = ReaderType2::New();
reader2->SetFileName( inputImageFileName2 );
WriterType::Pointer writer = WriterType::New();
writer->AddInputImage( reader1->GetOutput(), outputImageFileName1);
writer->AddInputImage( reader2->GetOutput(), outputImageFileName2);
writer->SetNumberOfLinesStrippedStreaming( numberOfLinesPerStrip );
writer->Update();
\end{lstlisting}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{6.6 (June 2018)}
\begin{itemize}
\item Improvement in Application engine : simplify complex type in input or
output images (SAR images manipulation), stop button in the graphic interface...
\item Migration from Qt4 to Qt5
\item Better integration in QGIS (next slides)
\item Lots of bugfixes!
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{6.6.1 (soon!)}
\begin{block}{Bugfixes}
\begin{itemize}
\item Bugfix only release, 100\% backwards-compatible!
\item 50+ bugfixes backported from 7.0.0 milestone
\item Dependencies upgrades
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{7.0 (soon!)}
\begin{block}{Features}
\begin{itemize}
\item Add box kernel to morphological operations apps
\item No data extended filename for image writers
\item Documentation improvements
\item 50+ bugfixes
\end{itemize}
\end{block}
\begin{block}{Refactoring}
\begin{itemize}
\item Semantic Versioning (\url{https://semver.org})
\item \texttt{LSMSSmallRegionsMerging} $\Rightarrow$ \texttt{SmallRegionMerging}
\item \texttt{Convert} $\Rightarrow$ \texttt{DynamicConvert}
\item Deprecate \texttt{OTBMapnik} and \texttt{OTBVectorDataRendering}
\item Rename parameters, remove options...
\end{itemize}
\end{block}
\end{frame}
\section{Make OTB in QGIS Great Again!}
\begin{frame}
\frametitle{2009: OTB-QGIS plugin (Archeology)}
\begin{minipage}[t][6cm][t]{\textwidth}
\begin{center}
\includegraphics[width=0.7\textwidth]{images/otb-qgis-2009.png}
\end{center}
\end{minipage}
\end{frame}
\begin{frame}
\frametitle{2012-2017: First version of OTB plugin available in QGIS processing}
\begin{minipage}[t][6cm][t]{\textwidth}
\begin{center}
\includegraphics[width=0.7\textwidth]{images/otb_qgis.png}
\end{center}
\end{minipage}
\end{frame}
\begin{frame}
\frametitle{Access to OTB in QGIS: A powerful wedding}
\begin{itemize}
\item Facilitate access to OTB (QGIS widely use in the GIS community)
\item Avoid to duplicate efforts (use QGIS GUI, GIS features...)
\item Powerful features in QGIS processing (batch processing, Python scripting...)
\item Collaboration with the QGIS community is very positive
\item Support from QGIS developers
\item OSGeo \textit{power}
\item \href{https://www.youtube.com/watch?v=ufSQ2SgSIV4}{Demo}: \url{https://www.youtube.com/watch?v=ufSQ2SgSIV4}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{But everything is not that simple...}
\begin{itemize}
\item ``How to install and configure the last version of OTB in QGIS?''
\item ``Which versions of OTB is compatible with QGIS??''
\item ``Why I can't find the segmentation application in the QGIS processing panel?''
\item ``OTB applications seems to have slightly different names in QGIS?''
\item ``I give up OTB in QGIS...''
\item \alert{STOP!}
\item 2018: We need to improve the integration of OTB in QGIS
%\item Maintenance, Maintenance, Maintenance...
%\item Each version of otb needs to update list of descriptor files
%\item XML files which are hard to maintain.
%\item requires to update a blacklist and whitelist documents to list app that cannot be included and can be included
%\item needs manual update of these xml + followup on pull request
%\item works only with limited version of OTB (Not last release, mostly behind 3-4 releases)
%\item Nobody want to work on it from otb and qgis side. maintained by CS team
%\item Some applications were grouped, depending on their parameters : BinaryMorphologicalOperation (Closing, Dilate, Erode, Opening)
%\item Add new parameter in ParameterMultipleExternalInput processing, to use it in FusionOfClassifications
\end{itemize}