数据集:

alkzar90/CC6204-Hackaton-Cub-Dataset

英文

CC6204: Hackaton Deep Learning 2022

Nota: esta fue un actividad del curso CC6204: Deep Learning, Universidad de Chile, año 2022. Dictado por el profesor Iván Sipiran, material del curso aquí .

En esta actividad intentaremos resolver un problema de clasificación multimodal. En un problema de clasificación multimodal, cada pieza de información viene en diferentes representaciones (imágenes, texto, audios, etc) y la idea es determinar cómo usar esos datos para un problema de clasificación.En este caso trabajaremos con un dataset que contiene datos sobre especies de pájaros.

Dataset

Data Instances

Una muestra del dataset se encuentra a continuación:

{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=334x500 at 0x7F59DE348AF0>,
 'description': 'this bird has a short orange bill, white breast and body and white eyes.\na medium sized bird with a orange bill and a black crown and white eyes\nthis white-breasted bird has a short, squat, orange bill, a black head and wings, and small white eyes above a white stripe.\nthis bird has a white breast, a black head, a short red beak, and webbed feet.\nthis bird is white with black on its neck and has a long, pointy beak.\nthis bird has wings that are black and has a white belly\nthis bird has wings that are black and has a long bill\nthis is a medium sized bird, with a white belly, and a grey head and wings, with a short yellow bill.\nthis bird is white and gray in color, and has a bright orange beak.\nthis bird has a blunt orange beak with mostly black above the neck, the belly is solid white.\n',
 'label': 6,
 'file_name': 'Parakeet_Auklet_0048_795980.jpg'}

Data Fields

Cada instancia de datos tiene los siguientes campos:

  • image : imagen RGB de un pájaro
  • description : texto con 10 descripciones del pájaro en la foto, cada descripción esta separado por un salto de linea (i.e. \n )
  • label : un número entero que representa el id de la especie a la que pertenece el pájaro Id2String ```bash1 001.黑脚信天翁2 002.莱桑信天翁3 003.苍信天翁4 004.凹线嘴鹊5 005.冠脚海雀6 006.最小海雀7 007.鹦鹉海雀8 008.犀鸟海雀9 009.啤酒黑鸟10 010.红翅黑鸟11 011.铁锈黑鸟12 012.黄头黑鸟13 013.波波林克14 014.靛蓝鹀 15 015.蓝喉美洲鹪鹩16 016.彩绘斑鸠17 017.红衣鸲18 018.斑猫鸟19 019.灰猫鹀20 020.黄腹歌鸲21 021.东方画眉22 022.巢蜂寡妇23 023.勃兰特欧洲鸬鹚24 024.红脸鸬鹚25 025.海洋鸬鹚26 026.青铜牛鸟27 027.闪亮牛鸟28 028.棕色攀鹁29 029.美洲乌鸦30 030.鱼乌鸦31 031.黑嘴杜鹃32 032.红树杜鹃33 033.黄嘴杜鹃34 034.灰顶金雀35 035.紫金雀36 036.北美黄腰啄木鸟37 037.阿卡迪亚鹟莺38 038.大头菜农39 039.最小捕蝇319 040.橄榄边319 041.尖尾捕蝇319 042.朱红捕蝇319 043.黄腹捕蝇319 044.军舰鸟319 045.北方浣熊319 046.赛德尔水鸡47 047.美洲金翅雀48 048.欧洲金翅雀49 049.船尾黑鹂50 050.耳孔潜鸟51 051.角潜鸟52 052.斑嘴潜鸟53 053.西部潜鸟54 054.蓝金雀55 055.夜雀56 056.松雀57 057.玫瑰脸雀58 058.鸽子雕文59 059.加利福尼亚鸥60 060.灰尾鸥61 061.希尔曼鸥62 062.鸻鸥63 063.象牙鸥64 064.环颈鸥65 065.灰黑鸥66 066.西部鸥67 067.安娜蜂鸟68 068.红喉蜂鸟69 069.瓦伦蜂鸟70 070.绿小翅鸟71 071.长尾尖嘴海鸥72 072.鲣鸥73 073.蓝杰伊74 074.佛罗里达杰伊75 075.绿杰伊76 076.暗眼雀77 077.热带王鹟78 078.灰色王鹟79 079.褪色的翡翠80 080.绿翡翠81 081.黑白翡翠82 082.石斑翡翠83 083.白胸翡翠84 084.红腿海燕85 085.角斑云雀86 086.太平洋潜鸟87 087.野鸭88 088.西部草鸫89 089.兜麦鸭90 090.红胸麦鸭91 091. Mockingbird92 092.夜鹰93 093.克拉克背背腹94 094.白胸鸟95 095.巴尔的摩布鸟96 096.背带挂耳97 097.果园布鸟98 098.斯科特布鸟99 099.烤箱鸟100 100.棕色鹈鹕101 101.白鹈鹕102 102.西部黑胸噪鹟103 103.小维文104 104.美洲鹡鸰105 105.呼唤噪鹟106 106.角嘴海鹦107 107.乌鸦108 108.白颈乌鸦109 109.美洲红尾莺110 110.土耳其常见鸡111 111.齿顶伯劳112 112.大灰伯劳113 113.坠雀麻雀114 114.黑喉麻雀115 115.啤酒麻雀116 116.德国麻雀117 117.粘土色麻雀118 118.家居麻雀119 119.田野麻雀120 120.狐麻雀121 121.草莺麻雀122 122.哈里斯麻雀123 123.亨斯洛麻雀124 124.列氏麻雀125 125.林肯麻雀126 126.尼尔森 Sharpe_tailed_Sparrow127 127.萨凡纳麻雀128 128.滨海麻雀129 129.歌麻雀130 130.树麻雀131 131.黄胸麻雀132 132.白冠麻雀133 133.白喉麻雀134 134.低星当12 135.银行燕子136 136.谷燕137 137.悬崖燕138 138.树燕139 139.精致蜡嘴鸟140 140.夏威夷檀香鸟141 141.北极燕鸥142 142.黑燕鸥143 143.里海燕鸥144 144.普通燕鸥145 145.优雅燕鸥146 146.福斯特燕鸥147 147.最小燕鸥148 148.绿尾东北棕雀149 149.棕色刺鸫150 150.臞鹪151 151.蓝头蓝莺152 152.费城蓝莺153 153.费城蓝莺154 154.红眼蓝莺155 155.流浪蓝莺156 156.白眼蓝莺157 157.黄喉蓝莺158 158.浆果鹓鹭159 159.黑白之 Warbler160 160.黑喉黄莺161 161.蓝翼黄莺162 162.加拿大黄莺163 163.岬黄莺164 164.湖蓝黄莺165 165.栗旁黄莺166 166.金黄胸鹀167 167.有帽鹀168 168.肯塔基黄鸟169 169.万宝黄莺170 170.哀悼黄莺171 171.北美鹟莺172 172.纳什维尔黄莺173 173.橙冠黄莺174 174.棕榈黄莺175 175.松黄莺176 176.Pine_Warbler177 177.Prothonotary_Warbler178 178.Swainson_Warbler179 179.Tennessee_Warbler180 180.Wilson_Warbler181 181.Worm_eating_Warbler182 182.Yellow_Warbler183 183.Northern_Waterthrush184 184.Louisiana_Waterthrush185 185.Bohemian_Waxwing186 186.Cedar_Waxwing187 187.American_Three_toed_Woodpecker188 188.Pileated_Woodpecker189 189.Red_bellied_Woodpecker190 190.Red_cockaded_Woodpecker191 191.Red_headed_Woodpecker192 192.Downy_Woodpecker193 193.Bewick_Wren194 194.Cactus_Wren195 195.Carolina_Wren196 196.House_Wren197 197.Marsh_Wren198 198.Rock_Wren199 199.Winter_Wren200 200.Common_Yellowthroat```
  • file_name : nombre del archivo que tiene la imagen

Data Splits

train test
# de observaciones 5994 5794

Problema

El problema consiste en entrenar un modelo que clasifique instancias del dataset CUB de la mejor manera posible. Algunas preguntas que podrían guiar nuestro desarrollo son:

  • Se podrá obtener un buen performance de clasificación solo usando las imágenes del dataset? Este tipo de problema sería el clásico problema de clasificar imágenes.
  • Se podrá obtener un buen performance de clasificación solo usando los textos del dataset? Este tipo de problema sería el clásico problema de clasificar texto.
  • Se podrá obtener un mejor performance si combino la información en un modelo multimodal? Cómo construyo un modelo multimodal que reciba una imagen y un texto y clasifique la instancia con su respectiva especie? Hint: piense en cómo una red neuronal (la que sea) es simplemente una función que recibe un dato y genera una representación de alto nivel (vector característico) de ese dato. Una red CNN podría hacerse cargo de calcular la representación de una imagen y una red RNN podría hacerse cargo de calcular la representación del texto. Finalmente concateno ambas representaciones y entreno un MLP final que hace la clasificación.

Experimentación

Como el dataset es grande y los recursos de computación son muy limitados, una estrategia para hacer los experimentos es tomar una muestra más pequeña de datos para ir probando las ideas. Para esta estrategia, éstas son dos ideas válidas:

  • Tomar menos instancias por cada clase para el desarrollo y solo dejar el dataset final para hacer el entrenamiento final y la evaluación final con testing.
  • Tomar menos clases para el desarrollo inicial y solo dejar el dataset final para hacer el entrenamiento final y la evaluación final con testing.

Ambas estrategias nos permiten lidiar con los recursos limitados que tenemos, pero cuáles son sus ventajas o desventajas? Si usas alguna de estas estrategias, puedes comentar este punto en tu desarrollo final.

Métrica de Evaluación

La métrica que se debe reportar es el accuracy en conjunto de test.

Citation Information

Sitio web del dataset CUB200 , y reporte técnico aquí .

@techreport{WahCUB_200_2011,
    Title = The Caltech-UCSD Birds-200-2011 Dataset,
    Author = {Wah, C. and Branson, S. and Welinder, P. and Perona, P. and Belongie, S.},
    Year = {2011}
    Institution = {California Institute of Technology},
    Number = {CNS-TR-2011-001}
}

Contributions

Creación y adaptación del material de la actividad en un Hugging Face dataset por Cristóbal Alcázar.