Aurel-test commited on
Commit
c3c0d39
·
verified ·
1 Parent(s): a5a6c63

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +28 -0
  2. PP1-Collection_Database_new-cleaned.csv +241 -0
  3. README.md +10 -5
  4. app.py +1281 -0
  5. pictures_data/2022.0.86_medium.jpg +0 -0
  6. pictures_data/Abena_01_021.jpg +0 -0
  7. pictures_data/Abena_02_408.jpg +3 -0
  8. pictures_data/Abena_03_513.jpg +3 -0
  9. pictures_data/Abena_04_539.jpg +3 -0
  10. pictures_data/IMadeYou_01_053.jpg +3 -0
  11. pictures_data/IMadeYou_02_220.jpg +3 -0
  12. pictures_data/IMadeYou_03_406.jpg +3 -0
  13. pictures_data/IMadeYou_04_710.jpg +3 -0
  14. pictures_data/IMadeYou_05_828.jpg +3 -0
  15. pictures_data/IMadeYou_06_1243.jpg +3 -0
  16. pictures_data/Isabella_1_045.jpg +0 -0
  17. pictures_data/Isabella_2_1737.jpg +3 -0
  18. pictures_data/Isabella_3_1910.jpg +3 -0
  19. pictures_data/MAR-BVM-7-2022-0-100-001_medium.jpg +0 -0
  20. pictures_data/MAR-BVM-7-2022-0-100-002_medium.jpg +0 -0
  21. pictures_data/MAR-BVM-7-2022-0-105-001_medium.jpg +0 -0
  22. pictures_data/MAR-BVM-7-2022-0-105-002_medium.jpg +0 -0
  23. pictures_data/MAR-BVM-7-2022-0-125-001_medium.jpg +0 -0
  24. pictures_data/MAR-BVM-7-2022-0-128-001_medium.jpg +0 -0
  25. pictures_data/MAR-BVM-7-2022-0-128-002_medium.jpg +0 -0
  26. pictures_data/MAR-BVM-7-2022-0-130-001_medium.jpg +0 -0
  27. pictures_data/MAR-BVM-7-2022-0-130-002_medium.jpg +0 -0
  28. pictures_data/MAR-BVM-7-2022-0-131-001_medium.jpg +0 -0
  29. pictures_data/MAR-BVM-7-2022-0-132-001_medium.jpg +0 -0
  30. pictures_data/MAR-BVM-7-2022-0-132-002_medium.jpg +0 -0
  31. pictures_data/MAR-BVM-7-2022-0-133_medium.jpg +0 -0
  32. pictures_data/MAR-BVM-7-2022-0-134-001_medium.jpg +0 -0
  33. pictures_data/MAR-BVM-7-2022-0-134-002_medium.jpg +0 -0
  34. pictures_data/MAR-BVM-7-2022-0-134-003_medium.jpg +0 -0
  35. pictures_data/MAR-BVM-7-2022-0-135-001_medium.jpg +0 -0
  36. pictures_data/MAR-BVM-7-2022-0-135-002_medium.jpg +0 -0
  37. pictures_data/MAR-BVM-7-2022-0-136-001_medium.jpg +0 -0
  38. pictures_data/MAR-BVM-7-2022-0-136-002_medium.jpg +0 -0
  39. pictures_data/MAR-BVM-7-2022-0-138-001_medium.jpg +0 -0
  40. pictures_data/MAR-BVM-7-2022-0-138-002_medium.jpg +0 -0
  41. pictures_data/MAR-BVM-7-2022-0-139-001_medium.jpg +0 -0
  42. pictures_data/MAR-BVM-7-2022-0-139-002_medium.jpg +0 -0
  43. pictures_data/MAR-BVM-7-2022-0-147-001_medium.jpg +0 -0
  44. pictures_data/MAR-BVM-7-2022-0-147-002_medium.jpg +0 -0
  45. pictures_data/MAR-BVM-7-2022-0-148-001_medium.jpg +0 -0
  46. pictures_data/MAR-BVM-7-2022-0-148-002_medium.jpg +0 -0
  47. pictures_data/MAR-BVM-7-2022-0-149-001_medium.jpg +0 -0
  48. pictures_data/MAR-BVM-7-2022-0-149-002_medium.jpg +0 -0
  49. pictures_data/MAR-BVM-7-2022-0-153-001_medium.jpg +0 -0
  50. pictures_data/MAR-BVM-7-2022-0-153-002_medium.jpg +0 -0
.gitattributes CHANGED
@@ -33,3 +33,31 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ pictures_data/Abena_02_408.jpg filter=lfs diff=lfs merge=lfs -text
37
+ pictures_data/Abena_03_513.jpg filter=lfs diff=lfs merge=lfs -text
38
+ pictures_data/Abena_04_539.jpg filter=lfs diff=lfs merge=lfs -text
39
+ pictures_data/IMadeYou_01_053.jpg filter=lfs diff=lfs merge=lfs -text
40
+ pictures_data/IMadeYou_02_220.jpg filter=lfs diff=lfs merge=lfs -text
41
+ pictures_data/IMadeYou_03_406.jpg filter=lfs diff=lfs merge=lfs -text
42
+ pictures_data/IMadeYou_04_710.jpg filter=lfs diff=lfs merge=lfs -text
43
+ pictures_data/IMadeYou_05_828.jpg filter=lfs diff=lfs merge=lfs -text
44
+ pictures_data/IMadeYou_06_1243.jpg filter=lfs diff=lfs merge=lfs -text
45
+ pictures_data/Isabella_2_1737.jpg filter=lfs diff=lfs merge=lfs -text
46
+ pictures_data/Isabella_3_1910.jpg filter=lfs diff=lfs merge=lfs -text
47
+ pictures_data/Odamado_04_734.jpg filter=lfs diff=lfs merge=lfs -text
48
+ pictures_data/Odamado_06_1230.jpg filter=lfs diff=lfs merge=lfs -text
49
+ pictures_data/Odamado_07_1554.jpg filter=lfs diff=lfs merge=lfs -text
50
+ pictures_data/de-refter-msk-0721.jpg filter=lfs diff=lfs merge=lfs -text
51
+ pictures_data/het-kind-met-de-vissen-msk-0351.jpg filter=lfs diff=lfs merge=lfs -text
52
+ pictures_data/kind-slapend-op-zijn-trommel-msk-0317.jpg filter=lfs diff=lfs merge=lfs -text
53
+ pictures_data/lezend-kind-msk-0335.jpg filter=lfs diff=lfs merge=lfs -text
54
+ pictures_data/moederschap-msk-0639.jpg filter=lfs diff=lfs merge=lfs -text
55
+ pictures_data/nieuwsgierigheid-msk-0449.jpg filter=lfs diff=lfs merge=lfs -text
56
+ pictures_data/portret-van-een-jonge-man-17de18de-eeuw-msk-0033.jpg filter=lfs diff=lfs merge=lfs -text
57
+ pictures_data/spaarpot-geglazuurd-aardewerk-torhout-1ste-helft-20ste-eeuw-mos-7357.jpg filter=lfs diff=lfs merge=lfs -text
58
+ pictures_data/strandtoneel-msk-0235.jpg filter=lfs diff=lfs merge=lfs -text
59
+ pictures_data/tegel-faience-noord-nederland-18de-eeuw-mos-5161.jpg filter=lfs diff=lfs merge=lfs -text
60
+ pictures_data/tegel-faience-noord-nederland-18de-eeuw-mos-5162.jpg filter=lfs diff=lfs merge=lfs -text
61
+ pictures_data/winterlandschap-met-kinderen-msk-0337.jpg filter=lfs diff=lfs merge=lfs -text
62
+ src/art_pieces_db/resources/places/BE.csv.lzma filter=lfs diff=lfs merge=lfs -text
63
+ src/art_pieces_db/resources/places/FR.csv.lzma filter=lfs diff=lfs merge=lfs -text
PP1-Collection_Database_new-cleaned.csv ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 1;;Le Fresnoy;movie;2016;Alexandru;;;child abuse, sadness, childhood, children drawings, family photo archive, autobiography;sad, angry, frustrated, bitter, intimate;"Making this film at this time in my life seems essential for me. I have always felt great shame talking about my childhood, even if it always made me sad."" This creative documentary made in animation from children's drawings, films and family photographs, uniquely evokes the traumas of a painful childhood in the small town of Frătăuții Vechi in Romania";And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;IMadeYou_01_053, IMadeYou_02_220, IMadeYou_03_406, IMadeYou_04_710, IMadeYou_05_828,
2
+ 2;;Le Fresnoy;movie;2015;Isabelle;;Boulogne-sur-Mer;childhood portraits, city daily life, toy, boredom;agressive, confused, bored, threatened, lonely,;"“It is early. Still very early. Stop acting as if you’re an owl, Isabelle. Let us sleep, and get back to sleep. We’re not interested in your dreams and your poetry.”
3
+
4
+ Between the wild stories of Adriana, a modern little girl, and the poetry of Isabelle, accused of treason by her brothers in the 16th century,what is the connection? Between the literary text by André Pieyre de Mandiargues and the prerecorded worlds of love on a modern automatic doll, what possible, fantasised echoes can there be?
5
+
6
+ Here, Adriana is telling a story, Camille grumbling and Océane, in who knows what boredom, is trying to get her doll to speak its never-ending discourse. The trace of a programme or, on the contrary, the hope of a possible emancipation.
7
+
8
+ This film, freely inspired by André Pieyre de Mandiargues’ play Isabella Morra, came out of a shoot with children on a housing estate in the upper reaches of Boulogne-sur-Mer. Through material made up of everyday activities and portraits of children in their spontaneous theatricality, a play of resonances is established with the world of the text.";And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;Isabella_1_045, Isabella_2_1737, Isabella_3_1910
9
+ 3;;Le Fresnoy;movie;2024;Emilien;;;cooking recipe, grand mother, family film archive, DNA storage;joyful, confused, interested, thankful, intimate;"I’ve just stored memories of my grandmother Mado in synthetic DNA. My memories have taken on physical form.
10
+
11
+ Before, in order to store our images and share our recipes, there was the Internet, but the web is getting old and is being privatised at breakneck speed, while its energy consumption promises us scorching tomorrows.
12
+
13
+ DNA is the future: its storage requires no energy, and it can be kept for eternity (even if fifty years would have been enough for me). But DNA is expensive to synthesise. With my budget, I can only afford to store 200 kilobytes of data; the suitcase of the future is small. What memories should I choose? And how should I do it? So far, there are no tutorials.
14
+
15
+ I saved a few traces: a letter to Mado, the recipe for the dessert that made her famous (the coconut flan), the image of a red disc that I will use in my film, a family photo and an imprint of her voice.
16
+
17
+ ODAMADO, an imperfect manual for saving memories in DNA.";If you had a very limited space to store memories, what are 3 memories you would keep?;Odamado_01_400, Odamado_02_433, Odamado_03_649, Odamado_04_734, Odamado_05_818, Odamado_06_1230, Odamado_07_1554
18
+ 4;;Le Fresnoy;movie;2015;Amel;;;blanket, tradition, story, family, wool, gift, wedding, colors, green, white, pink;Happy, intimate, loving, thankful, valued;Abena (blanket in tunisian) is a video that mixes sound interviews and graphic animation, to tell the story of my blanket. A wollen blanket woven by my tunisian grandmother, my father,s mother, and given to my mother for her wedding.I collected what the members of my family had to say about this object, and kept the sound to weave the story of this blanket with the threads of everyone’story. Thes are differents stories wich talk about and toy with the same object without ever really referring to it. What particullary interested me is what revolves around this blanket, talking of it without naming it, speaking of it without saying it, describing it without showing it.;And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;Abena_01_021, Abena_02_408, Abena_03_513, Abena_04_539
19
+ 5;MSK_0320;Abby;"Sculpture
20
+ (Marble)";1896;Godfried, Edmond, Pierre, Marie;;;White, stone, marble, child, barefoot, nightgown,;unfocussed, Lonely, Sad, distant, afraid, insecure, scared, sleepy, fragile;"Marble sculpture depicting a standing child in a nightgown, barefoot and with hands behind the back, lost in thought.The purity and restraint of this work attest to Devreese’s mastery. The sculpture represents Edmond Desmeth, son of Pierre and Marie Pauwels. It is based on a plaster model exhibited in Kortrijk in 1896.
21
+ Nineteenth-century society reflected profound social changes, particularly due to the rise of the middle class as an influential force. Art became an important means for this class to express their status and lifestyle.
22
+ Godefroid Devreese’s marble sculpture presents a boy in a nightgown and raises questions about his social standing. The sculpture is not only an artistic creation but also a sociological document that highlights the role of children in the nineteenth-century bourgeoisie.";Do you have childhood memories of waking up at night because of a nightmare? Or what was a memorable good dream you remember still?;de-kleine-filosoof-msk-0320
23
+ 6;MSK_0721;Abby;Painting;1973;Marc;;;Cantine, children, tables, houseware, nanny, caretakers;"bored, confused,
24
+ Lonely, Scared, anxious, dissaproving";"In De refter, we are struck by the cold and penetrating gaze of the caretakers. The chilly colors and the vacant stares of the children leave a lasting impression. There is a tension in the image. The painting evokes a specific atmosphere of temporary calm—a calm imposed with a certain force through its sober, intimidating ambiance.
25
+ As a talented young artist, Marc Stockman left for Paris in 1955. There, he drew inspiration from the latest developments in modern painting: surrealism, abstraction, the fantastic, and American action painting. After a period of abstract work influenced by Kandinsky, the roots of Flemish expressionism resurfaced, and the human figure once again took center stage. From 1972 onward, Marc Stockman focused on a more direct approach to reality, aligned with American hyperrealism.
26
+ Starting from photographs and documents—often depicting everyday subjects—he constructed his canvases. The aim was no longer to interpret reality, but to convey its essence.";And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;de-refter-msk-0721
27
+ 7;MOS_7357;Abby;"Sculpture
28
+ (Ceramic)";first half 20th century;;;Torhout, Bruges, Sint-Niklaas;Money box, Baby, hat, head, crying, ceramic;Angry, Desperate, Sad;"Money box in the shape of a crying child’s head with a green cap (or pinned helmet), featuring an opening at the bottom. Folk pottery. The growing sociological interest in social groups and classes during the late nineteenth and early twentieth centuries brought about a fascination with folk culture. Industrialization and its social consequences, along with the increasing presence of technology and the rise of mass production, triggered a counterreaction: a distinct visual language was developed to reflect local cultures.
29
+ Special attention was paid to everyday life and domesticity—an interest that also manifested in ceramic production. In Torhout, too, the focus of local ceramic production in the early twentieth century lay primarily on household wares. However, the region also saw more artistic or personalized creations, often made to order. The pottery from this period shows strong similarities with works produced in prominent centers such as Kortrijk, but also in places like Bruges and Sint-Niklaas.";And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;spaarpot-geglazuurd-aardewerk-torhout-1ste-helft-20ste-eeuw-mos-7357
30
+ 9;MSK_0351;Abby;Painting;20th century;Hermann;;;Little girl, child, bowl, fish, painting;Curious, Playful, free;Portrait of a girl reaching into a fishbowl. A loosely executed yet confident painting that reflects a loving observation. Hermann Courtens (1884–1956) was the son of Baron Franz Courtens. He painted landscapes, but was especially known for his still lifes with flowers, interiors, children, and young girls—often in costume and set in intimate, domestic scenes.;Did you have pets when you were a kid? What's your best childhood memory with a pet?;het-kind-met-de-vissen-msk-0351
31
+ 10;MSK_0033;Abby;Painting;18th century;Arnold;;;Portrait, painting, little boy, child, nice clothes, red;pressured, distant;Portrait of a young man with long blond hair and a shy gaze. The child portraits, attributed to the workshop of Arnold van Houbraken, fit within the long portrait tradition of the upper class, where the expectations of the parents are often reflected in the portraits of their young children.;And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;portret-van-een-jonge-man-17de18de-eeuw-msk-0033
32
+ 11;MSK_0639;Abby;Drawing;20th century;Georges;;;Mother, child, Madonna, drawing;Loving, peaceful;A seated mother holds a child in her arms. A recurring motif in the work of the artist George Minne. Minne portrays motherhood in a non-stereotypical way, far removed from traditional Madonna images. The drawing shows a slender and sorrowful female figure, contrasting with the usual image of maternal care and strength.;And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;moederschap-msk-0639
33
+ 13;MOS_5162;Abby;"Tile
34
+ (Ceramic)";18th century;;;Delft;Children, game, stilts tile, ceramic,;Happy, Playful, Free;Tile with a blue depiction of a children’s game: stilts. In the corners, small ox heads. The first shipment of Chinese porcelain (known as ‘kraak porcelain’) arrived in Amsterdam in 1602. Shortly after, the Delft pottery makers began copying Chinese porcelain. As they were unfamiliar with the process of making porcelain, their ceramics were produced in a much thinner version and made from finer, higher-quality yellow clay instead of coarse red clay. This led to the fact that, around 1620-1625, tiles were no longer just used as floor tiles, but were also sold as wall tiles, featuring various depictions of Chinese gardens, and later also scenes from daily life with main motifs such as flowers, flower vases, various animals, mythical creatures, insects, birds, portraits, riders and soldiers, and later also trades, cupids, and children’s games. Tiles depicting children's games in blue-and-white design were first circulated in 1630. By the mid-17th century, around 1650, a series of children’s game tiles were made in Rotterdam. Early children’s game tiles featured large figures. Soon after, a series of children's game tiles with 48 different depictions appeared in Rotterdam, with a spider motif in the corners. The spider became a popular corner motif from the second half of the 17th century, as it was easy to make and remained in circulation until the 20th century. A contemporary tile tableau by Tinus Vermeersch (MSK/1237) evokes the memory of similar Delft and Northern Dutch tiles from the 17th and 18th centuries.;What was your favorite game when you were a child?;tegel-faience-noord-nederland-18de-eeuw-mos-5162
35
+ 14;MOS_5161;Abby;"Tile
36
+ (Ceramic)";18th century;;;;Children, game, marbles, tile, ceramic,;Happy, Playful, Free;Tile with a blue depiction of a children's game: marbles. In the corners, small ox heads. The first shipment of Chinese porcelain (known as ‘kraak porcelain’) arrived in Amsterdam in 1602. Shortly after, the Delft pottery makers began copying Chinese porcelain. As they were unfamiliar with the process of making porcelain, their ceramics were produced in a much thinner version and made from finer, higher-quality yellow clay instead of coarse red clay. This led to the fact that, around 1620-1625, tiles were no longer just used as floor tiles, but were also sold as wall tiles, featuring various depictions of Chinese gardens, and later also scenes from daily life with main motifs such as flowers, flower vases, various animals, mythical creatures, insects, birds, portraits, riders and soldiers, and later also trades, cupids, and children’s games. Tiles depicting children's games in blue-and-white design were first circulated in 1630. By the mid-17th century, around 1650, a series of children’s game tiles were made in Rotterdam. Early children’s game tiles featured large figures. Soon after, a series of children's game tiles with 48 different depictions appeared in Rotterdam, with a spider motif in the corners. The spider became a popular corner motif from the second half of the 17th century, as it was easy to make and remained in circulation until the 20th century. A contemporary tile tableau by Tinus Vermeersch (MSK/1237) evokes the memory of similar Delft and Northern Dutch tiles from the 17th and 18th centuries.;What was your favorite game when you were a child?;tegel-faience-noord-nederland-18de-eeuw-mos-5161
37
+ 15;MSK_1199;Abby;Photograph;;Titus;;Ostende;boy;Lonely, Isolated, empty;Since 2011, Titus Simoens has been working on a series about students living under strict school regimes. In Blue, see, we see the boys from the Ostend maritime school IBIS. In the photo series Mount Song, Simoens shows the students of a Chinese kung fu school. The final part, Los Domadores, takes place in a boxing school in Cuba. In these school lives, an intense discipline brings order to the days, and the years are spent on specialized training that aims to offer the students future prospects. Simoens captures the small moments of doubt, camaraderie, loneliness, and joy in which these young people momentarily escape the heavy obedience required of them. This photo is part of the documentary series Blue, see, about the lives of children at the Ibis Maritime School in Ostend. The Ibis School is a boarding school for children with behavioral problems or difficult home situations. These children are trained to become fishermen or sailors. The training helps them develop more discipline and provides structure to their lives. The series shows the institutionalized lives of boys who share the same fate, becoming almost like family to one another. Despite the strict visual language, Titus manages to tell a human story, contrasting the camaraderie with the Spartan conditions of their training. The photo was used as the cover for Rats (2012) by the Kortrijk band Balthazar. Titus Simoens (1985) won the Nikon Young Promising Award in 2012. His work appears in numerous Belgian and international media and is exhibited in various museums. In 2014, he won the Monography Series Award from Nikon and Bozar, resulting in a solo exhibition at the Palais des Beaux-Arts in Brussels. That year, he was also featured in an episode of De Canvasconnectie on Canvas.;;
38
+ 16;MSK_0449;Abby;Painting;19th century;Louis, Pierre;;;Little girl, painting, dress, flowers, pink, furniture;"Curious
39
+ Playful";Portrait of a girl, a child of the wealthy, rummaging through the drawer of a chest of drawers. In a typical bourgeois interior, the work provides an intimate insight into the daily life of the middle class. Louis Pierre Verwee (1804 – 1877) is the father of the renowned animal painter Alfred Verwee. He was a student of J.B. De Jonghe and Eugène Verboeckhoven. He mainly painted animal scenes and winter landscapes.;And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;nieuwsgierigheid-msk-0449
40
+ 17;MSK_0235;Abby;Painting;19th century;Albert;;;Children, beach, poppet, holiday's, umbrella, sailing boat, sea;"Playful
41
+ Happy";Summer genre scene with two bourgeois children on the beach. Albert Roosenboom (Rotterdam 1845 – Ixelles 1893) was a student of Jean-Baptiste Meunier. He frequently painted women and, especially, children from the upper class, in bourgeois interiors or civilized surroundings;What was your favourite game when you were a child?;strandtoneel-msk-0235
42
+ 18;MSK_0317;Abby;Sculpture;19th century;Constant;;;Litte boy, child, drum, sleeping, white, marble, sculpture, instrument;Peaceful;The marble sculpture 'Child Sleeping on His Drum' is an anecdotal, yet very skillfully executed work, fitting within the 19th-century tradition of sculpting sleeping children. It is the work of Constant Devreese (1823–1900) from 1880, a native of Kortrijk. Constant Devreese was the father of Godfried Devreese, who is best known for creating the Groeninge Monument;Do you have childhood memories of waking up at night because of a nightmare? Or what was a memorable good dream you remember still?;kind-slapend-op-zijn-trommel-msk-0317
43
+ 19;MSK_0337;Abby;Painting;19th century;Harald, Bertrand;;;Snow, children, game, village, broter, sister, painting;Playful, happy, dissaproving, skeptical, excited;A genre scene in a Norwegian snow landscape. A suspicious girl, holding hands with a boy, is coming from school: two boys are ready to pelt them with snowballs.;What was your favourite game when you were a child?;winterlandschap-met-kinderen-msk-0337
44
+ 20;MSK_0335;Abby;Painting;19th century;Henri;;;Little boy, book, dog, hat, reading, painting;Peaceful, interested, Sad, perplexed;"Genre scene of a boy sitting on a wooden floor. He is reading a book, surrounded by various objects; a white dog watches. Henri Baekelandt (1834 – 1855) was a student at the Academy of Kortrijk and was seen as a promising portrait and genre painter until his early death.";And You? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;lezend-kind-msk-0335
45
+ 21;JL.2022.0.22;Maison des collections, Ville de Mons;Hand written paper note;1803;Sophie, Félicité;09/10/2025;Cuesmes;Signe de reconnaissance, feuille de papier, enfant trouvé, nourrice, bébé, abandon;Sad, preplexed;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
46
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.22
47
+ 22;JL.2022.0.23;Maison des collections, Ville de Mons;Hand written paper note;1802;Nicolas;07/01/2025;;Signe de reconnaissance, billet de papier, ruban, enfant déposé, bons soins, bébé;hopeful, loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
48
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.23
49
+ 23;JL.2022.0.24;Maison des collections, Ville de Mons;Engraving;1834;Michel, Cécile;;Paris;Signe de reconnaissance, gravure, martyr;Sad, perplexed,;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
50
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons. + Michel Corneille?";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.24
51
+ 24;JL.2022.0.25;Maison des collections, Ville de Mons;Printed sheet;1800-1850;Pierre;;Tournai;Signe de reconnaissance, prière, vierge, Notre-dame, livre, page, impression;Sad, perplexed,;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
52
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons. + explication prière";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.25
53
+ 25;JL.2022.0.26;Maison des collections, Ville de Mons;Rubans;1800-1850;;;;Signe de reconnaissance, rubans, tissu;Sad, perplexed,;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
54
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.26
55
+ 26;JL.2022.0.27;Maison des collections, Ville de Mons;Hand written paper note;1800-1850;Constant;;;Signe de reconnaissance, morceau de tissu, billet de papier, enfant, mère, père, abandon, orphelin;Sad, worried, lonely;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
56
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Can you remember a childhood memory involving an important letter or note ? Can you share your story?;MAR-BVM-7-2022.0.27
57
+ 27;JL.2022.0.28;Maison des collections, Ville de Mons;painted Drawing;1834;Dorothée, Joseph;;;Signe de reconnaissance, palme, fleurs, couleurs, encre, femme,;worried;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
58
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons. + explication Icono";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.28
59
+ 28;JL.2022.0.29;Maison des collections, Ville de Mons;Hand written paper note;1813;Armand;;;Signe de reconnaissance, ruban, garçon, hospice, billet de papier, enfant déposé;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
60
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.29
61
+ 29;JL.2022.0.30;Maison des collections, Ville de Mons;watercolor;1823;Jean, Baptiste, Octave;19/03/2025;;Signe de reconaissance, aquarelle, crucifix, baptème, hospice, bons soins;hopeful, loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
62
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.30
63
+ 30;JL.2022.0.31;Maison des collections, Ville de Mons;hand written page of paper;1790;Eugénie, Sophie;29/07/2025;;Signe de reconnaissance, enfant, nourrice, baptème, papier, sceau de cire;hopeful, loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
64
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.31
65
+ 31;JL.2022.0.32;Maison des collections, Ville de Mons;Hand written paper note;1797;Marie-Thérèse;11/04/2025;;Signe de reconnaissance, sceau de cire, ruban ligné, tissu, billet de papier, enfant, récompense, bons soins;hopeful, thankful,;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
66
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.32
67
+ 32;JL.2022.0.33;Maison des collections, Ville de Mons;hand written document;1804;Joseph;31/07/2025;;Signe de reconnaissance, tissu, papier, triangle;thankful, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
68
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.33
69
+ 33;JL.2022.0.35;Maison des collections, Ville de Mons;hand written page of paper;1819;Nicolas, Louis;;;Signe de reconnaissance, morceau de tissu, rayures, triangle, lettres brodées, bons soins, nourrice, baptème;hopeful, loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
70
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.35
71
+ 34;JL.2022.0.36;Maison des collections, Ville de Mons;Printed sheet;1816;Arnould;;;Signe de reconnaissance, extrait, patron des brasseurs, saint, image, bleu, orange, église, brasserie, texte imprimé;sad, curious;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
72
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you, when you were a child, did you have a saint, a relative or a character, real or imaginary, invoked by your parents or grandparents to protect you?;MAR-BVM-7-2022.0.36
73
+ 35;JL.2022.0.38;Maison des collections, Ville de Mons;Engraving;1824;Louise;;;Signe de reconnaissance, gravure, bleu, saint;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
74
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you, when you were a child, did you have a saint, a relative or a character, real or imaginary, invoked by your parents or grandparents to protect you?;MAR-BVM-7-2022.0.38
75
+ 36;JL.2022.0.40;Maison des collections, Ville de Mons;Medal;1800-1850;;;Rome;Signe de reconnaissance, médaille, métal, collier, cadeau, famille, Italie;loving, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
76
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.40
77
+ 37;JL.2022.0.42;Maison des collections, Ville de Mons;Sheet of paper;1826;Agathe;;;Signe de reconnaissance, papier, découpe, bordure en zig-zag, cercle;sad, creative, curious;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
78
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.42
79
+ 38;JL.2022.0.43;Maison des collections, Ville de Mons;wood case;1815;;;;Signe de reconnaissance, message, étui, bois, décor, précieux, ivoir, pendentif,;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
80
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.43 / MAR-BVM-7-2022.0.43-45
81
+ 39;JL.2022.0.46;Maison des collections, Ville de Mons;Hand written paper note;1834;Paul;;;Signe de reconnaissance, billet de papier, découpe, cercle, baptème;sad, hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
82
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.46
83
+ 40;JL.2022.0.47;Maison des collections, Ville de Mons;Hand written paper note;1823;;25/06/2025;;Signe de reconnaissance, tissu brodé, bons soins, enfant déposé;hopeful;"Les bébés que l'on plaçait dans le tour étaient accompagnés de ""signes de reconnaissance"". On épinglait aux langes de l'enfant soit une image pieuse, soit une carte à jouer, soit une médaille ou un ruban, mais l'objet était toujours découpé de façon irrégulière et le-ou les - parents en conservaient l'autre moitié. Ceci indique clairement que c'était généralement à contrecœur que l'on se résignait à l'abandon, avec l'espoir de pouvoir récupérer l'enfant plus tard, dans des temps meilleurs. Le signe de reconnaissance est très souvent accompagné d'un papier plié contenant un message écrit émouvant : on donne le nom de baptême de l'enfant et on supplie d'en prendre soin.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-47
84
+ 41;JL.2022.0.48;Maison des collections, Ville de Mons;Piece of fabric;1814;;11/10/2025;;Signe de reconnaisance, message, manuscrit, tissu brodé, triangle, tonneau, baptème, bonnet, chemise, rouge, violet, bleu, blanc, enveloppe;sad, hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
85
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you have a childhood memory linked to a special piece of clothe of yours or a uniform you were wearing when you were little ?;MAR-BVM-7-2022.0.48
86
+ 42;JL.2022.0.49;Maison des collections, Ville de Mons;Engraving;1818;Claire;01/05/2025;;Signe de reconnaissance, message, vert, rouge, couleurs, crucifix, enfant déposé, récompense;hopeful, thankful, devotion, awe;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
87
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.49
88
+ 43;JL.2022.0.50;Maison des collections, Ville de Mons;medal;1814;Sophie, Benoit, Ghislain;;Saint-Ghislain;Signe de reconnaisance, message, baptème, médaille, présent, abbé, Saint Benoit, enfant;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
89
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.50
90
+ 44;JL.2022.0.52;Maison des collections, Ville de Mons;Piece of Fabric;1816;;;;Signe de reconnaissance, jarretière, soie, devise, parents, amour, tissu;loving, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
91
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.52
92
+ 45;JL.2022.0.54;Maison des collections, Ville de Mons;Engraving;1818;;11/12/2025;Walcourt;Signe de reconnaissance, triangle, papier, gravure, couleurs, bleu, orange, cheval, arbre, Vierge, prière, garcon, bons soins;worried, loving, curious;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
93
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.54
94
+ 46;JL.2022.0.58;Maison des collections, Ville de Mons;pious image;1817;Louis;;;Signe de reconnaissance, anges, enfant déposé, image, couleurs;thankful, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
95
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.58
96
+ 47;JL.2022.0.59;Maison des collections, Ville de Mons;Playing card;1800-1850;Cesar;;;Signe de reconnaissance, carte, jeu de société, jeux, roi, carreaux;hopefull, sad, playful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
97
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";What was your favorite game when you were a child?;MAR-BVM-7-2022.0.59
98
+ 48;JL.2022.0.60;Maison des collections, Ville de Mons;pious image;1800-1851;Georges;;;Signes de reconnaissance, image, couleurs, anges, enfant, Saint-Georges;hopeful, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
99
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you, when you were a child, did you have a saint, a relative or a character, real or imaginary, invoked by your parents or grandparents to protect you?;MAR-BVM-7-2022.0.60
100
+ 49;JL.2022.0.62;Maison des collections, Ville de Mons;Engraving;1816;Gustave, Joseph, Jean;27/07/2025;;Signes de reconnaissance, gravure, lion, épée, oiseau, martyr, enfant;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
101
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.62
102
+ 51;JL.2022.0.67;Maison des collections, Ville de Mons;Printed book page;1820;Joseph, Joachim, Anna, Marie;;;Signe de reconnaissance, image, famille, prière,;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
103
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? What was your childhood like? Happy, Sad, boring? Would you like to share one memorable memory from your childhood?;MAR-BVM-7-2022.0.67
104
+ 52;JL.2022.0.74;Maison des collections, Ville de Mons;Piece of fabric;1800-1850;Désirée, Eloi;;;Signe de reconnaissace, tissu ligné, baptème, message;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
105
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.74
106
+ 53;JL.2022.0.75;Maison des collections, Ville de Mons;Hand written note;1767;Guillaume;16/04/2025;;Signe de reconnaissance, baptème, papier, message, moitié;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
107
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.75
108
+ 54;JL.2022.0.76;Maison des collections, Ville de Mons;Hand written note;1813;Antoine;;;Signe de reconnaissance, soldat, papier;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
109
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.76
110
+ 55;JL.2022.0.78;Maison des collections, Ville de Mons;Piece of fabric;1812;Alexandrine, Françoise;26/02/2025;;Signe de reconnaissance, ruban, trèfles, baptème, enfant, jaune;loving, worried;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
111
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.78
112
+ 56;JL.2022.0.80.2;Maison des collections, Ville de Mons;Handwritten note;1822;Henri;31/03/2025;;Signe de reconnaissance, mouchoir, baptème, enfant, message, billet de papier, tissu rouge;loving, worried;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
113
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.80.1 / MAR-BVM-7-2022.0.80.2
114
+ 57;JL.2022.0.81;Maison des collections, Ville de Mons;Ribon;1815;Marie, Emilie, Françoise;01/10/2025;;Signe de reconnaissance, fille, nourrice, baptème, bons soins, ruban;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
115
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.81 - 2022.0.81
116
+ 58;JL.2022.0.82;Maison des collections, Ville de Mons;pious image;1830;Nicolas, Bernard;;;Signe de reconnaissance, enfants, bassine, arbre, bleu, dorure, anges;sad, curious;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
117
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";What's your best childhood memory linked with a celebration like Saint-Nicolas's day or christmas?;MAR-BVM-7-2022.0.82 - 2022.0.82
118
+ 59;JL.2022.0.83;Maison des collections, Ville de Mons;small bag;1833;;;;Signe de reconnaissance, objet précieux, pochette, tissu, etiquette, bleu,;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
119
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.83 - 2022.0.83
120
+ 60;JL.2022.0.84;Maison des collections, Ville de Mons;fabric and locket;1816;Benoit, Ghislain;;Saint-Ghislain;Signe de reconnaissance, tissu, rouge, fleurs, médaillon, Saint, pendentif, métal;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
121
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.84 - 2022.0.84
122
+ 61;JL.2022.0.85;Maison des collections, Ville de Mons;crucifix and locket;1800-1850;Benoit, Ghislain;;Saint-Ghislain;Signe de reconnaissance, crucifix, crois, christ, metal, saint, abbé, médaillon, pendentif;loving, sad, devotion, awe;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
123
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.85
124
+ 62;JL.2022.0.86;Maison des collections, Ville de Mons;locket;1837;Jeanne, Françoise, Chantal;;;Signe de reconnaissance, sainte, femme, doré, sœur, médaillon,;loving, sad, devotion, awe;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
125
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons. + explication Sainte jeanne-Françoise de chantal";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.86
126
+ 63;JL.2022.0.88;Maison des collections, Ville de Mons;locket;1800-1850;;;;Signe de reconnaissance, médaillon, métal, pendentif, cerf, vierge, cadeau;sad, devotion, awe;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
127
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.88
128
+ 64;JL.2022.0.80;Maison des collections, Ville de Mons;Piece of fabric;1813;;;;Signe de reconnaissance, tissu, décors, bruns, feuilles, entrelats, feuillage;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
129
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.80.1 / MAR-BVM-7-2022.0.80.2
130
+ 65;JL.2022.0.91;Maison des collections, Ville de Mons;pious image;1800-1850;Sophie;;;Signe de reconnaissance, bleu, vert, rouge, baptème;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
131
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-91-001
132
+ 66;JL.2022.0.95;Maison des collections, Ville de Mons;Piece of Printed sheet;1818;;07/06/2025;Liège;Signe de reconnaissance, billet de papier, baptème texte;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
133
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.95.001/MAR-BVM-7-2022.0.95.002
134
+ 67;JL.2022.0.96;Maison des collections, Ville de Mons;Hand written note;1800-1850;Marie, Aldegonde;28/07/2025;;Signe de reconnaissance, billet de papier, ruban, blanc,soie;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
135
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.96
136
+ 68;JL.2022.0.97;Maison des collections, Ville de Mons;Hand written note;1829;Virginie,;12/08/2025;;Signe de reconnaissance, billet de papier découpé, vagues, découpe,;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
137
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.97 -001
138
+ 69;JL.2022.0.97b;Maison des collections, Ville de Mons;Printed image;1818;Lucie;;;Signe de reconnaissance,image imprimée, moitié, triangle, papier;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
139
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.97.003
140
+ 70;JL.2022.0.99;Maison des collections, Ville de Mons;painted drawing on paper;1814;;;;Signe de reconnaissance, découpe, papier, feuillages, couleurs, peinture, bleu, enfant, christ, père,;loving, amazed;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
141
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.99
142
+ 71;JL.2022.0.100;Maison des collections, Ville de Mons;Printed image;1818;Charles, Rose;;;Signes de reconnaissance, papier, saint, feuillage, fleurs, découpe, vague, moitié;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
143
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.100 -
144
+ 72;JL.2022.0.105;Maison des collections, Ville de Mons;Playing card;1890;;;;Signe de reconnaissance, carte, jeu de société, dame, cœur, rouge;playful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
145
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";What was your favorite game when you were a child?;MAR-BVM-7-2022.0.105
146
+ 73;JL.2022.0.123;Maison des collections, Ville de Mons;pious image;1800-1850;;;;Signe de reconnaissance, annonciation, femme, papier, découpe, zig-zag;loving, surprised;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
147
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.123
148
+ 74;JL.2022.0.125;Maison des collections, Ville de Mons;pious image;1816;Flore, Marc;;;Signe de reconnaissance, papier, image imprimée, saint, lion, triangle, découpe, moitié;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
149
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.125
150
+ 75;JL.2022.0.128;Maison des collections, Ville de Mons;drawing;1816;;;;Signe de reconnaissance, papier, aquarelle, couleurs, vert, orange, bleu, fleurs, découpe, moitié, triangle;creative, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
151
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.128
152
+ 76;JL.2022.0.130;Maison des collections, Ville de Mons;printed image;1815;;;;Signe de reconnaissance, papier, moitié, anges, cœur, croix;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
153
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.130
154
+ 77;JL.2022.0.131;Maison des collections, Ville de Mons;printed image;1815;Rosalie;;;Signe de reconnaissance, femme, bleu, papier, couleurs, moitié, triangle;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
155
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-131 - 2022.0.131 / MAR-BVM-7-2022.0.131
156
+ 78;JL.2022.0.132;Maison des collections, Ville de Mons;Piece of fabric;1800-1850;;;;Signe de reconnaisance, entrelats, tissu, tissage, impression, angelots, feuillage, couronne;creative, sensitive;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
157
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.132
158
+ 79;JL.2022.0.133;Maison des collections, Ville de Mons;Piece of fabric;1813;Zoé, Hélène;05/10/2025;;Signe de reconnaissance, note manuscrite, bons soins, tissu, récompense, baptème, enfant;hopeful, thankful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
159
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.133
160
+ 80;JL.2022.0.134;Maison des collections, Ville de Mons;Piece of fabric;1813;Eugénie;14/10/2025;;Signe de reconnaissance, billet de papier, message, tissu, fleurs, blanc, baptème;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
161
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.134
162
+ 81;JL.2022.0135;Maison des collections, Ville de Mons;Printed image;1815;Alexandrine, Sophie;04/03/2025;;Signe de reconnaissance, image imprimée, saint, papier, moitié, rouge, anges, baptème,;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
163
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.135
164
+ 82;JL.2022.0.136;Maison des collections, Ville de Mons;Hand written note;1838;Julie;10/06/2025;;Signe de reconnaissance, enfant déposé, baptème, papier, découpe,;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
165
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-136
166
+ 83;JL.2022.0.138;Maison des collections, Ville de Mons;pious image;1816;Juliette;26/07/2025;;Signe de reconnaissance, moitié, papier, image imprimée, couleurs, colombe, vierge, femme, bleu, rose, rouge, ruban blanc, baptème, enfant;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
167
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-138
168
+ 84;JL.2022.0.139;Maison des collections, Ville de Mons;Piece of fabric;1820;;;;Signe de reconnaissance, tissu, rouge, motifs, fleurs, bleu;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
169
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-139
170
+ 85;JL.2022.0.143;Maison des collections, Ville de Mons;Ribon;1802;Geneviève;16/10/2025;;Signe de reconnaissance, billet de papier, ruban, tissu, enfant trouvé;sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
171
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.143
172
+ 86;JL.2022.0.145;Maison des collections, Ville de Mons;Hand written note;1802;Adrien;16/05/2025;;Signe de reconnaissance, billet de papier, ruban, noir,;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
173
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.145
174
+ 87;JL.2022.0.147;Maison des collections, Ville de Mons;Piece of fabric;1800-1850;;;;Signe de reconnaissance, tissu, broderie, fleurs, motifs, rouge, blanc;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
175
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.147
176
+ 88;JL.2022.0.148;Maison des collections, Ville de Mons;pious image;1800-1851;;;;Signe de reconnaissance, famille, père, mère, moitié, couleurs, vert, panier, végétaux, chérubin, papier, impression;loving, devotion;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
177
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.148
178
+ 89;JL.2022.0.149;Maison des collections, Ville de Mons;crucifix;1800-1852;;;;Signe de reconnaissance, metal, pendentif, crucifix, christ, vierge, croix;loving, devotion;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
179
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.149
180
+ 90;JL.2022.0.153;Maison des collections, Ville de Mons;piece of fabric;1804;Barthelemy, Joseph;;Ixelles;Signe de reconnaissance, ruban, rond, billet papier, baptème, enfant,;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
181
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-2022-0-153
182
+ 91;JL.2022.0.154;Maison des collections, Ville de Mons;piece of fabric;1802;Laurent;;;Signe de reconnaissance, tissu, lignes, rayures, brun, enfant, billet de papier, baptème;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
183
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.154
184
+ 92;JL.2022.0.155;Maison des collections, Ville de Mons;piece of fabric;1800-1850;;;;Signe de reconnaissance, végétal, tissu, noir, feuilles, rouge, fleurs, motifs, billet de papier, enfant, bonne nourrice, récompense;hopeful, thankful, loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
185
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.155
186
+ 93;JL.2022.0.156;Maison des collections, Ville de Mons;locket;1800-1850;Benoit, Ghislain;;Saint-Ghislain;Signe de reconnaissance, cheveux, souvenirs, médaillons, métal, saint, pendentif, abbé;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
187
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.156
188
+ 94;JL.2022.0.161;Maison des collections, Ville de Mons;Piece of fabric;1800-1850;Françoise;;;Signe de reconnaissance, tissu, message, billet de papier, rouge, triangle, pois, nourrice, bons soins, enfant, récompense;thankful, sad;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
189
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.161
190
+ 95;JL.2022.0.165;Maison des collections, Ville de Mons;handwritten note;1800-1850;Joseph;;;Signe de reconnaissance, billet de papier, baptème, nom, moitié;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
191
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-165 / MAR-BVM-7-2022.0.165
192
+ 96;JL.2022.0.170;Maison des collections, Ville de Mons;Drawing;1800-1850;;;;Signe de reconnaissance, papier, saints, épée, rouge, moitié, baptème;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
193
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-170
194
+ 97;JL.2022.0.175;Maison des collections, Ville de Mons;Piece of fabric;1801;François, Louis;28/11/2025;;Signe de reconnaissance, tissu, damier rouge, billet de papier;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
195
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-175
196
+ 98;JL.2022.0.179;Maison des collections, Ville de Mons;pious image;1801;Charlotte, Colette;;;Signe de reconnaissance, papier, serpent, bleu, moitié, baptème, enfant;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
197
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-179
198
+ 99;JL.2022.0.180;Maison des collections, Ville de Mons;Playing card;1800-1850;Victoire;13/03/2025;;Signe de reconnaissance, valet de cœur,carte, jeu de société, menthe, moitié;hopeful, playful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
199
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";What was your favourite game when you were a child?;MAR-BVM-7-2022-0-180
200
+ 100;JL.2022.0.182;Maison des collections, Ville de Mons;Playing card;1800-1850;Marie, Joseph;;;Signe de reconnaissance, carte, jeu de société, pique, noir, moitié, vague, découpe, baptème;hopeful, payful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
201
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";What was your favourite game when you were a child?;MAR-BVM-7-2022-0-182
202
+ 101;JL.2022.0.191;Maison des collections, Ville de Mons;Engraving;1802;;27/04/2025;;Signe de reconnaissance, moitié, femme, couronne, collier, papier, bons soins, enfant,;thankful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
203
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-191
204
+ 102;JL.2022.0.192;Maison des collections, Ville de Mons;pious image;1802;Charles;;;Signe de reconnaissance, christ, croix, enfant, bleu, papier, baptème, reconnaissance, bons soins;thankful, devotion, awe;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
205
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-192
206
+ 103;JL.2022.0.196;Maison des collections, Ville de Mons;Printed image;1800-1850;Michiel, Eloi;;;Signe de reconnaissance, homme, couleurs, rouge, vert, bleu, épée, bonnet, gravure, moitié, bonté;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
207
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-196
208
+ 104;JL.2022.0.200;Maison des collections, Ville de Mons;drawing;1800-1850;Andreas, Gabrielle;;;Signe de reconnaissance, fleurs, couleurs, roses, vert, moitié, papier, nourrice, directrice,;worried, thankful, creative;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
209
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-200
210
+ 105;JL.2022.0.201;Maison des collections, Ville de Mons;drawing;1800-1850;Pauline;;;Signe de reconnaissance, dessins, papier, couleurs, rose, vert, rouge, œillets, fleurs, moitié, découpe, vague, feuillage, entrelats;hopeful, creative;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
211
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-201
212
+ 106;JL.2022.0.204;Maison des collections, Ville de Mons;pious image;1800-1850;Louis;;;Signe de reconnaissance, palme, coleurs, vert, rouge, saint, moitié, enfant;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
213
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-204
214
+ 107;JL.2022.0.206;Maison des collections, Ville de Mons;pious image;1800-1850;Joséphine;;;Signe de reconaissance, moitié, papier, couleurs, anges, chérubins, entrelats, vert, bleu, enfant, baptème,;worried, hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
215
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-206
216
+ 108;JL.2022.0.212;Maison des collections, Ville de Mons;drawing;1802;Adelaide;;;Signe de reconnaissance, papier, couleurs, roses, fleurs, feuillage, bleu, rouge, vert, entrelats, moitié;hopeful, creative,;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
217
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-212
218
+ 109;JL.2022.0.224;Maison des collections, Ville de Mons;Engraving;1800-1850;;;;Signe de reconnaissance, gravure, papier, prière, cœur, moitié, bons soins;hopeful, worried;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
219
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-224
220
+ 110;JL.2022.0.225;Maison des collections, Ville de Mons;Playing card;1800-1850;Charles;;;Signe de reconnaissance, carte, carreaux, rouge, moitié, jeu de société,;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
221
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022-0-225
222
+ 111;JL.2022.0.233;Maison des collections, Ville de Mons;pious image;1807;Joseph, Gabriel;16/04/2025;;Signe de reconnaissance, papier, gravure, anges, reprise, espoir, mère, réunion;joyful, curious;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
223
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you have any childhood memories of reunions with loved ones?;MAR-BVM-7-2022-0-233
224
+ 112;JL.2022.0.234;Maison des collections, Ville de Mons;drawing;1800-1850;;;;Signe de reconnaissance, papier, couleurs, moitié, reprise, cœur, fleurs, rose, bouquet, réunion;joyful, creative;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
225
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you have any childhood memories of reunions with loved ones?;MAR-BVM-7-2022-0-234
226
+ 113;JL.2022.0.235;Maison des collections, Ville de Mons;pious image;1800-1850;Elisabeth;;;Signe de reconnaissance, gravure, sainte, couleurs, feuillages, arbres, papier, moitié, réunion, baptème;Joyful, creative;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
227
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you have any childhood memories of reunions with loved ones?;MAR-BVM-7-2022-0-235
228
+ 114;JL.2022.0.238;Maison des collections, Ville de Mons;Printed sheet;1800-1850;Henri, Victor;02/07/2025;;Signe de reconnaissance, papier, livre, fleurs, moitié, réunion, saint, imprimeur, libraire, adoration, anges;joyful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
229
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you have any childhood memories of reunions with loved ones?;MAR-BVM-7-2022.0.238
230
+ 115;JL.2022.0.247;Maison des collections, Ville de Mons;baby hat;1800-1850;;;;Signe de reconnaissance, vêtement, tissu, couleurs, broderie, fleurs, rouge, bébé,;loving, curious;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
231
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you have a childhood memory linked to a special piece of clothe of yours or a uniform you were wearing when you were little ?;MAR-BVM-7-2022-0-247
232
+ 116;JL.2022.0.256;Maison des collections, Ville de Mons;bracelet;1800-1850;;;;Signe de reconnaissance, bracelet, bijoux, pierre, bleu;loving;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
233
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-256 / MAR-BVM-7-2022-0-256
234
+ 117;JL.2022.0.37.1;Maison des collections, Ville de Mons;Hand written note;1812;Waudru;25/05/2025;;Signe de reconnaissance, billet de papier, mère, bureau de bienfaisance, petite fille, nourrice, bons soins, reconnaissance, amour, parent, moitié, image, batpème,;loving, sad, thankful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
235
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-37-1-001 / MAR-BVM-7-2022-0-37-1-002
236
+ 118;JL.2022.0.37.2;Maison des collections, Ville de Mons;Locket;1800-1850;;04/02/2025;;Signe de reconnaissance, image pieuse, baptème, abbé, médaillon, pendentif, taureau, rouge, bleu, enfant;hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
237
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022-0-37-2 -001 / MAR-BVM-7-2022-0-37-2 -002 / MAR-BVM-7-2022-0-37-3 -002/ MAR-BVM-7-2022-0-37-3 -001
238
+ 119;JL.2022.0.39;Maison des collections, Ville de Mons;Rosary;1818;Louis;24/08/2025;;Signe de reconaissance, prière, chapelet, collier, billet de papier, petit garçon;loving, hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
239
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";And you? Do you keep a special object from your childhood inherited by your parents? Can you share it's story?;MAR-BVM-7-2022.0.39
240
+ 120;JL.2022.0.34.1-3;Maison des collections, Ville de Mons;pious image;1802;Narcisse;;;Signe de reconnaissance, enfant, ville, nourrice, image, moitié, couleurs, rouge, vert, bleu;worried, hopeful;"Signes de reconnaissance : images de piété, assignats, cartes à jouer, etc., coupés en deux fragments : l'un des fragments était attaché aux langes de l'enfant, l'autre était conservé par la mère, pour le cas où elle voulait reprendre l'enfant et justifier son
241
+ identité, par la présentation du fragment correspondant à celui que portait l'abandonné. Cette collection a été léguée par les hospices civils de Mons.";Do you know why your parents choose your name? What's the story behind?;MAR-BVM-7-2022.0.34
README.md CHANGED
@@ -1,12 +1,17 @@
1
  ---
2
- title: CreativUp Demo
3
- emoji:
4
- colorFrom: indigo
5
- colorTo: green
6
  sdk: gradio
7
  sdk_version: 5.44.1
8
  app_file: app.py
9
  pinned: false
 
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
1
  ---
2
+ title: Art Matcher - CreativUp Demo
3
+ emoji: 🎨
4
+ colorFrom: purple
5
+ colorTo: pink
6
  sdk: gradio
7
  sdk_version: 5.44.1
8
  app_file: app.py
9
  pinned: false
10
+ license: mit
11
  ---
12
 
13
+ # Art Matcher - Beta Test
14
+
15
+ Découvrez l'œuvre d'art qui vous correspond dans notre collection !
16
+
17
+ Cette application utilise vos informations personnelles et vos préférences visuelles pour trouver l'œuvre qui vous correspond le mieux.
app.py ADDED
@@ -0,0 +1,1281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Web Demo v2 pour la base de données d'œuvres d'art - Version Sécurisée et Optimisée
4
+ Interface multi-étapes avec matching basé sur prénom, date, ville et émotions
5
+ Optimisé pour les performances avec caching et indexation
6
+ Version sécurisée avec validation des entrées et gestion d'état propre
7
+ """
8
+
9
+ import gradio as gr
10
+ import os
11
+ import sys
12
+ import logging
13
+ import random
14
+ import re
15
+ from datetime import datetime
16
+ from typing import List, Dict, Tuple, Optional, Any, Set
17
+ from collections import Counter, defaultdict
18
+ from functools import lru_cache
19
+ from dataclasses import dataclass, field
20
+ import pandas as pd
21
+
22
+ logging.basicConfig(
23
+ level=logging.INFO,
24
+ format="[%(asctime)s] %(levelname)s: %(message)s",
25
+ datefmt="%Y-%m-%d %H:%M:%S",
26
+ )
27
+ logger = logging.getLogger(__name__)
28
+
29
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src"))
30
+
31
+ from art_pieces_db.database import Database
32
+ from art_pieces_db.query import TargetProfile, WeightedLeximaxOptimizer, Optimizer
33
+ from art_pieces_db.emotions import EmotionWheel
34
+ from art_pieces_db.utils import str_to_date
35
+
36
+
37
+ @dataclass
38
+ class ScoringWeights:
39
+ """Centralise toutes les constantes de scoring pour éviter les magic numbers"""
40
+
41
+ PRESELECTION_NAME_WEIGHT: float = 3.0
42
+ PRESELECTION_DATE_WEIGHT: float = 1.0
43
+ PRESELECTION_PLACE_WEIGHT: float = 2.0
44
+ PRESELECTION_EMOTION_WEIGHT: float = 0.0
45
+
46
+ MIN_PRESELECTION_COUNT: int = 20
47
+ MAX_IMAGES_PER_SELECTION: int = 3 # nombre d'images par sélection
48
+ TOTAL_ROUNDS: int = 3 # nombre de rounds avant la recommandation finale
49
+
50
+
51
+ @dataclass
52
+ class SessionState:
53
+ """Gère l'état de session"""
54
+
55
+ firstname: str = ""
56
+ birthday: str = ""
57
+ city: str = ""
58
+
59
+ current_round: int = 0
60
+ selected_images: List[str] = field(default_factory=list)
61
+ current_image_ids: List[str] = field(default_factory=list)
62
+
63
+ preselected_pieces: Optional[pd.DataFrame] = None
64
+
65
+ def reset(self):
66
+ """Réinitialise l'état de session"""
67
+ self.firstname = ""
68
+ self.birthday = ""
69
+ self.city = ""
70
+ self.current_round = 0
71
+ self.selected_images = []
72
+ self.current_image_ids = []
73
+ self.preselected_pieces = None
74
+
75
+ def is_complete(self) -> bool:
76
+ """Vérifie si la sélection est complète"""
77
+ return self.current_round >= ScoringWeights.TOTAL_ROUNDS
78
+
79
+
80
+ class SecurityValidator:
81
+ """Classe pour centraliser les validations de sécurité"""
82
+
83
+ PATH_TRAVERSAL_PATTERN = re.compile(r"\.\.|\.\/")
84
+ VALID_FILENAME_PATTERN = re.compile(r"^[\w\-\.\s]+$")
85
+ VALID_INPUT_PATTERN = re.compile(
86
+ r"^[\w\-\s\'\.,àâäéèêëïîôûùüÿæœçÀÂÄÉÈÊËÏÎÔÛÙÜŸÆŒÇ]+$", re.UNICODE
87
+ )
88
+ DATE_PATTERN = re.compile(r"^\d{1,2}/\d{1,2}$")
89
+
90
+ @classmethod
91
+ def validate_filename(cls, filename: str) -> bool:
92
+ """Valide qu'un nom de fichier est sécurisé"""
93
+ if not filename:
94
+ return False
95
+
96
+ # Vérifier les tentatives de path traversal
97
+ if cls.PATH_TRAVERSAL_PATTERN.search(filename):
98
+ logger.warning(f"Tentative de path traversal détectée: {filename}")
99
+ return False
100
+
101
+ # Vérifier que le nom ne contient que des caractères autorisés
102
+ base_name = os.path.basename(filename)
103
+ if not cls.VALID_FILENAME_PATTERN.match(base_name):
104
+ logger.warning(f"Nom de fichier invalide: {filename}")
105
+ return False
106
+
107
+ return True
108
+
109
+ @classmethod
110
+ def sanitize_input(cls, input_str: str, max_length: int = 100) -> str:
111
+ """Nettoie et valide une entrée utilisateur"""
112
+ if not input_str:
113
+ return ""
114
+
115
+ # Tronquer si trop long
116
+ input_str = input_str[:max_length].strip()
117
+
118
+ if not cls.VALID_INPUT_PATTERN.match(input_str):
119
+ # Garder seulement les caractères valides
120
+ cleaned = "".join(c for c in input_str if cls.VALID_INPUT_PATTERN.match(c))
121
+ logger.info(f"Input sanitized: '{input_str}' -> '{cleaned}'")
122
+ return cleaned
123
+
124
+ return input_str
125
+
126
+ @classmethod
127
+ def validate_date(cls, date_str: str) -> Tuple[bool, Optional[datetime]]:
128
+ """Valide et parse une date au format JJ/MM"""
129
+ if not date_str:
130
+ return False, None
131
+
132
+ if not cls.DATE_PATTERN.match(date_str):
133
+ return False, None
134
+
135
+ try:
136
+ day, month = map(int, date_str.split("/"))
137
+ if not (1 <= day <= 31 and 1 <= month <= 12):
138
+ return False, None
139
+
140
+ date_obj = datetime(year=2000, month=month, day=day)
141
+ return True, date_obj
142
+ except (ValueError, Exception) as e:
143
+ logger.error(f"Erreur de parsing de date: {e}")
144
+ return False, None
145
+
146
+
147
+ class ImageIndexer:
148
+ """Classe pour indexer et mapper les images depuis la base de données CSV"""
149
+
150
+ # Constants for better maintainability
151
+ IMAGE_EXTENSIONS = (".jpg", ".png")
152
+ COMMON_SUFFIXES = [".jpg", ".png", "_medium"]
153
+ MAR_BVM_TEST_SUFFIXES = ["-001", "-002", "-003"]
154
+
155
+ def __init__(self, images_dir: str):
156
+ self.images_dir = os.path.abspath(images_dir)
157
+ self.available_files = set()
158
+ self.image_lookup = {} # normalized_name -> filename
159
+ self.mar_bvm_lookup = {} # Special handling for MAR-BVM files
160
+ self._build_index()
161
+
162
+ def _strip_file_extensions(self, filename: str) -> str:
163
+ """Remove file extensions from filename"""
164
+ base_name = filename.lower()
165
+ if base_name.endswith("_medium.jpg"):
166
+ return base_name[:-11]
167
+ elif base_name.endswith((".jpg", ".png")):
168
+ return base_name[:-4]
169
+ return base_name
170
+
171
+ def _normalize_basic_patterns(self, name: str) -> str:
172
+ """Apply basic normalization patterns"""
173
+ # Remove trailing comma and normalize whitespace
174
+ normalized = name.lower().strip().rstrip(",")
175
+
176
+ # Remove common suffixes
177
+ for suffix in self.COMMON_SUFFIXES:
178
+ if normalized.endswith(suffix):
179
+ normalized = normalized[: -len(suffix)]
180
+
181
+ # Normalize spaces and underscores to dashes
182
+ return re.sub(r"[\s_]+", "-", normalized)
183
+
184
+ def _normalize_mar_bvm_format(self, name: str) -> str:
185
+ """Handle MAR-BVM specific normalization"""
186
+ if "mar-bvm" not in name:
187
+ return name
188
+
189
+ # Replace .0. with -0- and remaining dots with dashes
190
+ return name.replace(".0.", "-0-").replace(".", "-")
191
+
192
+ def _normalize_name(self, name: str) -> str:
193
+ """Normalise un nom pour la comparaison"""
194
+ normalized = self._normalize_basic_patterns(name)
195
+
196
+ # Special handling for MAR-BVM format
197
+ if "mar-bvm" in normalized:
198
+ normalized = self._normalize_mar_bvm_format(normalized)
199
+ # For files starting with year (like 2022.0.86), keep dots
200
+ elif not normalized.startswith("20"):
201
+ normalized = normalized.replace(".", "-")
202
+
203
+ return normalized
204
+
205
+ def _create_mar_bvm_lookups(self, normalized: str, filename: str):
206
+ """Create additional lookup entries for MAR-BVM files"""
207
+ if "mar-bvm" not in normalized:
208
+ return
209
+
210
+ parts = normalized.split("-")
211
+ for i, part in enumerate(parts):
212
+ if part.isdigit() and i >= 5: # After mar-bvm-7-2022-0
213
+ base_key = "-".join(parts[:6]) # mar-bvm-7-2022-0-22
214
+ if base_key not in self.mar_bvm_lookup:
215
+ self.mar_bvm_lookup[base_key] = []
216
+ self.mar_bvm_lookup[base_key].append(filename)
217
+ break
218
+
219
+ def _process_image_file(self, filename: str):
220
+ """Process a single image file for indexing"""
221
+ if not SecurityValidator.validate_filename(filename):
222
+ logger.warning(f"Fichier ignoré pour raison de sécurité: {filename}")
223
+ return
224
+
225
+ if not filename.lower().endswith(self.IMAGE_EXTENSIONS):
226
+ return
227
+
228
+ self.available_files.add(filename)
229
+
230
+ base_name = self._strip_file_extensions(filename)
231
+ normalized = self._normalize_name(base_name)
232
+ self.image_lookup[normalized] = filename
233
+ self._create_mar_bvm_lookups(normalized, filename)
234
+
235
+ def _build_index(self):
236
+ """Construit un index des images disponibles"""
237
+ try:
238
+ all_files = os.listdir(self.images_dir)
239
+ for filename in all_files:
240
+ self._process_image_file(filename)
241
+
242
+ logger.info(
243
+ f"Index des images construit: {len(self.available_files)} fichiers disponibles, "
244
+ f"{len(self.image_lookup)} entrées normalisées"
245
+ )
246
+ except Exception as e:
247
+ logger.error(f"Erreur lors de la construction de l'index: {e}")
248
+ self.available_files = set()
249
+
250
+ def _clean_input_name(self, image_name: str) -> str:
251
+ """Clean and prepare input name for processing"""
252
+ # Basic cleaning
253
+ cleaned = image_name.strip().rstrip(",").rstrip("-").strip()
254
+ # Remove spaces before -001, -002, etc.
255
+ return re.sub(r"\s+(-\d)", r"\1", cleaned)
256
+
257
+ def _normalize_mar_bvm_input(self, image_name: str) -> str:
258
+ """Handle MAR-BVM specific input normalization"""
259
+ if "MAR-BVM" not in image_name:
260
+ return image_name
261
+
262
+ # Handle missing "7-" in MAR-BVM-2022-0-153
263
+ if "MAR-BVM-2022-0-" in image_name:
264
+ image_name = image_name.replace("MAR-BVM-2022-0-", "MAR-BVM-7-2022-0-")
265
+
266
+ # Convert .0. to -0-
267
+ if ".0." in image_name:
268
+ image_name = image_name.replace(".0.", "-0-")
269
+
270
+ # Handle .001, .002 at the end (convert to -001, -002)
271
+ image_name = re.sub(r"\.(\d{3})$", r"-\1", image_name)
272
+
273
+ # Handle .1 or .2 suffix
274
+ if image_name.endswith(".1"):
275
+ image_name = image_name[:-2] + "-1"
276
+ elif image_name.endswith(".2"):
277
+ image_name = image_name[:-2] + "-2"
278
+
279
+ # Replace any remaining dots with dashes (but be careful not to mess up already processed parts)
280
+ return image_name.replace(".", "-")
281
+
282
+ def _try_mar_bvm_lookups(self, normalized: str) -> Optional[str]:
283
+ """Try various MAR-BVM specific lookup strategies"""
284
+ # Check special MAR-BVM lookup
285
+ if normalized in self.mar_bvm_lookup and self.mar_bvm_lookup[normalized]:
286
+ return self.mar_bvm_lookup[normalized][0]
287
+
288
+ # Try with suffix variations
289
+ for suffix in self.MAR_BVM_TEST_SUFFIXES:
290
+ test_pattern = f"{normalized}{suffix}"
291
+ if test_pattern in self.image_lookup:
292
+ return self.image_lookup[test_pattern]
293
+
294
+ return None
295
+
296
+ def _try_year_format_lookup(self, image_name: str) -> Optional[str]:
297
+ """Handle special case for files starting with year"""
298
+ if not image_name.startswith("20"):
299
+ return None
300
+
301
+ test_name = image_name.lower().replace(" ", "-")
302
+ return self.image_lookup.get(test_name)
303
+
304
+ def _try_partial_matching(self, normalized: str) -> Optional[str]:
305
+ """Try partial matching as last resort"""
306
+ for key, filename in self.image_lookup.items():
307
+ if key.startswith(normalized) or normalized in key:
308
+ return filename
309
+ return None
310
+
311
+ def _split_multiple_names(self, image_name: str) -> List[str]:
312
+ """Split image names that contain multiple names separated by commas or slashes"""
313
+ # First try comma separation
314
+ if "," in image_name:
315
+ return [name.strip() for name in image_name.split(",") if name.strip()]
316
+
317
+ # Then try slash separation
318
+ if "/" in image_name:
319
+ return [name.strip() for name in image_name.split("/") if name.strip()]
320
+
321
+ # Handle " - " separation (for cases like "MAR-BVM-7-2022.0.81 - 2022.0.81")
322
+ if " - " in image_name and image_name.count(" - ") == 1:
323
+ parts = [name.strip() for name in image_name.split(" - ")]
324
+ # Only use the first part if they look like duplicates
325
+ if len(parts) == 2:
326
+ first, second = parts
327
+ # Check if second part is a suffix of the first (like duplicate year)
328
+ if first.endswith(second) or second in first:
329
+ return [first]
330
+ return parts
331
+
332
+ return [image_name]
333
+
334
+ def find_image(self, image_name: str) -> Optional[str]:
335
+ """Trouve un fichier image correspondant au nom donné"""
336
+ if not image_name:
337
+ return None
338
+
339
+ # Handle multiple image names in one field
340
+ possible_names = self._split_multiple_names(image_name)
341
+
342
+ # Try each name individually
343
+ for name in possible_names:
344
+ result = self._find_single_image(name)
345
+ if result:
346
+ return result
347
+
348
+ return None
349
+
350
+ def _find_single_image(self, image_name: str) -> Optional[str]:
351
+ """Find a single image by name"""
352
+ # Clean and normalize the input
353
+ cleaned_name = self._clean_input_name(image_name)
354
+ processed_name = self._normalize_mar_bvm_input(cleaned_name)
355
+ normalized = self._normalize_name(processed_name)
356
+
357
+ # Try direct lookup first
358
+ if normalized in self.image_lookup:
359
+ return self.image_lookup[normalized]
360
+
361
+ # Try MAR-BVM specific lookups
362
+ if "mar-bvm" in normalized:
363
+ result = self._try_mar_bvm_lookups(normalized)
364
+ if result:
365
+ return result
366
+
367
+ # Try year format lookup
368
+ result = self._try_year_format_lookup(image_name)
369
+ if result:
370
+ return result
371
+
372
+ # Try partial matching as last resort
373
+ return self._try_partial_matching(normalized)
374
+
375
+ def get_all_files(self) -> Set[str]:
376
+ """Retourne tous les fichiers disponibles"""
377
+ return self.available_files.copy()
378
+
379
+
380
+ class ArtMatcherV2:
381
+ """Classe principale pour le matching d'œuvres d'art"""
382
+
383
+ def __init__(self, csv_path: str, images_dir: str):
384
+ """Initialise le système avec la base de données et le répertoire d'images"""
385
+ self.db = Database(csv_path)
386
+ self.images_dir = os.path.abspath(images_dir)
387
+ self.emotion_wheel = EmotionWheel()
388
+ self.weights = ScoringWeights()
389
+
390
+ self.optimizer_helper = WeightedLeximaxOptimizer(TargetProfile(), {})
391
+
392
+ self.image_indexer = ImageIndexer(images_dir)
393
+
394
+ df = self.db.get_dataframe()
395
+ self.df_with_images = df[
396
+ df["name_image"].notna()
397
+ & (df["name_image"] != "")
398
+ & (df["name_image"].str.strip() != "")
399
+ ].copy()
400
+
401
+ self.df_with_images["database_id_str"] = self.df_with_images[
402
+ "database_id"
403
+ ].astype(str)
404
+ self.id_to_index = {
405
+ str(row["database_id"]): idx for idx, row in self.df_with_images.iterrows()
406
+ }
407
+
408
+ self.artwork_images = self._build_artwork_image_index()
409
+
410
+ self.temp_db_with_images = Database.__new__(Database)
411
+ self.temp_db_with_images.dataframe = self.df_with_images
412
+
413
+ logger.info(f"Base de données chargée: {self.db.n_pieces()} œuvres")
414
+ logger.info(f"Œuvres avec images: {len(self.df_with_images)}")
415
+ logger.info(f"Index des images: {len(self.artwork_images)} œuvres mappées")
416
+
417
+ def _sanitize_input(self, input_str: str) -> str:
418
+ """Nettoie et valide une entrée utilisateur"""
419
+ return SecurityValidator.sanitize_input(input_str)
420
+
421
+ def _parse_date(self, date_str: str) -> Optional[datetime]:
422
+ """Parse une date avec validation"""
423
+ is_valid, date_obj = SecurityValidator.validate_date(date_str)
424
+ return date_obj if is_valid else None
425
+
426
+ def _build_artwork_image_index(self) -> Dict[str, List[str]]:
427
+ """Construit un index artwork_id -> [image_paths] au démarrage"""
428
+ artwork_images = {}
429
+
430
+ for idx, row in self.df_with_images.iterrows():
431
+ artwork_id = str(row["database_id"])
432
+ image_paths = []
433
+
434
+ if row["name_image"] and str(row["name_image"]).strip():
435
+ # Parse the image names - handle special separators
436
+ image_string = str(row["name_image"]).strip().strip('"')
437
+
438
+ # Handle cases with " / " or " - " separators
439
+ if " / " in image_string:
440
+ # Take first part before the slash
441
+ image_string = image_string.split(" / ")[0].strip()
442
+
443
+ # Special case: if it has " - 2022" it's a separator, not part of the name
444
+ if " - 2022" in image_string:
445
+ # Take the part before " - 2022"
446
+ image_string = image_string.split(" - 2022")[0].strip()
447
+ elif " - " in image_string and "MAR-BVM-7-2022-0-" not in image_string:
448
+ # For other MAR-BVM formats with " - " separator
449
+ parts = image_string.split(" - ")
450
+ if "MAR-BVM" in parts[0]:
451
+ image_string = parts[0].strip()
452
+
453
+ # Clean up trailing " -" or spaces before "-001"
454
+ image_string = re.sub(
455
+ r"\s+-\s*$", "", image_string
456
+ ) # Remove trailing " -"
457
+ image_string = re.sub(
458
+ r"\s+(-\d)", r"\1", image_string
459
+ ) # Remove spaces before -001
460
+
461
+ # Parse comma-separated list
462
+ images = [
463
+ img.strip()
464
+ for img in re.split(r"[,/]", image_string)
465
+ if img.strip()
466
+ ]
467
+
468
+ for img_name in images:
469
+ # Find the actual file for this image name
470
+ matched_file = self.image_indexer.find_image(img_name)
471
+ if matched_file:
472
+ img_path = os.path.join(self.images_dir, matched_file)
473
+ image_paths.append(img_path)
474
+
475
+ if image_paths:
476
+ artwork_images[artwork_id] = image_paths
477
+
478
+ return artwork_images
479
+
480
+ def preselect_artworks(
481
+ self, firstname: str, birthday: str, city: str
482
+ ) -> pd.DataFrame:
483
+ """
484
+ Pré-sélectionne les œuvres selon la hiérarchie: prénom > date > ville
485
+ """
486
+ logger.info("=== DÉBUT PRÉ-SÉLECTION ===")
487
+
488
+ # Nettoyer les entrées
489
+ firstname = self._sanitize_input(firstname)
490
+ city = self._sanitize_input(city)
491
+
492
+ logger.info(
493
+ f"Critères de pré-sélection: prénom='{firstname}', date='{birthday}', ville='{city}'"
494
+ )
495
+
496
+ birth_date = self._parse_date(birthday)
497
+ if birth_date:
498
+ logger.info(f"Date convertie: {birth_date.strftime('%d/%m')}")
499
+
500
+ profile = TargetProfile()
501
+ profile.set_target_name(firstname)
502
+ profile.set_target_date(birth_date)
503
+ profile.set_target_place(city)
504
+
505
+ weights = {
506
+ "related_names": self.weights.PRESELECTION_NAME_WEIGHT,
507
+ "related_dates": self.weights.PRESELECTION_DATE_WEIGHT,
508
+ "related_places": self.weights.PRESELECTION_PLACE_WEIGHT,
509
+ "related_emotions": self.weights.PRESELECTION_EMOTION_WEIGHT,
510
+ }
511
+
512
+ logger.info(
513
+ f"Poids utilisés: nom={weights['related_names']}, date={weights['related_dates']}, lieu={weights['related_places']}, émotions={weights['related_emotions']}"
514
+ )
515
+
516
+ optimizer = WeightedLeximaxOptimizer(profile, weights)
517
+ result = optimizer.optimize_max(self.temp_db_with_images)
518
+
519
+ preselected = result[result["score"] > (0, 0, 0)]
520
+ logger.info(f"Œuvres avec score > 0: {len(preselected)}")
521
+
522
+ if len(preselected) < self.weights.MIN_PRESELECTION_COUNT:
523
+ preselected = result.head(self.weights.MIN_PRESELECTION_COUNT)
524
+ logger.info(f"Ajustement au minimum requis: {len(preselected)} œuvres")
525
+
526
+ logger.info("Top 5 pré-sélections:")
527
+ for i, (idx, piece) in enumerate(preselected.head(5).iterrows()):
528
+ logger.info(
529
+ f" {i+1}. Œuvre #{piece['database_id']} - Score: {piece['score']}"
530
+ )
531
+ if firstname and piece["related_names"]:
532
+ name_score = Optimizer.name_similarity(
533
+ firstname, piece["related_names"]
534
+ )
535
+ if name_score > 0:
536
+ logger.info(
537
+ f" → Nom: {piece['related_names']} (score: {name_score:.2f})"
538
+ )
539
+ if birth_date and piece["related_dates"]:
540
+ date_score = Optimizer.date_similarity(
541
+ birth_date, piece["related_dates"]
542
+ )
543
+ if date_score > 0:
544
+ logger.info(
545
+ f" → Dates: {[d.strftime('%d/%m') for d in piece['related_dates']]} (score: {date_score:.2f})"
546
+ )
547
+ if city and piece["related_places"]:
548
+ place_score = self.optimizer_helper.place_similarity(
549
+ city, piece["related_places"]
550
+ )
551
+ if place_score > 0:
552
+ logger.info(
553
+ f" → Lieux: {piece['related_places']} (score: {place_score:.2f})"
554
+ )
555
+
556
+ logger.info("=== FIN PRÉ-SÉLECTION ===")
557
+ return preselected
558
+
559
+ def get_random_images_for_selection(
560
+ self, round_num: int, already_selected: List[str] = None
561
+ ) -> List[Tuple[str, str]]:
562
+ """
563
+ Retourne 3 images aléatoires depuis l'index pré-construit
564
+ Exclut les œuvres déjà sélectionnées dans les tours précédents
565
+ """
566
+ logger.info(f"=== SÉLECTION D'IMAGES POUR LE TOUR {round_num} ===")
567
+
568
+ if already_selected:
569
+ logger.info(f"Œuvres déjà sélectionnées à exclure: {already_selected}")
570
+
571
+ available_artworks = list(self.artwork_images.keys())
572
+
573
+ # Exclure les œuvres déjà sélectionnées
574
+ if already_selected:
575
+ already_selected_set = set(already_selected)
576
+ available_artworks = [
577
+ a for a in available_artworks if a not in already_selected_set
578
+ ]
579
+
580
+ logger.info(
581
+ f"Nombre total d'œuvres avec images disponibles: {len(available_artworks)}"
582
+ )
583
+
584
+ if len(available_artworks) < self.weights.MAX_IMAGES_PER_SELECTION:
585
+ logger.warning(
586
+ f"Seulement {len(available_artworks)} œuvres avec images disponibles"
587
+ )
588
+ direct_images = []
589
+ for filename in list(self.image_indexer.get_all_files())[:10]:
590
+ if filename.endswith(".jpg"):
591
+ img_path = os.path.join(self.images_dir, filename)
592
+ direct_images.append((img_path, "0"))
593
+ return direct_images[: self.weights.MAX_IMAGES_PER_SELECTION]
594
+
595
+ num_to_select = min(
596
+ self.weights.MAX_IMAGES_PER_SELECTION, len(available_artworks)
597
+ )
598
+ selected_artworks = random.sample(available_artworks, num_to_select)
599
+
600
+ logger.info(f"Œuvres sélectionnées aléatoirement: {selected_artworks}")
601
+
602
+ selected = []
603
+ for artwork_id in selected_artworks:
604
+ img_path = random.choice(self.artwork_images[artwork_id])
605
+ selected.append((img_path, artwork_id))
606
+ if artwork_id in self.id_to_index:
607
+ idx = self.id_to_index[artwork_id]
608
+ artwork = self.df_with_images.loc[idx]
609
+ logger.info(f" Image {len(selected)}: Œuvre #{artwork_id}")
610
+ logger.info(f" Type: {artwork['art_piece_type']}")
611
+ logger.info(f" Émotions: {artwork['related_emotions']}")
612
+
613
+ logger.info(f"=== FIN SÉLECTION IMAGES TOUR {round_num} ===")
614
+ return selected
615
+
616
+ def extract_emotions_from_image_id(self, database_id: str) -> List[str]:
617
+ """
618
+ Extrait les émotions associées à une œuvre via son ID
619
+ Utilise l'index pré-calculé pour éviter les conversions répétées
620
+ """
621
+ if database_id in self.id_to_index:
622
+ idx = self.id_to_index[database_id]
623
+ emotions = self.df_with_images.loc[idx, "related_emotions"]
624
+ if isinstance(emotions, list):
625
+ return emotions
626
+ return []
627
+
628
+ @lru_cache(maxsize=1024)
629
+ def _cached_emotion_similarity(self, emotion1: str, emotion2: str) -> float:
630
+ """Cache les calculs de similarité émotionnelle"""
631
+ return self.emotion_wheel.calculate_emotion_similarity(emotion1, emotion2)
632
+
633
+ def calculate_emotion_profile(self, selected_ids: List[str]) -> Dict[str, float]:
634
+ """
635
+ Calcule le profil émotionnel basé sur les images sélectionnées
636
+ """
637
+ logger.info("=== CALCUL DU PROFIL ÉMOTIONNEL ===")
638
+ logger.info(f"Images sélectionnées: {selected_ids}")
639
+
640
+ emotion_counter = Counter()
641
+
642
+ for db_id in selected_ids:
643
+ emotions = self.extract_emotions_from_image_id(db_id)
644
+ logger.info(f" Image {db_id}: émotions = {emotions}")
645
+ emotion_counter.update(emotions)
646
+
647
+ total = sum(emotion_counter.values())
648
+ if total > 0:
649
+ emotion_profile = {
650
+ emotion: count / total for emotion, count in emotion_counter.items()
651
+ }
652
+ logger.info(f"Profil émotionnel calculé: {emotion_profile}")
653
+ else:
654
+ emotion_profile = {}
655
+ logger.info("Aucune émotion trouvée dans les images sélectionnées")
656
+
657
+ logger.info("=== FIN CALCUL PROFIL ÉMOTIONNEL ===")
658
+ return emotion_profile
659
+
660
+ def _get_artwork_image(self, artwork) -> Optional[str]:
661
+ """Retourne le chemin de l'image pour une œuvre d'art"""
662
+ artwork_id = str(artwork["database_id"])
663
+
664
+ # Simply return the first image from our pre-built index
665
+ if artwork_id in self.artwork_images:
666
+ return self.artwork_images[artwork_id][0]
667
+
668
+ return None
669
+
670
+ def find_best_match(
671
+ self, firstname: str, birthday: str, city: str, selected_image_ids: List[str]
672
+ ) -> Tuple[Optional[str], str, Dict]:
673
+ """
674
+ Trouve la meilleure correspondance selon la hiérarchie du scénario:
675
+ 1. Match exact (name/date/city) = gagnant automatique
676
+ 2. Si pré-sélection existe: utiliser émotions pour départager
677
+ 3. Si aucune pré-sélection: utiliser émotions seules
678
+ 4. Type d'objet comme critère de départage final
679
+ """
680
+ firstname = self._sanitize_input(firstname)
681
+ city = self._sanitize_input(city)
682
+ birth_date = self._parse_date(birthday)
683
+
684
+ logger.info(
685
+ f"Recherche de correspondance pour: {firstname}, {birthday}, {city}"
686
+ )
687
+
688
+ preselected = self.preselect_artworks(firstname, birthday, city)
689
+
690
+ logger.info("=== DÉTECTION DE MATCH EXACT ===")
691
+ for idx, piece in preselected.iterrows():
692
+ if firstname and piece["related_names"]:
693
+ name_score = Optimizer.name_similarity(
694
+ firstname, piece["related_names"]
695
+ )
696
+ if name_score >= 0.95:
697
+ logger.info(
698
+ f"🎯 MATCH EXACT TROUVÉ: prénom '{firstname}' → œuvre #{piece['database_id']} (score: {name_score:.2f})"
699
+ )
700
+ logger.info(f" Noms dans l'œuvre: {piece['related_names']}")
701
+ match_image = self._get_artwork_image(piece)
702
+ match_info = {
703
+ "title": f"Œuvre #{piece['database_id']}",
704
+ "type": piece["art_piece_type"],
705
+ "place": piece["art_piece_place"],
706
+ "emotions": piece["related_emotions"],
707
+ "explanation": piece["explanation"],
708
+ }
709
+ return (
710
+ match_image,
711
+ f"Prénom '{firstname}' correspond exactement",
712
+ match_info,
713
+ )
714
+
715
+ if birth_date and piece["related_dates"]:
716
+ date_score = Optimizer.date_similarity(
717
+ birth_date, piece["related_dates"]
718
+ )
719
+ if date_score == 1.0:
720
+ logger.info(
721
+ f"🎯 MATCH EXACT TROUVÉ: date '{birthday}' → œuvre #{piece['database_id']}"
722
+ )
723
+ logger.info(
724
+ f" Dates dans l'œuvre: {[d.strftime('%d/%m/%Y') for d in piece['related_dates']]}"
725
+ )
726
+ match_image = self._get_artwork_image(piece)
727
+ match_info = {
728
+ "title": f"Œuvre #{piece['database_id']}",
729
+ "type": piece["art_piece_type"],
730
+ "place": piece["art_piece_place"],
731
+ "emotions": piece["related_emotions"],
732
+ "explanation": piece["explanation"],
733
+ }
734
+ return (
735
+ match_image,
736
+ f"Date d'anniversaire {birthday} correspond exactement",
737
+ match_info,
738
+ )
739
+
740
+ if city and piece["related_places"]:
741
+ place_score = self.optimizer_helper.place_similarity(
742
+ city, piece["related_places"]
743
+ )
744
+ if place_score == 1.0:
745
+ logger.info(
746
+ f"🎯 MATCH EXACT TROUVÉ: ville '{city}' → œuvre #{piece['database_id']}"
747
+ )
748
+ logger.info(f" Lieux dans l'œuvre: {piece['related_places']}")
749
+ match_image = self._get_artwork_image(piece)
750
+ match_info = {
751
+ "title": f"Œuvre #{piece['database_id']}",
752
+ "type": piece["art_piece_type"],
753
+ "place": piece["art_piece_place"],
754
+ "emotions": piece["related_emotions"],
755
+ "explanation": piece["explanation"],
756
+ }
757
+ return (
758
+ match_image,
759
+ f"Ville '{city}' correspond exactement",
760
+ match_info,
761
+ )
762
+
763
+ logger.info("Aucun match exact trouvé, passage à la sélection par émotions")
764
+
765
+ emotion_profile = self.calculate_emotion_profile(selected_image_ids)
766
+
767
+ logger.info("=== STRATÉGIE DE MATCHING ===")
768
+ valid_preselection = preselected[preselected["score"] > (0, 0, 0)]
769
+
770
+ if len(valid_preselection) > 0:
771
+ logger.info(
772
+ f"📋 CAS A: {len(valid_preselection)} œuvres pré-sélectionnées - utilisation des émotions pour départager"
773
+ )
774
+ candidates = valid_preselection
775
+ else:
776
+ logger.info(
777
+ f"📋 CAS B: Aucune pré-sélection valide - recherche par émotions sur {len(self.df_with_images)} œuvres"
778
+ )
779
+ candidates = self.df_with_images
780
+
781
+ # Exclure les œuvres déjà sélectionnées par l'utilisateur
782
+ selected_artwork_ids = set(selected_image_ids)
783
+ candidates = candidates[
784
+ ~candidates["database_id"].astype(str).isin(selected_artwork_ids)
785
+ ]
786
+ logger.info(
787
+ f"Après exclusion des œuvres déjà sélectionnées {selected_artwork_ids}: {len(candidates)} candidats restants"
788
+ )
789
+
790
+ logger.info("=== CALCUL DES SCORES ÉMOTIONNELS ===")
791
+ best_matches = []
792
+ best_emotion_score = -1
793
+
794
+ for idx, piece in candidates.iterrows():
795
+ emotion_score = 0
796
+
797
+ if emotion_profile and piece["related_emotions"]:
798
+ for user_emotion, weight in emotion_profile.items():
799
+ best_similarity = 0
800
+ for piece_emotion in piece["related_emotions"]:
801
+ similarity = self._cached_emotion_similarity(
802
+ user_emotion, piece_emotion
803
+ )
804
+ if similarity > best_similarity:
805
+ best_similarity = similarity
806
+ emotion_score += best_similarity * weight
807
+
808
+ if len(piece["related_emotions"]) > 0:
809
+ emotion_score /= len(piece["related_emotions"])
810
+
811
+ if emotion_score > best_emotion_score:
812
+ best_emotion_score = emotion_score
813
+ best_matches = [piece]
814
+ logger.info(
815
+ f" Nouveau meilleur score émotionnel: {emotion_score:.3f} - Œuvre #{piece['database_id']}"
816
+ )
817
+ elif emotion_score == best_emotion_score and emotion_score > 0:
818
+ best_matches.append(piece)
819
+ logger.info(
820
+ f" Score égal au meilleur: {emotion_score:.3f} - Œuvre #{piece['database_id']}"
821
+ )
822
+
823
+ logger.info(
824
+ f"Nombre de meilleures correspondances: {len(best_matches)} avec score {best_emotion_score:.3f}"
825
+ )
826
+
827
+ if len(best_matches) > 1:
828
+ logger.info("=== DÉPARTAGE PAR TYPE D'OBJET ===")
829
+ selected_types = []
830
+ for img_id in selected_image_ids:
831
+ if img_id in self.id_to_index:
832
+ idx = self.id_to_index[img_id]
833
+ selected_types.append(
834
+ self.df_with_images.loc[idx, "art_piece_type"]
835
+ )
836
+
837
+ selected_types_counter = Counter(selected_types)
838
+
839
+ type_scored_matches = []
840
+ best_type_score = -1
841
+
842
+ for piece in best_matches:
843
+ type_score = selected_types_counter.get(piece["art_piece_type"], 0)
844
+ if type_score > best_type_score:
845
+ best_type_score = type_score
846
+ type_scored_matches = [piece]
847
+ elif type_score == best_type_score:
848
+ type_scored_matches.append(piece)
849
+
850
+ if len(type_scored_matches) > 1:
851
+ logger.info(
852
+ f" {len(type_scored_matches)} œuvres avec le même score de type ({best_type_score}) - sélection aléatoire"
853
+ )
854
+ best_match = random.choice(type_scored_matches)
855
+ match_reason = (
856
+ "Sélection aléatoire parmi les meilleures correspondances"
857
+ )
858
+ else:
859
+ best_match = type_scored_matches[0]
860
+ match_reason = f"Type d'objet '{best_match['art_piece_type']}' préféré"
861
+ logger.info(
862
+ f" Type '{best_match['art_piece_type']}' sélectionné avec score {best_type_score}"
863
+ )
864
+ elif len(best_matches) == 1:
865
+ best_match = best_matches[0]
866
+ match_reason = "Meilleure correspondance émotionnelle"
867
+ else:
868
+ logger.info("Aucune correspondance trouvée")
869
+ return None, "Aucune correspondance trouvée", {}
870
+
871
+ reasons = []
872
+ if len(valid_preselection) > 0:
873
+ if firstname and best_match["related_names"]:
874
+ name_score = Optimizer.name_similarity(
875
+ firstname, best_match["related_names"]
876
+ )
877
+ if name_score > 0:
878
+ reasons.append(f"prénom '{firstname}' trouvé")
879
+
880
+ if birth_date and best_match["related_dates"]:
881
+ date_score = Optimizer.date_similarity(
882
+ birth_date, best_match["related_dates"]
883
+ )
884
+ if date_score > 0:
885
+ reasons.append(
886
+ f"date {'exacte' if date_score == 1.0 else 'partielle'}"
887
+ )
888
+
889
+ if city and best_match["related_places"]:
890
+ place_score = self.optimizer_helper.place_similarity(
891
+ city, best_match["related_places"]
892
+ )
893
+ if place_score > 0:
894
+ reasons.append(f"ville '{city}' trouvée")
895
+
896
+ if best_emotion_score > 0:
897
+ reasons.append(
898
+ f"correspondance émotionnelle (score: {best_emotion_score:.2f})"
899
+ )
900
+
901
+ if len(reasons) == 0:
902
+ reasons.append(match_reason)
903
+
904
+ final_reason = " ; ".join(reasons)
905
+
906
+ logger.info(f"\n🏆 RÉSULTAT FINAL: Œuvre #{best_match['database_id']}")
907
+ logger.info(f" Raison: {final_reason}")
908
+ logger.info(f" Type: {best_match['art_piece_type']}")
909
+ logger.info(f" Lieu: {best_match['art_piece_place']}")
910
+
911
+ match_image = self._get_artwork_image(best_match)
912
+
913
+ match_info = {
914
+ "title": f"Œuvre #{best_match['database_id']}",
915
+ "type": best_match["art_piece_type"],
916
+ "place": best_match["art_piece_place"],
917
+ "emotions": best_match["related_emotions"],
918
+ "explanation": best_match["explanation"],
919
+ }
920
+
921
+ return match_image, final_reason, match_info
922
+
923
+
924
+ csv_path = "PP1-Collection_Database_new-cleaned.csv"
925
+ images_dir = "pictures_data"
926
+
927
+ if not os.path.exists(csv_path):
928
+ logger.error(f"Fichier CSV introuvable: {csv_path}")
929
+ if not os.path.exists(images_dir):
930
+ logger.error(f"Répertoire images introuvable: {images_dir}")
931
+
932
+ matcher = ArtMatcherV2(csv_path, images_dir)
933
+
934
+
935
+ def process_user_info(firstname: str, birthday: str, city: str, state: SessionState):
936
+ """Traite les informations utilisateur avec validation"""
937
+ firstname = SecurityValidator.sanitize_input(firstname)
938
+ city = SecurityValidator.sanitize_input(city)
939
+
940
+ state.firstname = firstname
941
+ state.birthday = birthday
942
+ state.city = city
943
+
944
+ if not firstname or not birthday:
945
+ return (
946
+ gr.update(visible=True),
947
+ gr.update(visible=False),
948
+ gr.update(visible=False),
949
+ "Veuillez remplir au moins votre prénom et date de naissance.",
950
+ state,
951
+ )
952
+
953
+ is_valid, _ = SecurityValidator.validate_date(birthday)
954
+ if not is_valid:
955
+ return (
956
+ gr.update(visible=True),
957
+ gr.update(visible=False),
958
+ gr.update(visible=False),
959
+ "Format de date invalide. Utilisez JJ/MM (ex: 15/03)",
960
+ state,
961
+ )
962
+
963
+ return (
964
+ gr.update(visible=False),
965
+ gr.update(visible=True),
966
+ gr.update(visible=False),
967
+ "Informations enregistrées ! Passons à la sélection d'images.",
968
+ state,
969
+ )
970
+
971
+
972
+ def load_images_for_round(round_num: int, state: SessionState):
973
+ """Charge 3 images pour un tour de sélection"""
974
+ images_data = matcher.get_random_images_for_selection(
975
+ round_num, state.selected_images
976
+ )
977
+
978
+ if len(images_data) < ScoringWeights.MAX_IMAGES_PER_SELECTION:
979
+ logger.warning(f"Seulement {len(images_data)} images disponibles")
980
+ return (
981
+ [None, None, None],
982
+ [],
983
+ f"Pas assez d'images disponibles (seulement {len(images_data)} trouvées)",
984
+ state,
985
+ )
986
+
987
+ images = [img[0] for img in images_data]
988
+ ids = [img[1] for img in images_data]
989
+
990
+ state.current_image_ids = ids
991
+
992
+ return (
993
+ images,
994
+ ids,
995
+ f"Tour {round_num + 1}/{ScoringWeights.TOTAL_ROUNDS} : Sélectionnez l'image qui vous attire le plus",
996
+ state,
997
+ )
998
+
999
+
1000
+ def select_image(choice: Optional[int], state: SessionState):
1001
+ """Traite la sélection d'image"""
1002
+ if choice is None:
1003
+ return (
1004
+ gr.update(),
1005
+ gr.update(),
1006
+ gr.update(),
1007
+ gr.update(),
1008
+ "Veuillez sélectionner une image",
1009
+ state,
1010
+ )
1011
+
1012
+ if state.current_image_ids and len(state.current_image_ids) > choice:
1013
+ selected_id = state.current_image_ids[choice]
1014
+ else:
1015
+ return (
1016
+ gr.update(),
1017
+ gr.update(),
1018
+ gr.update(),
1019
+ gr.update(),
1020
+ "Erreur: image non trouvée",
1021
+ state,
1022
+ )
1023
+
1024
+ state.selected_images.append(selected_id)
1025
+ state.current_round += 1
1026
+
1027
+ logger.info(
1028
+ f"Tour {state.current_round}: Image {choice+1} sélectionnée (ID: {selected_id})"
1029
+ )
1030
+
1031
+ if state.current_round < ScoringWeights.TOTAL_ROUNDS:
1032
+ new_images, new_ids, message, state = load_images_for_round(
1033
+ state.current_round, state
1034
+ )
1035
+ return (
1036
+ gr.update(value=new_images[0]),
1037
+ gr.update(value=new_images[1]),
1038
+ gr.update(value=new_images[2]),
1039
+ gr.update(value=None),
1040
+ message,
1041
+ state,
1042
+ )
1043
+ else:
1044
+ return (
1045
+ gr.update(),
1046
+ gr.update(),
1047
+ gr.update(),
1048
+ gr.update(),
1049
+ "Sélection terminée ! Calcul de votre œuvre correspondante...",
1050
+ state,
1051
+ )
1052
+
1053
+
1054
+ def show_results(state: SessionState):
1055
+ """Affiche les résultats finaux"""
1056
+ if not state.is_complete():
1057
+ return (
1058
+ gr.update(visible=False),
1059
+ gr.update(visible=True),
1060
+ gr.update(visible=False),
1061
+ None,
1062
+ "",
1063
+ "",
1064
+ )
1065
+
1066
+ match_image, reason, info = matcher.find_best_match(
1067
+ state.firstname,
1068
+ state.birthday,
1069
+ state.city,
1070
+ state.selected_images,
1071
+ )
1072
+
1073
+ if match_image:
1074
+ explanation = f"""
1075
+ **Votre œuvre correspondante a été trouvée !**
1076
+
1077
+ **Raison du match :** {reason}
1078
+
1079
+ **Détails de l'œuvre :**
1080
+ - Type : {info.get('type', 'Non spécifié')}
1081
+ - Lieu : {info.get('place', 'Non spécifié')}
1082
+ - Émotions : {', '.join(info.get('emotions', [])) if info.get('emotions') else 'Non spécifiées'}
1083
+
1084
+ **Description :**
1085
+ {info.get('explanation', 'Aucune description disponible')}
1086
+ """
1087
+ else:
1088
+ explanation = "Désolé, aucune œuvre correspondante n'a pu être trouvée."
1089
+
1090
+ return (
1091
+ gr.update(visible=False),
1092
+ gr.update(visible=False),
1093
+ gr.update(visible=True),
1094
+ match_image,
1095
+ info.get("title", "Œuvre non trouvée"),
1096
+ explanation,
1097
+ )
1098
+
1099
+
1100
+ with gr.Blocks(title="Art Matcher", theme=gr.themes.Soft()) as demo:
1101
+ gr.Markdown(
1102
+ """
1103
+ # 🎨 Art Matcher
1104
+ ### Découvrez l'œuvre d'art qui vous correspond !
1105
+
1106
+ Cette application utilise vos informations personnelles et vos préférences visuelles
1107
+ pour trouver l'œuvre d'art qui vous correspond le mieux dans notre collection.
1108
+ """
1109
+ )
1110
+
1111
+ session_state = gr.State(SessionState())
1112
+
1113
+ with gr.Group(visible=True) as info_section:
1114
+ gr.Markdown("### Étape 1 : Vos informations")
1115
+ with gr.Row():
1116
+ firstname_input = gr.Textbox(
1117
+ label="Prénom", placeholder="Entrez votre prénom", max_lines=1
1118
+ )
1119
+ birthday_input = gr.Textbox(
1120
+ label="Date d'anniversaire (JJ/MM)",
1121
+ placeholder="Ex: 25/12",
1122
+ max_lines=1,
1123
+ )
1124
+ city_input = gr.Textbox(
1125
+ label="Ville de résidence", placeholder="Ex: Paris", max_lines=1
1126
+ )
1127
+
1128
+ submit_info_btn = gr.Button("Valider mes informations", variant="primary")
1129
+
1130
+ with gr.Group(visible=False) as selection_section:
1131
+ selection_title = gr.Markdown("### Étape 2 : Sélection d'images")
1132
+
1133
+ with gr.Row():
1134
+ img1 = gr.Image(label="Image 1", type="filepath", height=300)
1135
+ img2 = gr.Image(label="Image 2", type="filepath", height=300)
1136
+ img3 = gr.Image(label="Image 3", type="filepath", height=300)
1137
+
1138
+ image_choice = gr.Radio(
1139
+ choices=["Image 1", "Image 2", "Image 3"],
1140
+ label="Quelle image vous attire le plus ?",
1141
+ type="index",
1142
+ )
1143
+
1144
+ select_btn = gr.Button("Valider mon choix", variant="primary")
1145
+
1146
+ with gr.Group(visible=False) as results_section:
1147
+ gr.Markdown("### Votre œuvre correspondante")
1148
+
1149
+ with gr.Row():
1150
+ with gr.Column(scale=1):
1151
+ result_image = gr.Image(label="Votre œuvre", height=400)
1152
+ result_title = gr.Markdown("## Titre de l'œuvre")
1153
+
1154
+ with gr.Column(scale=1):
1155
+ result_explanation = gr.Markdown("")
1156
+
1157
+ restart_btn = gr.Button("Recommencer", variant="secondary")
1158
+
1159
+ status_message = gr.Markdown("")
1160
+
1161
+ def on_info_submit(firstname, birthday, city, state):
1162
+ state.reset()
1163
+
1164
+ info_vis, select_vis, results_vis, message, state = process_user_info(
1165
+ firstname, birthday, city, state
1166
+ )
1167
+
1168
+ if select_vis["visible"]:
1169
+ images, ids, round_message, state = load_images_for_round(0, state)
1170
+ return (
1171
+ info_vis,
1172
+ select_vis,
1173
+ results_vis,
1174
+ images[0] if len(images) > 0 else None,
1175
+ images[1] if len(images) > 1 else None,
1176
+ images[2] if len(images) > 2 else None,
1177
+ round_message,
1178
+ state,
1179
+ )
1180
+ else:
1181
+ return (info_vis, select_vis, results_vis, None, None, None, message, state)
1182
+
1183
+ submit_info_btn.click(
1184
+ fn=on_info_submit,
1185
+ inputs=[firstname_input, birthday_input, city_input, session_state],
1186
+ outputs=[
1187
+ info_section,
1188
+ selection_section,
1189
+ results_section,
1190
+ img1,
1191
+ img2,
1192
+ img3,
1193
+ status_message,
1194
+ session_state,
1195
+ ],
1196
+ )
1197
+
1198
+ def on_image_select(choice, state):
1199
+ (img1_update, img2_update, img3_update, choice_update, message, state) = (
1200
+ select_image(choice, state)
1201
+ )
1202
+
1203
+ return (
1204
+ gr.update(), # info_section
1205
+ gr.update(), # selection_section
1206
+ gr.update(), # results_section
1207
+ img1_update, # img1
1208
+ img2_update, # img2
1209
+ img3_update, # img3
1210
+ choice_update, # image_choice
1211
+ message, # status_message
1212
+ state,
1213
+ )
1214
+
1215
+ def handle_final_results(state):
1216
+ if state.is_complete():
1217
+ return show_results(state)
1218
+ else:
1219
+ return gr.update(), gr.update(), gr.update(), None, "", ""
1220
+
1221
+ select_btn.click(
1222
+ fn=on_image_select,
1223
+ inputs=[image_choice, session_state],
1224
+ outputs=[
1225
+ info_section,
1226
+ selection_section,
1227
+ results_section,
1228
+ img1,
1229
+ img2,
1230
+ img3,
1231
+ image_choice,
1232
+ status_message,
1233
+ session_state,
1234
+ ],
1235
+ ).then(
1236
+ fn=handle_final_results,
1237
+ inputs=[session_state],
1238
+ outputs=[
1239
+ info_section,
1240
+ selection_section,
1241
+ results_section,
1242
+ result_image,
1243
+ result_title,
1244
+ result_explanation,
1245
+ ],
1246
+ )
1247
+
1248
+ def restart_app(state):
1249
+ state.reset()
1250
+
1251
+ return (
1252
+ gr.update(visible=True),
1253
+ gr.update(visible=False),
1254
+ gr.update(visible=False),
1255
+ "",
1256
+ "",
1257
+ "",
1258
+ None,
1259
+ "Application réinitialisée. Veuillez entrer vos informations.",
1260
+ state,
1261
+ )
1262
+
1263
+ restart_btn.click(
1264
+ fn=restart_app,
1265
+ inputs=[session_state],
1266
+ outputs=[
1267
+ info_section,
1268
+ selection_section,
1269
+ results_section,
1270
+ firstname_input,
1271
+ birthday_input,
1272
+ city_input,
1273
+ image_choice,
1274
+ status_message,
1275
+ session_state,
1276
+ ],
1277
+ )
1278
+
1279
+
1280
+ if __name__ == "__main__":
1281
+ demo.launch()
pictures_data/2022.0.86_medium.jpg ADDED
pictures_data/Abena_01_021.jpg ADDED
pictures_data/Abena_02_408.jpg ADDED

Git LFS Details

  • SHA256: 3db9f21b69b2d197c4e7725bcea24053a908376298e8d8e858424e286bcce447
  • Pointer size: 131 Bytes
  • Size of remote file: 126 kB
pictures_data/Abena_03_513.jpg ADDED

Git LFS Details

  • SHA256: efcc0bda6c86f6ef68dc09aaac4852201c161fd568ff3da55876cef8d71dca83
  • Pointer size: 131 Bytes
  • Size of remote file: 142 kB
pictures_data/Abena_04_539.jpg ADDED

Git LFS Details

  • SHA256: 190096fb96d0b80bfe2f81185f5720e0297cfc0ca8dcdfdd0e4265ca1f19c4af
  • Pointer size: 131 Bytes
  • Size of remote file: 111 kB
pictures_data/IMadeYou_01_053.jpg ADDED

Git LFS Details

  • SHA256: 0606213bea9332a7246d2357d0c0ab6dea139789a9d1e12141031d7b7106ada1
  • Pointer size: 131 Bytes
  • Size of remote file: 155 kB
pictures_data/IMadeYou_02_220.jpg ADDED

Git LFS Details

  • SHA256: e67d5279cc1c3e3daa2b0dcf2fb6d683aa4967fcacc1a44b05892c407c5bb739
  • Pointer size: 131 Bytes
  • Size of remote file: 288 kB
pictures_data/IMadeYou_03_406.jpg ADDED

Git LFS Details

  • SHA256: e11b317426180dedf9cc5a6ced794304280a4c35d0bd99f1a3415b48abace9fc
  • Pointer size: 131 Bytes
  • Size of remote file: 290 kB
pictures_data/IMadeYou_04_710.jpg ADDED

Git LFS Details

  • SHA256: 4eaaa1bea3d79f100c6480fb49cd2cbc14e6d2d633dcaeab4471d3135d8db5df
  • Pointer size: 131 Bytes
  • Size of remote file: 315 kB
pictures_data/IMadeYou_05_828.jpg ADDED

Git LFS Details

  • SHA256: 1d31ab83eb00f0f2d18cc1e813c24a728cf0b0d7c646e998b0e494f2cd7e0c35
  • Pointer size: 131 Bytes
  • Size of remote file: 263 kB
pictures_data/IMadeYou_06_1243.jpg ADDED

Git LFS Details

  • SHA256: 95d7f625fb455e132978abf9f427b8283a71fc65be33d7656e4db585e5ba7a43
  • Pointer size: 131 Bytes
  • Size of remote file: 287 kB
pictures_data/Isabella_1_045.jpg ADDED
pictures_data/Isabella_2_1737.jpg ADDED

Git LFS Details

  • SHA256: f2658ed9d704194b3aa695eab706cffd327cddbcaba318bc10f936fa6738a333
  • Pointer size: 131 Bytes
  • Size of remote file: 137 kB
pictures_data/Isabella_3_1910.jpg ADDED

Git LFS Details

  • SHA256: 81088ef5475339a37d2d8d7b4e63c57701c5236b28c751d2b44139bbd29ec470
  • Pointer size: 131 Bytes
  • Size of remote file: 141 kB
pictures_data/MAR-BVM-7-2022-0-100-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-100-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-105-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-105-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-125-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-128-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-128-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-130-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-130-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-131-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-132-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-132-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-133_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-134-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-134-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-134-003_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-135-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-135-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-136-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-136-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-138-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-138-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-139-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-139-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-147-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-147-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-148-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-148-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-149-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-149-002_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-153-001_medium.jpg ADDED
pictures_data/MAR-BVM-7-2022-0-153-002_medium.jpg ADDED