diff --git a/doc/src/ClassStar.rst b/doc/src/ClassStar.rst new file mode 100644 index 0000000000000000000000000000000000000000..f4f3d4e39527f7df39aa5c5826dd8849a4a438ce --- /dev/null +++ b/doc/src/ClassStar.rst @@ -0,0 +1,102 @@ +.. File ClassStar.rst + +.. include:: global.rst + +Star-galaxy classifier +====================== + +A good discrimination between stars and galaxies is essential for both galactic and extragalactic statistical studies. +The common assumption is that galaxy images look more extended or fuzzier than those of stars (or |QSO|\ s). +The :param:`CLASS_STAR` classifier relies on a `multilayer feed-forward neural network `_ trained using `supervised learning `_ to estimate the *a posteriori* probability :cite:`Richard1991,Saerens2002` of a |SExtractor| detection to be a point source or an extended object. +Below is a shortened description of the estimator, see :cite:`1996AAS_117_393B` for more details. + +Inputs and outputs +------------------ + +The neural network is a multilayer Perceptron with a single fully connected, hidden layers. +Of all neural networks it is probably the best-studied, and it has been intensively applied with success for many classification tasks. + +The classifier (:numref:`fig_classstarnn`) has 10 inputs: + +* 8 isophotal areas :math:`A_0..A_7`, measured at isophotes exponentially spaced between the analysis threshold (which may be modified with the ``ANALYSIS_THRESH`` configuration parameter) and the object's peak pixel value +* The object's peak pixel value above the local background :math:`I_{\mathrm max}` +* A |seeing| input, which must be set by the user with the ``SEEING_FWHM`` configuration parameter. + +The output layer contains only one neuron, as "star" and "galaxy" are two classes mutually exclusive. +The output value is a "stellarity index", which for images that reasonably match those of the training sample is an estimation of the *a posteriori* probability for the classified object to be a point-source. +Hence a :param:`CLASS_STAR` close to 0 means that the object is very likely a galaxy, and 1 that it is a star, + +.. _fig_classstarnn: + +.. figure:: figures/classstarnn.* + :figwidth: 100% + :align: center + + Architecture of |SExtractor|'s :param:`CLASS_STAR` classifier + +The ``SEEING_FWHM`` configuration parameter must be adjusted by the user + + +Training +-------- + +The main issue with supervised machine learning is the labeling of the large training sample. +Hopefully a big percentage of contemporary astronomical images share a common set of generic features, which can be simulated with sufficient realism to create a large training sample together with the ground truth (labels). +The :param:`CLASS_STAR` classifier was trained on such a sample of artificial images. + +Six hundred :math:`512\times512` simulation images containing stars and galaxies were generated to train the network using an early prototype of the |SkyMaker|_ package :cite:`2009MmSAI_80_422B`. +They were done in the blue band, where galaxies present very diversified aspects. +The two parameters governing the shape of the |PSF| (|seeing| |FWHM| and Moffat :math:`\beta` parameter :cite:`1969AA_3_455M`) were chosen randomly with :math:`0.025\le` FWHM :math:`\le 5.5` and :math:`2\le\beta\le4`. +The pixel scale was always taken less than :math:`\approx 0.7` FWHM to warrant correct sampling of the image. +Bright galaxies are simply too rare in the sky to constitute a significant training sample on such a small number of simulations. +So, keeping a constant comoving number density, we increased artificially the number of nearby galaxies by making the volume element proportional to :math:`zdz`. +Stars were given a number-magnitude distribution identical to that of galaxies. +**Therefore any pattern presented to the network has 50% chance to correspond to a star or a galaxy, irrespective of the magnitude** [3]_. +Crowding in the simulated images is higher than what one sees on real images of high galactic latitude fields, allowing for the presence of many “difficult cases” (close double stars, truncated profiles, etc...) that the neural network classifier had to deal with. + +|SExtractor| was run on each image with 8 different extraction thresholds. This led to a catalog with about :math:`10^6` entries with the 10 input parameters plus the class label. Back-propagation learning took about 15 min on a SUN SPARC20 workstation. The final set of synaptic weights was saved to the file :file:`default.nnw` , ready to be used in “feed-forward” mode during source extraction. + + +It has been proven, both theoretically and experimentally (Richard & +Lippmann :raw-latex:`\cite{richard:lippmann}` and references therein), +that the cost function of a multi-layered neural net as ours is +minimized when outputs estimate Bayesian *a posteriori* probabilities. +Although the present classifier does not output exact Bayesian +probabilities (because real data unavoidably differ a bit from simulated +ones), it provides at least a confidence estimate in the classification. +This is obvious on Fig. [fig:classvsmag], where the stellarity index +tends to “degenerate” to intermediate values as magnitude increases and +classification becomes harder. Besides, qualitative estimates of +confidence done by eye are in good agreement with those of the +classifier. + +Thus, the problem of contamination mentioned in Sect. [training], +arising when the classification becomes difficult and the two classes +are in unbalanced proportions, can be straightforwardly solved by +adjusting the decision boundary between “stars” and “galaxies” within +the stellarity index range ([0,1]). + + +In conclusion, if one excludes heavily saturated stars, the +classification of “bright” objects appears to be reliable at least at a +conservative :math:`\approx`\ 95% level, on both simulated and real +images with a good sampling. Figure [fig:ccdfield] shows an example of a +CCD image and its interpretation by SExtractor. + +.. [1] + Doing so, we neglect of course the change in appearance of galaxies + from UV to NIR, from large to narrow-band filters; but the effect of + this change is not larger than the one due to the natural spread of + galaxy types in the B band. + +.. [2] + Optical artifacts like spikes or scattered light rays would certainly + be worth identifying, as they are found to pollute all survey + catalogs, especially around bright stars; but the classification + parameters used here are simply inadequate. + +.. [3] + Faint galaxies have less chance being detected than faint stars, but + it would have little effect since the ones that are lost at a given + magnitude are predominantly the most extended and consequently the + easiest to classify. diff --git a/doc/src/Measurements.rst b/doc/src/Measurements.rst index 2eddb558e34780fe563d1fd16129b2c6853dfd54..d9b9aba24c115febcd9b5a887b9faa5b23aa805e 100644 --- a/doc/src/Measurements.rst +++ b/doc/src/Measurements.rst @@ -1,8 +1,10 @@ -Measurements -============ +.. File Measurements.rst .. include:: global.rst +Measurements +============ + Once sources have been detected and deblended, they enter the measurement phase. |SExtractor| performs three categories of measurements: isophotal, full, and model-fitting. @@ -23,6 +25,7 @@ Model-fitting PositionWin Photom Model + ClassStar .. [#thresh] Pixel values also have to exceed the local detection threshold set with ``DETECT_THRESH``. .. [#psf_models] PSF models be computed using the |PSFEx|_ package. diff --git a/doc/src/Model.rst b/doc/src/Model.rst index f039ff6fdaa67fdb8fa82dd4d6ec98ddd426fd75..da03d9b9c23c17fd66bd04ddb1668f4394c4eb72 100644 --- a/doc/src/Model.rst +++ b/doc/src/Model.rst @@ -261,8 +261,8 @@ allowed values between 1 and 10. .. _spread_model_def: -Star-Galaxy separation ----------------------- +Model-based star-galaxy separation +---------------------------------- The :param:`SPREAD_MODEL` estimator has been developed as a star/galaxy classifier for the DESDM pipeline :cite:`2012SPIE_8451E_0DM`, and has also been used in other surveys :cite:`2012ApJ_757_83D,2013AA_554A_101B`. :param:`SPREAD_MODEL` indicates which of the best fitting local PSF model resampled at the current position :math:`\tilde{\boldsymbol{\phi}}` (representing a point source) or a slightly ``fuzzier'' resampled model :math:`\tilde{\boldsymbol{G}}` (representing a galaxy) matches best the image data. diff --git a/doc/src/Param.rst b/doc/src/Param.rst index e959cefc0f3e0946eefafd92393622ef078f04f6..cfc9a4980c3d6faa1aff5b9cfb689e29b20c0f6d 100644 --- a/doc/src/Param.rst +++ b/doc/src/Param.rst @@ -280,5 +280,4 @@ of their meaning. #THETAMODEL_SKY Model position angle (east of north) (native) [deg] #THETAMODEL_J2000 Model position angle (east of north) (J2000) [deg] #THETAMODEL_B1950 Model position angle (east of north) (B1950) [deg] - #SPREAD_MODEL Spread parameter from model-fitting diff --git a/doc/src/figures/classstarnn.pdf b/doc/src/figures/classstarnn.pdf new file mode 100644 index 0000000000000000000000000000000000000000..18badce25c0d2b10f11623753e11ae33c7769912 Binary files /dev/null and b/doc/src/figures/classstarnn.pdf differ diff --git a/doc/src/figures/classstarnn.svg b/doc/src/figures/classstarnn.svg new file mode 100644 index 0000000000000000000000000000000000000000..99e226048113e7e12ee112c5d098c1d506e1b9c4 --- /dev/null +++ b/doc/src/figures/classstarnn.svg @@ -0,0 +1,11 @@ + + +image/svg+xmlAA +0max.... +. +. +CLASS_STAR +7 +ISeeing +ParametersRescalingInput layerHidden layerOutput layer + diff --git a/doc/src/keys.rst b/doc/src/keys.rst index 074f1bd5e026825b611a209f53a9a3ab0ab11716..2437d73e8ce638b1b0e6c93d129949995b1180e5 100644 --- a/doc/src/keys.rst +++ b/doc/src/keys.rst @@ -43,6 +43,9 @@ .. |PSFEx| replace:: :program:`PSFEx` .. _PSFEx: http://astromatic.net/software/psfex +.. |QSO| replace:: :abbr:`QSO (Quasi-Stellar Object)` +.. _QSO: https://en.wikipedia.org/wiki/Quasar + .. |RPM| replace:: :program:`RPM` .. _RPM: http://www.rpm.org @@ -55,6 +58,12 @@ .. |SExtractor| replace:: :program:`SExtractor` .. _SExtractor: http://astromatic.net/software/sextractor +.. |SkyMaker| replace:: :program:`SkyMaker` +.. _SkyMaker: http://astromatic.net/software/skymaker + +.. |seeing| replace:: *seeing* +.. _seeing: https://en.wikipedia.org/wiki/Astronomical_seeing + .. |SNR| replace:: :abbr:`SNR (Signal-to-Noise Ratio)` .. _SNR: https://en.wikipedia.org/wiki/Signal-to-noise_ratio diff --git a/doc/src/references.bib b/doc/src/references.bib index 9ca7f0f51a2963048fce7d12d29baf85aeb2297a..93e90740340b5f95fb5e420e756090018d004e48 100644 --- a/doc/src/references.bib +++ b/doc/src/references.bib @@ -12,6 +12,18 @@ adsnote = {Provided by the SAO/NASA Astrophysics Data System} } +@ARTICLE{2009MmSAI_80_422B, + author = {{Bertin}, E.}, + title = "{SkyMaker: astronomical image simulations made easy.}", + journal = {Mem.Soc.Ast.It}, + keywords = {Methods: numerical, Techniques: image processing}, + year = 2009, + volume = 80, + pages = {422}, + adsurl = {http://adsabs.harvard.edu/abs/2009MmSAI..80..422B}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + @ARTICLE{2013AA_554A_101B, author = {{Bouy}, H. and {Bertin}, E. and {Moraux}, E. and {Cuillandre}, J.-C. and {Bouvier}, J. and {Barrado}, D. and {Solano}, E. and {Bayo}, A.}, title = "{Dynamical analysis of nearby clusters. Automated astrometry from the ground: precision proper motions over a wide field}", @@ -212,6 +224,18 @@ archivePrefix = "arXiv", adsnote = {Provided by the SAO/NASA Astrophysics Data System} } +@ARTICLE{1969AA_3_455M, + author = {{Moffat}, A.~F.~J.}, + title = "{A Theoretical Investigation of Focal Stellar Images in the Photographic Emulsion and Application to Photographic Photometry}", + journal = {A&A}, + year = 1969, + month = dec, + volume = 3, + pages = {455}, + adsurl = {http://adsabs.harvard.edu/abs/1969A&A.....3..455M}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + @ARTICLE{1856MNRAS_17_12P, author = {{Pogson}, N.}, title = "{Magnitudes of Thirty-six of the Minor Planets for the first day of each month of the year 1857}", @@ -241,6 +265,30 @@ archivePrefix = "arXiv", adsnote = {Provided by the SAO/NASA Astrophysics Data System} } +@ARTICLE{Richard1991, + author = {{Richard}, M.~D. and {Lippmann}, R.~P.}, + title = {Neural Network Classifiers Estimate Bayesian a posteriori Probabilities}, + journal = {Neural Computation}, + year = {1991}, + number = {3}, + pages = {461--483} +} + +@ARTICLE{Saerens2002, +author={{Saerens}, M. and {Latinne}, P. and {Decaestecker}, C.}, +journal={IEEE Transactions on Neural Networks}, +title={Any reasonable cost function can be used for a posteriori probability approximation}, +year={2002}, +volume={13}, +number={5}, +pages={1204-1210}, +keywords={Bayes methods;decision theory;learning (artificial intelligence);Bayes decision making;a posteriori probability;class membership;cost function;learning machine;loss function;subjective probability theory;Artificial intelligence;Artificial neural networks;Bayesian methods;Computational modeling;Cost function;Decision making;Input variables;Laboratories;Machine learning;Mean square error methods}, +doi={10.1109/TNN.2002.1031952}, +ISSN={1045-9227}, +month={Sep} +} + + @INPROCEEDINGS{2002ASPC_281_228B, author = {{Bertin}, E. and {Mellier}, Y. and {Radovich}, M. and {Missonnier}, G. and {Didelon}, P. and {Morin}, B.},