• 探索轻量级模型性能上限,基于GhostNet模型开发构建多商品细粒度图像识别系统


    商品图像数据的细粒度识别有别于传统的图像识别任务,本身细粒度识别对于模型特征提取计算能力要求就比较高,在我们前面的一些项目中,涉及到的细粒度识别大多是同一物种下不同亚种的识别,比如:鸟类细粒度识别、狗类细粒度识别等等。

    本文的主要目的是想要尝试基于前文中的GhostNet模型来开发构建商品图像数据的细粒度识别系统,另外,在这里的商品是多种商品,而不只是单个类型下的不同子品牌的商品数据,首先看下实例效果,如下所示:

    这里简单看下商品类别清单,如下所示:

    1. 1 东古酱油一品鲜
    2. 2 东古黄豆酱750G
    3. 3 东鹏特饮罐装
    4. 4 中华(硬)
    5. 5 中华(软)
    6. 6 乳酸菌600亿_2
    7. 7 乳酸菌600亿_3
    8. 8 乳酸菌600亿原味
    9. 9 乳酸菌600亿芒果
    10. 10 乳酸菌600亿芦荟
    11. 11 乳酸菌600亿草莓
    12. 12 乳酸菌600亿西瓜
    13. 13 云烟(紫)
    14. 14 仲景香菇酱
    15. 15 伊利安慕希瓶装原味230g
    16. 16 伊利安慕希高端原味230ml
    17. 17 伊利安慕希高端橙凤梨味230ml
    18. 18 伊利纯牛奶250ml
    19. 19 优倍
    20. 20 优酪乳健康大麦180g_4麦香原味
    21. 21 优酪乳健康大麦180g草莓味
    22. 22 优酪乳健康大麦180g麦香原味
    23. 23 优酪乳唯果粒230g芒果黄桃
    24. 24 优酪乳唯果粒230g芦荟
    25. 25 优酪乳唯果粒230g草莓
    26. 26 优酪乳四季鲜选180g_4芦荟
    27. 27 优酪乳四季鲜选180g_4黄桃
    28. 28 优酪乳四季鲜选180g芦荟
    29. 29 优酪乳四季鲜选180g黄桃
    30. 30 优酪乳慢一点100g_8原味
    31. 31 优酪乳旅行优格220g丹麦芝士味
    32. 32 优酪乳旅行优格220g保加利亚玫瑰味
    33. 33 优酪乳简单点100g_8原味
    34. 34 优酪乳简单点230g半糖
    35. 35 优酪乳简单点原味
    36. 36 优酪乳简单点烤酸奶
    37. 37 优酪乳顺畅点230g原味
    38. 38 伴侣酱油1L
    39. 39 伴侣酱油2L
    40. 40 光明藜麦
    41. 41 光明鲜牛奶
    42. 42 六个核桃
    43. 43 六月鲜柠檬蒸鱼酱油
    44. 44 六月鲜特级原汁酱油
    45. 45 六月鲜特级淡盐酱油375ML
    46. 46 六月鲜红烧酱油1L
    47. 47 六月鲜酱油1L
    48. 48 六神花露水
    49. 49 养乐多
    50. 50 养乐多组合装
    51. 51 农夫山泉17.5
    52. 52 农夫山泉NFC
    53. 53 农夫山泉维他命水乳酸菌风味
    54. 54 农夫山泉维他命水柑橘风味
    55. 55 农夫山泉茶π柠檬红茶
    56. 56 冠益乳
    57. 57 凯旋1664blanc啤酒瓶装
    58. 58 凯旋1664blanc啤酒罐啤
    59. 59 利群(蓝天)
    60. 60 加加上等蚝油715G
    61. 61 加加味极鲜
    62. 62 加加红烧酱油
    63. 63 加加面条鲜
    64. 64 千岛湖超爽罐啤
    65. 65 千禾135高鲜酱油
    66. 66 千禾东坡红纯酿红烧
    67. 67 千禾头道原香
    68. 68 千禾年份料酒
    69. 69 千禾有机酱油
    70. 70 千禾糯米白醋
    71. 71 千禾糯米香醋
    72. 72 千禾鼎鼎鲜135头道原香
    73. 73 千禾鼎鼎鲜红烧酱油
    74. 74 厨邦味极鲜
    75. 75 厨邦渔女蚝油700G
    76. 76 厨邦美味鲜
    77. 77 厨邦草菇老抽
    78. 78 厨邦葱姜汁料酒500ML
    79. 79 厨邦蚝油
    80. 80 厨邦酱油晒制180天特级生抽
    81. 81 厨邦金品生抽
    82. 82 厨邦陈醋王420ML
    83. 83 厨邦黄豆酱
    84. 84 可口可乐罐装
    85. 85 可口可乐黑魔爪
    86. 86 味事达味极鲜
    87. 87 味事达纯味鲜
    88. 88 味达美冰糖老抽酱油
    89. 89 味达美冰糖老抽酱油1.8L
    90. 90 味达美冰糖老抽酱油1L
    91. 91 味达美压锅酱600G
    92. 92 味达美味极鲜酱油1L
    93. 93 味达美味极鲜酱油3.78L
    94. 94 味达美尚品生抽
    95. 95 味达美尚品生抽2L
    96. 96 味达美尚品老抽王1.8L
    97. 97 味达美尚品蚝油6.18KG
    98. 98 味达美海鲜捞汁2L
    99. 99 味达美清香米醋
    100. 100 味达美臻品料酒
    101. 101 味达美臻品生抽特级酱油
    102. 102 味达美臻品老抽酱油
    103. 103 味达美臻品蚝油
    104. 104 味达美酸汤酱
    105. 105 味达美酸辣捞汁2L
    106. 106 味达美鲜味生抽2L
    107. 107 哈尔滨冰爽330ml(件_6
    108. 108 哈尔滨冰纯罐啤组合包
    109. 109 哈尔滨小麦王罐啤
    110. 110 哈尔滨小麦王罐啤牛卡纸组合装
    111. 111 哈尔滨清爽330ml组合装
    112. 112 喜力啤酒330ml(件_6)组合装
    113. 113 喜力啤酒瓶装
    114. 114 嘉士伯特醇罐啤
    115. 115 嘉士伯特醇罐啤牛卡纸组合装
    116. 116 四季宝花生酱
    117. 117 娃哈哈AD钙奶
    118. 118 家安空调清洗剂360ml
    119. 119 尖叫多肽型
    120. 120 山水啤酒8330罐啤
    121. 121 崂山啤酒9度罐啤
    122. 122 崂山啤酒清爽8330ml罐啤
    123. 123 崂山啤酒清爽8500ml罐啤
    124. 124 崔字牌小磨香油448ML
    125. 125 巧媳妇原汁酱油1.3L
    126. 126 巧媳妇味极鲜
    127. 127 巧媳妇小米醋
    128. 128 巧媳妇臻蚝蚝油500G
    129. 129 巧媳妇黄豆酱818G
    130. 130 广式菠萝啤
    131. 131 康师傅冰糖雪梨
    132. 132 康师傅绿茶
    133. 133 康师傅茉莉清茶
    134. 134 建华纯芝麻油
    135. 135 怡宝矿泉水
    136. 136 恒顺9度米醋
    137. 137 恒顺料酒
    138. 138 恒顺料酒桶
    139. 139 恒顺精制料酒
    140. 140 恒顺葱姜(圆瓶)料酒480ML
    141. 141 恒顺酿造白醋
    142. 142 恒顺镇江香醋
    143. 143 恒顺香醋
    144. 144 恒顺黄酒
    145. 145 新松辣酱
    146. 146 旺仔牛奶
    147. 147 明治醇壹_优漾
    148. 148 星巴克250ml咖啡拿铁
    149. 149 星巴克250ml抹茶拿铁
    150. 150 星巴克250ml香草拿铁
    151. 151 有所思柠檬沙拉汁160ML
    152. 152 李锦记凉拌汁
    153. 153 李锦记味极鲜
    154. 154 李锦记味蚝鲜蚝油480G
    155. 155 李锦记秘制酱油410ML
    156. 156 李锦记精选生抽
    157. 157 李锦记精选老抽
    158. 158 李锦记纯香芝麻油410ML
    159. 159 李锦记草菇老抽
    160. 160 李锦记蒸鱼豉油750ML
    161. 161 李锦记薄盐味极鲜
    162. 162 李锦记薄盐生抽
    163. 163 李锦记薄盐醇味鲜
    164. 164 李锦记财神蚝油510G
    165. 165 李锦记锦珍老抽
    166. 166 李锦记鲜香红烧
    167. 167 桶装六月鲜特级酱油
    168. 168 桶装六月鲜红烧酱油
    169. 169 桶装味达美味极鲜
    170. 170 植选浓香豆乳
    171. 171 椰树牌椰汁
    172. 172 欣和寿司醋245ML
    173. 173 每日C果蔬汁300ml树莓红甜菜
    174. 174 每日C果蔬汁300ml百香果南瓜
    175. 175 每日C果蔬汁300ml金桔羽衣甘蓝
    176. 176 每日C橙汁300ml
    177. 177 每日C纯果汁果纤橙
    178. 178 每日C纯果汁桃汁
    179. 179 每日C纯果汁橙汁
    180. 180 每日C纯果汁胡萝卜汁
    181. 181 每日C纯果汁芒果
    182. 182 每日C纯果汁苹果
    183. 183 每日C纯果汁葡萄
    184. 184 每日C纯果汁葡萄柚
    185. 185 每益添
    186. 186 水动乐桃味600ml
    187. 187 海天上等蚝油700G
    188. 188 海天古道料酒450ml
    189. 189 海天味极鲜1.9L
    190. 190 海天味极鲜750ML
    191. 191 海天招牌拌饭酱香辣香菇味300G
    192. 192 海天招牌拌馅蚝油700G
    193. 193 海天招牌炒菜蚝油700G
    194. 194 海天招牌蚝油火锅蘸料725G
    195. 195 海天果真好醋450ML
    196. 196 海天海鲜酱油500ML
    197. 197 海天特级一品鲜500ML
    198. 198 海天特级味极鲜500ML
    199. 199 海天特级草菇老抽500ML
    200. 200 海天珍酿生抽
    201. 201 海天白米醋
    202. 202 海天白醋450ml
    203. 203 海天红烧酱油500ML
    204. 204 海天经典金标生抽1.9L
    205. 205 海天经典金标生抽500ML
    206. 206 海天经典鲜味生抽1.9L
    207. 207 海天经典鲜味生抽500ML
    208. 208 海天草菇老抽1.9L
    209. 209 海天草菇老抽500ML
    210. 210 海天蒸鱼豉油450ML
    211. 211 海天财宝蚝油
    212. 212 海天辣黄豆酱800G
    213. 213 海天金标生抽500ML
    214. 214 海天金标蚝油715G
    215. 215 海天陈醋
    216. 216 海天香醋
    217. 217 海天鲜味蚝油
    218. 218 海天鲜金标生抽500ML
    219. 219 海天黄豆酱2KG
    220. 220 海天黄豆酱800G
    221. 221 牛栏山41.6度小牛白酒500ml
    222. 222 牛栏山42.8度十八年陈酿500ml(大青牛)
    223. 223 牛栏山42度二锅头白酒2L
    224. 224 牛栏山42度陈酿白酒500ml
    225. 225 牛栏山53度二锅头净爽500ml
    226. 226 牛栏山56度二锅头白酒500ml
    227. 227 玉溪(软)
    228. 228 王致和料酒
    229. 229 王致和特制料酒
    230. 230 珍极米醋
    231. 231 瓶装六月鲜红烧酱油
    232. 232 瓶装六月鲜酱油
    233. 233 瓶装味达美味极鲜
    234. 234 白沙(天天向上)
    235. 235 百事可乐瓶装
    236. 236 百事可乐罐装塑封
    237. 237 百威美式拉格
    238. 238 皇厨鸡精袋
    239. 239 禾然乐童有机酱油160ML
    240. 240 禾然有机糙米醋
    241. 241 禾然有机豆瓣酱
    242. 242 禾然有机酱油
    243. 243 紫林白醋
    244. 244 红旗渠(芒果)
    245. 245 红旗渠(雪茄型)
    246. 246 红牛
    247. 247 纯甄
    248. 248 统一冰红茶
    249. 249 维他柠檬茶罐装
    250. 250 美年达橙味瓶装
    251. 251 美年达橙味罐装
    252. 252 美汁源果粒橙
    253. 253 老干妈
    254. 254 老恒和料酒系列
    255. 255 老才臣料酒
    256. 256 芙蓉王(硬75mm)
    257. 257 芬达橙味组合装v1
    258. 258 苏烟(软金砂)
    259. 259 营养快线
    260. 260 葱伴侣六月香甜面酱
    261. 261 葱伴侣六月香豆瓣酱
    262. 262 葱伴侣六月香豆瓣酱1.5KG
    263. 263 葱伴侣六月香豆瓣酱2KG
    264. 264 葱伴侣六月香辣椒酱
    265. 265 葱伴侣椒麻黄豆酱718G
    266. 266 葱伴侣活力时蔬酱342G
    267. 267 葱伴侣蒜蓉豆瓣酱300G
    268. 268 葱伴侣蒜蓉黄豆酱718G
    269. 269 葱伴侣袋装豆瓣酱
    270. 270 葱伴侣黄豆酱(辣味)718G
    271. 271 葱伴侣黄豆酱1.5KG
    272. 272 葱伴侣黄豆酱2.2KG
    273. 273 葱伴侣黄豆酱300G
    274. 274 葱伴侣黄豆酱500G
    275. 275 葱伴侣黄豆酱5KG
    276. 276 葱伴侣黄豆酱718G
    277. 277 葱伴侣黄豆酱800G
    278. 278 葱伴侣黄豆酱900G
    279. 279 蒙牛优益c
    280. 280 蒙牛纯甄瓶装红西柚味酸奶230g
    281. 281 谷物牛乳饮品300g燕麦谷粒
    282. 282 谷物牛乳饮品300g红豆紫米
    283. 283 谷物牛乳饮品300g藜麦玉米
    284. 284 谷物牛乳饮品950g燕麦谷粒
    285. 285 谷物牛乳饮品950g红豆紫米
    286. 286 豪格登啤酒
    287. 287 贝瑞斯塔barista
    288. 288 贝纳颂经典系列250ml拿铁
    289. 289 贝纳颂经典系列250ml摩卡
    290. 290 贝纳颂经典系列250ml蓝山
    291. 291 遵循自然原酿酱油
    292. 292 醇香米醋2L
    293. 293 醯官醋原浆米醋
    294. 294 醯官醋原浆苹果醋
    295. 295 金威啤酒
    296. 296 金龙鱼小磨香油220ML
    297. 297 金龙鱼香芝麻油400ML
    298. 298 钻石(细支荷花)
    299. 299 银鹭花生牛奶
    300. 300 键能
    301. 301 长白山(777
    302. 302 阿萨姆奶茶
    303. 303 雀巢美极鲜
    304. 304 雪碧罐装
    305. 305 雪花8度勇闯天涯500ml瓶装
    306. 306 雪花8度勇闯天涯500ml罐啤
    307. 307 雪花8度勇闯天涯罐啤_6组合装
    308. 308 雪花8度清爽
    309. 309 雪花9度勇闯天涯500ml瓶装
    310. 310 雪花冰酷330ml箱装
    311. 311 雪花冰酷9度罐啤
    312. 312 雪花勇闯天涯superX
    313. 313 雪花清爽8330_6罐啤组合装
    314. 314 雪花清爽8度箱装
    315. 315 雪花精制9500_6罐啤组合装
    316. 316 雪花纯生500ml瓶装
    317. 317 雪花纯生500ml组合装
    318. 318 雪花纯生罐啤
    319. 319 雪花脸谱花旦系列8500罐啤
    320. 320 青岛啤酒全麦白啤500罐啤
    321. 321 青岛啤酒奥古特500ml
    322. 322 青岛啤酒小棕金296瓶装
    323. 323 青岛啤酒淡爽8330罐啤
    324. 324 青岛啤酒清醇330ml
    325. 325 青岛啤酒纯生500ml罐啤
    326. 326 青岛啤酒纯生600ml瓶装
    327. 327 青岛啤酒经典10500罐啤
    328. 328 青岛啤酒经典11330罐啤
    329. 329 青岛啤酒经典11度罐啤牛卡纸组合装
    330. 330 青岛啤酒经典(190310330_6罐啤
    331. 331 青岛啤酒鸿运当头355瓶装
    332. 332 青岛啤酒黑啤酒500罐啤
    333. 333 鲁花凉拌香醋
    334. 334 鲁花料酒
    335. 335 鲁花生鲜蚝油518G
    336. 336 鲁花糯米白醋
    337. 337 鲁花自然鲜炒菜香酱油
    338. 338 鲁花自然鲜红烧酱油
    339. 339 鲁花自然鲜酱香酱油
    340. 340 鲁花黑糯米醋
    341. 341 黄金叶(乐途)
    342. 342 黄金叶(名扬天下)
    343. 343 黄金叶(大M)
    344. 344 黄金叶(大金圆)
    345. 345 黄金叶(天香细支)
    346. 346 黄金叶(小目标)
    347. 347 黄金叶(小黄金)
    348. 348 黄金叶(悦尚)
    349. 349 黄金叶(浓香细支)
    350. 350 黄金叶(爱尚)
    351. 351 黄金叶(牛仔)
    352. 352 黄金叶(豫烟2号)
    353. 353 黄金叶(豫香)
    354. 354 黄金叶(金满堂)
    355. 355 黄金叶(黄金眼)
    356. 356 黄鹤楼(天下名楼)
    357. 357 黄鹤楼(软蓝)

    可以看到:覆盖面是很广的,有将近400种的商品类型。

    接下来简单看几个类别的数据实例,如下所示:

    本文使用的是前面应用到的GhostNet模型,GhostNet 是一种轻量级卷积神经网络,是专门为移动设备上的应用而设计的。其主要构件是 Ghost 模块,一种新颖的即插即用模块。Ghost 模块设计的初衷是使用更少的参数来生成更多特征图 (generate more features by using fewer parameters)。

    官方论文地址在这里,如下所示:

    官方也开源了项目,地址在这里,如下所示:

    可以详细阅读官方的代码实例即可,之后可以基于自己的数据集来开发构建模型即可。

    这里给出GhostNet的核心实现部分,如下所示:
     

    1. class GhostNet(nn.Module):
    2. def __init__(self, cfgs, num_classes=1000, width_mult=1.0):
    3. super(GhostNet, self).__init__()
    4. self.cfgs = cfgs
    5. output_channel = _make_divisible(16 * width_mult, 4)
    6. layers = [
    7. nn.Sequential(
    8. nn.Conv2d(3, output_channel, 3, 2, 1, bias=False),
    9. nn.BatchNorm2d(output_channel),
    10. nn.ReLU(inplace=True),
    11. )
    12. ]
    13. input_channel = output_channel
    14. block = GhostBottleneck
    15. for k, exp_size, c, use_se, s in self.cfgs:
    16. output_channel = _make_divisible(c * width_mult, 4)
    17. hidden_channel = _make_divisible(exp_size * width_mult, 4)
    18. layers.append(
    19. block(input_channel, hidden_channel, output_channel, k, s, use_se)
    20. )
    21. input_channel = output_channel
    22. self.features = nn.Sequential(*layers)
    23. output_channel = _make_divisible(exp_size * width_mult, 4)
    24. self.squeeze = nn.Sequential(
    25. nn.Conv2d(input_channel, output_channel, 1, 1, 0, bias=False),
    26. nn.BatchNorm2d(output_channel),
    27. nn.ReLU(inplace=True),
    28. nn.AdaptiveAvgPool2d((1, 1)),
    29. )
    30. input_channel = output_channel
    31. output_channel = 1280
    32. self.classifier = nn.Sequential(
    33. nn.Linear(input_channel, output_channel, bias=False),
    34. nn.BatchNorm1d(output_channel),
    35. nn.ReLU(inplace=True),
    36. nn.Dropout(0.2),
    37. nn.Linear(output_channel, num_classes),
    38. )
    39. self._initialize_weights()
    40. def forward(self, x, need_fea=False):
    41. if need_fea:
    42. features, features_fc = self.forward_features(x, need_fea)
    43. x = self.classifier(features_fc)
    44. return features, features_fc, x
    45. else:
    46. x = self.forward_features(x)
    47. x = self.classifier(x)
    48. return x
    49. def forward_features(self, x, need_fea=False):
    50. if need_fea:
    51. input_size = x.size(2)
    52. scale = [4, 8, 16, 32]
    53. features = [None, None, None, None]
    54. for idx, layer in enumerate(self.features):
    55. x = layer(x)
    56. if input_size // x.size(2) in scale:
    57. features[scale.index(input_size // x.size(2))] = x
    58. x = self.squeeze(x)
    59. return features, x.view(x.size(0), -1)
    60. else:
    61. x = self.features(x)
    62. x = self.squeeze(x)
    63. return x.view(x.size(0), -1)
    64. def _initialize_weights(self):
    65. for m in self.modules():
    66. if isinstance(m, nn.Conv2d):
    67. nn.init.kaiming_normal_(m.weight, mode="fan_out", nonlinearity="relu")
    68. elif isinstance(m, nn.BatchNorm2d):
    69. m.weight.data.fill_(1)
    70. m.bias.data.zero_()
    71. def cam_layer(self):
    72. return self.features[-1]

    这里我们默认执行100次的epoch迭代计算,结果如下:

    【loss曲线】

    【准确率曲线】

    这里因为类别数量过于庞大,所以这里就不再绘制混淆矩阵了。感兴趣的话可以自行尝试一下。

  • 相关阅读:
    JVM 直接内存
    day3 leetcode20 有效的括号
    二叉树路径问题+递归+有关题目
    C#开发的OpenRA游戏之金钱系统(3)
    【LeetCode热题100】--55.跳跃游戏
    CSDN竞赛11期题解
    Linux之(6)Kconfig基础知识
    手机投屏电脑软件AirServer5.6.3.0最新免费版本下载
    商用车第一张,比亚迪引领汽车智能网联安全合规新趋势
    深度学习入门(二十三)卷积神经网络——图像卷积
  • 原文地址:https://blog.csdn.net/Together_CZ/article/details/133321426