{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/b-cnn-branch-convolutional-neural-network-for","title":"B-CNN: Branch Convolutional Neural Network for Hierarchical Classification","arxiv_id":"1709.09890","date":"2017-09-28","proceeding":null,"authors":["Xinqi Zhu","Michael Bain"],"abstract":"Convolutional Neural Network (CNN) image classifiers are traditionally\ndesigned to have sequential convolutional layers with a single output layer.\nThis is based on the assumption that all target classes should be treated\nequally and exclusively. However, some classes can be more difficult to\ndistinguish than others, and classes may be organized in a hierarchy of\ncategories. At the same time, a CNN is designed to learn internal\nrepresentations that abstract from the input data based on its hierarchical\nlayered structure. So it is natural to ask if an inverse of this idea can be\napplied to learn a model that can predict over a classification hierarchy using\nmultiple output layers in decreasing order of class abstraction. In this paper,\nwe introduce a variant of the traditional CNN model named the Branch\nConvolutional Neural Network (B-CNN). A B-CNN model outputs multiple\npredictions ordered from coarse to fine along the concatenated convolutional\nlayers corresponding to the hierarchical structure of the target classes, which\ncan be regarded as a form of prior knowledge on the output. To learn with\nB-CNNs a novel training strategy, named the Branch Training strategy\n(BT-strategy), is introduced which balances the strictness of the prior with\nthe freedom to adjust parameters on the output layers to minimize the loss. In\nthis way we show that CNN based models can be forced to learn successively\ncoarse to fine concepts in the internal layers at the output stage, and that\nhierarchical prior knowledge can be adopted to boost CNN models' classification\nperformance. Our models are evaluated to show that the B-CNN extensions improve\nover the corresponding baseline CNN on the benchmark datasets MNIST, CIFAR-10\nand CIFAR-100.","url_abs":"http://arxiv.org/abs/1709.09890v2","url_pdf":"http://arxiv.org/pdf/1709.09890v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"b-cnn-branch-convolutional-neural-network-for","repo_url":"https://github.com/zhuxinqimac/B-CNN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"b-cnn-branch-convolutional-neural-network-for","repo_url":"https://github.com/hitman567/hierarchical-classification","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"b-cnn-branch-convolutional-neural-network-for","repo_url":"https://github.com/salmatfq/B-CNNModelForBuildingClassification","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"classification-1","task_name":"Classification"},{"task_slug":"classification","task_name":"General Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1709.09890","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1709.09890"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hitman567/hierarchical-classification","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zhuxinqimac/B-CNN","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/salmatfq/B-CNNModelForBuildingClassification","reach":{"status":"ok"}}],"summary":{"ran_honours":2,"unverified":1},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":2,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":2,"samples":[{"code_sha256_prefix":"3f96679a64874a25","entry":"scheduler","repo":"hitman567/hierarchical-classification","repo_kind":"listed","path":"train_val.py","file_url":"https://github.com/hitman567/hierarchical-classification/blob/HEAD/train_val.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f96679a64874a25"}},{"code_sha256_prefix":"b0ef63c7b272fe36","entry":"scheduler","repo":"zhuxinqimac/B-CNN","repo_kind":"official","path":"CIFAR_10_keras_medium.py","file_url":"https://github.com/zhuxinqimac/B-CNN/blob/HEAD/CIFAR_10_keras_medium.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b0ef63c7b272fe36"}},{"code_sha256_prefix":"344bbc560e0bb21e","entry":"image_resize","repo":"hitman567/hierarchical-classification","repo_kind":"listed","path":"train_val.py","file_url":"https://github.com/hitman567/hierarchical-classification/blob/HEAD/train_val.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"344bbc560e0bb21e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}