{
  "fetched_at": "2026-10-19T07:47:28Z",
  "source_url": "https://www.kaggle.com/competitions/cs5785-fall-2021-final/data",
  "pages": [
    {
      "name": "data-description",
      "content": "- **images_train** - 10,000 training images of size 224x224.\n- **images_test** - 2,000 test images of size 224x224.\n- **tags_train** - image tags correspond to training images. Each image have several tags indicating the human-labeled object categories appear in the image, in the form of \"supercategory:category\".\n- **tags_test** - image tags correspond to test images. Each image have several tags indicating the human-labeled object categories appear in the image, in the form of \"supercategory:category\".\n- **features_train** - features extracted from a pre-trained Residual Network (ResNet) on training set, including 1,000 dimensional feature from classification layer (fc1000) and 2,048 dimensional feature from final convolution layer (pool5). Each dimension of the fc1000 feature corresponds to a WordNet synset here.\n- **features_test** - features extracted from the same Residual Network (ResNet) on test set, including 1,000 dimensional feature from classification layer (fc1000) and 2,048 dimensional feature from final convolution layer (pool5). descriptions_train - image descriptions correspond to training images. Each image have 5 sentences for describing the image content.\n- **descriptions_test** - image descriptions for test images. Each image have 5 sentences for describing the image content. Notice that one test description corresponds to one test image. The task you need to do is to return top 20 images in test set for each test description.\n- **sample_submission.csv** - a sample submission file in the correct format.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "# About the Exam\n\nThe format of the exam is a mock conference submission. You will develop an algorithm, submit your results to Kaggle, and prepare a professional paper describing your work. There are two deliverables:\n\n- Step 1: Develop your algorithm\n    - Build an algorithm and submit your first entry* to the Kaggle leaderboard by **Monday, Dec 6th, 11:59PM**.\n    - Develop your algorithm and submit your results to Kaggle. You will then select 2 submissions to be used for your final leaderboard score. The last submission is due by **Monday, Dec 13th, 11:59PM**.\n    \n- Step 2: Write and submit your report\n    - Write your professional paper and submit it to Gradescope. There should only be one submission per team. The deadline for your paper submission is **Monday, Dec 13th, 11:59PM**. Make sure to include your team name and team members Kaggle usernames in your report.\n\n*This can be as simple as you'd like, your team's name just needs to appear on the Kaggle leaderboard by Dec 6th.\n\n# The Challenge: Build a large-scale image search engine!\n\nYou and your team are surely on the path to fame and fortune! You have been recruited by Google to disrupt Google Image Search by building a better search engine using novel statistical learning techniques.\n\nThe specifications are simple: We need a way to search for relevant images given a natural language query. For instance, if a user types \"dog jumping to catch frisbee\", your system will **rank-order the most relevant images** from a large database.\n\nHere are some details:\n\n- **During training**, you have a dataset of 10,000 samples. Each sample has the following data available for learning:\n    - A 224x224 JPG image.\n    - A list of tags indicating objects appeared in the image.\n    - Feature vectors extracted using [ResNet](https://arxiv.org/abs/1512.03385), a state-of-the-art Deep-learned CNN (You don't have to train or run ResNet -- we are providing the features for you). See [here](http://ethereon.github.io/netscope/#/gist/b21e2aae116dc1ac7b50) for the illustration of the ResNet-101 architecture. The features are extracted from pool5 and fc1000 layer.\n    - A five-sentence description, used to train your search engine.\n\n- **During testing**, your system matches a single five-sentence description against a pool of 2,000 candidate samples from the test set. Each sample has:\n    - A 224x224 JPEG image.\n    - A list of tags for that image.\n    - ResNet feature vectors for that image.\n\n- **Output:** For each description, your system must rank-score each testing image with the likelihood of that image matches the given sentence. Your system then returns the name of the top 20 relevant images, delimited by space. See \"sample_submission.csv\" in the [Data](https://www.kaggle.com/c/cs5785-fall-2021-final/data) section for more details on the output format.\n\n- **Evaluation metric:** There are 2,000 descriptions, and for each description, you must compare against the entire 2,000-image test set. That is, rank-order test images for each test description. We will use [MAP@20](http://fastml.com/what-you-wanted-to-know-about-mean-average-precision/) as the evaluation metric. If the corresponding image of a description is among your algorithm's 20 highest scoring images, this metric gives you a certain score based on the ranking of the corresponding image. Please refer to the evaluation page for more details.\n\nUse all of your skills, tools, and experience. It is OK to use libraries like numpy, scikit-learn, pandas, etc., as long as you cite them. Use cross-validation on training set to debug your algorithm. Submit your results to Kaggle and send your complete writeup to Gradescope. The data you use --- and the way you use the data --- is completely up to you.\n\nThe best teams** might use visualization techniques for debugging (e.g., show top images retrieved by your algorithm and see whether they make sense or not), preprocessing, a nice way to compare tags and descriptions, leveraging visual features and combining them with tags and descriptions, supervised and/or unsupervised learning to best understand how to best take advantage of each data source available to them.\n\nThe best reports will be professionally written. We suggest including an **Abstract**, followed by an **Introduction** section including motivations of your method and a detailed description of each step in your pipeline / framework you used for this task. Then, include a detailed **Experiment** section and a **Results** section. If time permits, a **Background / Related Work** section can help to point out the relevant work in the image retrieval literature.\n\nThe best reports use a professional style adopted by a major academic conference. NeurIPS is a good choice. Teams can download a template from the [NeurIPS Style Files](https://nips.cc/Conferences/2021/PaperInformation/StyleFiles). We recommend you to use the LaTeX template, but this is not a requirement. If you're more familiar with Word, use Word.\n\nThe best teams understand how to divide the precious time and energy among all members of the group. They might split into roles, preventing programming students from messing up the writing and ensuring writing gurus don't screw up the code. Close contact is always maintained within top-performing teams. When hardship happens within the best teams, blame is not assigned---it is overcome.\n\n**May the best team win!**\n\n**Recall, the team should consist of 3 students if you participated in the final match-up, otherwise only 2 students.\n\n# Rules\n\nYou are strongly encouraged to work in a group of two students (or three if you participated in the final team match-up).\n\nGroups may not collaborate with other groups. You cannot cite other teams' work. This includes sharing data, intermediate and final results, writing, or discussing your detailed method with other groups. \n\nHowever, you are encouraged to ask questions and share code snippets on the Kaggle forum under the **Discussion** and **Code** tabs. The code snippets **should not be** full solutions, but rather insights, e.g. data visualizations, an interesting technique for data processing, etc. Make sure to balance the fact that you are in competition with other teams with helping your peers. If you decide to participate in this way, you will receive extra credit (see the [Score Breakdown](#Score-Breakdown) section). If you end up using some of the code snippets in your submission, make sure to cite the team that provided it. \n\n# Timeline\n\n- **Monday, Nov 22nd:** Final description and data is released.\n- **Monday, Nov 29th:** The Kaggle competition is launched.\n- **Wednesday, Dec 1st:** Miruna will go over useful \"getting started\" exercises in class. Please make sure to look at the challenge/data by then.\n- **Monday, Dec 6th, 11:59PM:** First submission to Kaggle is due.\n- **Monday, Dec 13th, 11:59PM:** Final submission to Kaggle and report is due. Kaggle competition closes. \n\n# Score Breakdown\n\n- Kaggle: 50 points total calculated as:\n    - 10 pts for submitting a first prediction to Kaggle by Dec 6th, 11:59PM.\n    - 20 pts for being 25% above baseline\n    - 20 pts given as 20pt*(your_score-min_score)/(max_score - min_score)\n- Method: 50 points calculated as:\n    - 25 points for method quality and reasonableness/innovativeness of approach\n    - 25 points for quality of report\n- Extra credit: 10 points for participation in the Kaggle **Discussion** and/or **Code** sections. \n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "The evaluation metric is Mean Average Precision at 20 (MAP@20) on the test set. A good explanation of the metric can be found [here](http://fastml.com/what-you-wanted-to-know-about-mean-average-precision/).\n\nIn our case, there is only one true corresponding image. So for a description, suppose your algorithm finds the corresponding image in the list of top 20 images you return, and is ranked i-th. Then MAP@20 gives a score of:\n\n$$score=\\frac{1}{i}$$\n\nFor example, if it's ranked 1st you get a score of 1, if it's ranked 2nd you get a score of 0.5, if it's ranked 3rd you get a score of 0.333, if it's ranked 20th you get a score of 0.05, etc. If the corresponding image isn't in your list of top 20 images you get a score of 0. The overall score is calculated as the average score on the test set.\n\nWe divide the test set into two splits: a public split and a private split. Results on the Leaderboard are evaluated on the public split and the private split is used for grading.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "## One account per participant\nYou cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.\n\n## No private sharing outside teams\n\nPrivately sharing code or data outside of teams is not permitted. It's okay to share code if made available to all participants on the forums.\n\n## Team Mergers\n\nTeam mergers are not allowed in this competition.\n\n## Team Limits\n\nYou may work in teams up to size 2 (or 3).\n\n## Submission Limits\n\nYou may submit a maximum of 20 entries per day.\n\nYou may select up to 5 final submissions for judging.\n\n## Competition Timeline\n\nStart Date: **11/29/2021** \n\n1st Submission Deadline: **12/06/2021 11:59PM EST**\n\nEnd Date: **12/13/2021 11:59PM EST**\n\nYou are strongly encouraged to work in a group of two (or three if you participated in the final team match-up) students.\nGroups may not collaborate with other groups. You cannot cite other team's work. This includes sharing data, intermediate and final results, writing, or discussing your detailed method with other groups. You may not view reports from other teams until after the submission deadline has passed. \n\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}