Challenge Overview
Problem Statement | |||||||||||||
Prize DistributionPrize USD 1st $8,000 2nd $5,000 3rd $3,500 4th $2,000 5th $1,500 Total Prizes $20,000 To be eligible for cash prizes, you must score at least 800,000. If any contestant scores at least 900,000, then the total prize pool increases to $35,000. On top of the main prizes listed above, the extra $15,000 will be split among those in the top 5 who scored above 900,000, in the same proportions as the main prizes. In addition to the money prizes, the highest scoring contestant will receive a free trip to the 2018 Topcoder Open in Dallas, TX, USA. There is no score threshold to beat to receive this special award. Contestants should at least score 500,000 to get TCO19 points. Learn more here. SummaryIn this challenge, competitors are tasked with detecting workers on videos captured in industrial settings and tell whether they wear certain kinds of personal protective equipment (PPE). Your task will be to analyze such videos and report how many workers are present, and where, and what kind of PPE they wear or use. Your reported detections will be compared to manually created ground truth data, and the quality of your solution will be judged by a combination of F-score metrics for each type of PPE. See Scoring for details. Input FilesVideo files The videos are available for download from an AWS bucket. Connection details are shared in the forum of a separate challenge that you need to register in order to access the data. Altoghether we have roughly 2000 minutes of video, these are distributed into training / provisional testing / final testing sets using a 60% / 20% / 20% split. Notes on the videos:
Important note: The videos must not be used for anything else than for the purposes of this challenge. You must not share them further, and must delete them from all your devices when the contest is over. Annotation files The location of people and the PPE they wear or use is referred to as 'ground truth' in this document. These data are given in TXT files using a format and content that can be best understood by looking at the Labeling Guide which was used by the people creating the hand made annotations (labels). Please study this guide carefully to fully understand the ground truth data. The following is just a list of the most important points.
The ground truth data was created manually and it is of high quality. Nevertheless, as in all real life problems, it may contain errors. Also you may annotate scenes differently than how the annotators did. Annotation files are available in the AWS bucket as a single .zip file, see /training/annotations.zip. In case you don't want to download the full set, use the /training/sample-data.zip that contains also the annotations of the 5 sample videos. Output FileYour output must be a single TXT file that contains sections, each section corresponds to one video in the test set (/testing folder of the AWS bucket). A section consists of a line that contains the file name (header line), and several lines that contain TAB-separated data corresponding to time-stamped detections (data lines). The exact format of a section is the following: <FILE_NAME> <TIME><TAB>person:<BOX>[<TAB>hat:<BOX>][<TAB>earmuff:<BOX>][<TAB>harness:<BOX>][<TAB>lanyard:<BOX>] ... // more data lines where
A data line represents a single person who is present on the video at the given time stamp and optionally wears or uses any of the 4 known PPE types.
The file should contain a data line for each second of the video when you detect that people are present. (Note that this is different from the way the annotation files are formatted, in the annotation files events are added only when something is changed.) Add multiple lines using the same time stamp if there are more than one person present in view at the same time. Some examples using a hypothetical, 5 second long test video. (For better readability of this document spaces are used instead of TABs, but in your submission you should use TABs.) One person present, wears a hat and no other PPE, doesn't move. test-video-1.mov 00:00 person:50,30,20,40 hat:60,30,5,3 00:01 person:50,30,20,40 hat:60,30,5,3 00:02 person:50,30,20,40 hat:60,30,5,3 00:03 person:50,30,20,40 hat:60,30,5,3 00:04 person:50,30,20,40 hat:60,30,5,3 The same as the above, but the worker walks left and leaves the scene at 00:03. Note the missing line for 00:04. test-video-1.mov 00:00 person:50,30,20,40 hat:60,30,5,3 00:01 person:30,30,20,40 hat:40,30,5,3 00:02 person:20,30,20,40 hat:30,30,5,3 00:03 person:10,30,20,40 hat:20,30,5,3 Two workers wearing hats walk from left to right. The one to the right also has earmuffs. They walk off the scene at the end of the video. They exit from view at different times. test-video-1.mov 00:00 person:50,30,20,40 hat:60,30,5,3 00:00 person:60,30,20,40 hat:70,30,5,3 earmuff:70,35,4,4 00:01 person:70,30,20,40 hat:80,30,5,3 00:01 person:80,30,20,40 hat:90,30,5,3 earmuff:80,35,4,4 00:02 person:90,30,20,40 hat:95,30,5,3 One worker has a harness, and at 00:03 you detect that he also has a lanyard test-video-1.mov 00:00 person:50,30,20,40 harness:50,40,20,20 00:01 person:50,30,20,40 harness:50,40,20,20 00:02 person:50,30,20,40 harness:50,40,20,20 00:03 person:50,30,20,40 harness:50,40,20,20 lanyard:50,30,30,50 00:04 person:50,30,20,40 harness:50,40,20,20 lanyard:50,30,30,50 Notes and special cases:
Constraints
FunctionsThis match uses the result submission style, i.e. you will run your solution locally using the provided files as input, and produce a TXT or ZIP file that contains your answer. Although during the online submission phase only your results will be verified, it is important to keep in mind that in the final testing phase you will need to set up a working system that on one hand demonstrates that you have a fully automated solution for solving the problem, and on the other hand meets certain requirements set by the contest stakeholders:
In order for your solution to be evaluated by Topcoder's marathon system, you must implement a class named ProtectiveEquipmentDetector, which implements a single function: getAnswerURL(). Your function will return a String corresponding to the URL of your submission file. You may upload your files to a cloud hosting service such as Dropbox or Google Drive, which can provide a direct link to the file. To create a direct sharing link in Dropbox, right click on the uploaded file and select share. You should be able to copy a link to this specific file which ends with the tag "?dl=0". This URL will point directly to your file if you change this tag to "?dl=1". You can then use this link in your getAnswerURL() function. If you use Google Drive to share the link, then please use the following format: "https://drive.google.com/uc?export=download&id=" + id Note that Google has a file size limit of 25MB and can't provide direct links to files larger than this. (For larger files the link opens a warning message saying that automatic virus checking of the file is not done.) You can use any other way to share your result file, but make sure the link you provide opens the filestream directly, and is available for anyone with the link (not only the file owner), to allow the automated tester to download and evaluate it. An example of the code you have to submit, using Java: public class ProtectiveEquipmentDetector { public String getAnswerURL() { //Replace the returned String with your submission file's URL return "https://drive.google.com/uc?export=download&id=XYZ"; } } Keep in mind that your complete code that generates these results will be verified at the end of the contest if you achieve a score in the top 10, as described later in the "Requirements to Win a Prize" section, i.e. participants will be required to provide fully automated executable software to allow for independent verification of the performance of your algorithm and the quality of the output data. ScoringA full submission will be processed by the Topcoder Marathon test system, which will download, validate and evaluate your submission file. Any malformed or inaccessible file, or one that violates any of the constraints listed in the "Output file" section will receive a zero score. If your submission is valid, your solution will be scored as follows.
See the source code of the offline scorer tool for the detailed algorithm of scoring. For matching the detected people to the set of expected ones we use the Hungarian algorithm, and require that matching points are closer to each other than 50 (measured in screen percentage units). Example submissions can be used to verify that your chosen approach to upload submissions works. The tester will verify that the returned String contains a valid URL, its content is accessible, i.e. the tester is able to download the file from the returned URL. If your file is valid, it will be evaluated, and detailed scores will be available in the test results. The example evaluation is based on a small subset of the training data containing 5 videos, the video files within the /training/sample-data.zip package is used for this purpose. Though recommended, it is not mandatory to create example submissions. The scores you achieve on example submissions have no effect on your provisional or final ranking. Example submissions can be created using the "Test Examples" button on TopCoder's submission uploader interface. Full submissions must contain in a single file all the detections that your algorithm made in all test videos of the /testing folder of the contest's AWS bucket. Full submissions can be created using the "Submit" button on TopCoder's submission uploader interface. Final ScoringThe top 10 competitors after the provisional testing phase will be invited to the final testing round. Within 5 days after the provisional testing phase you are required to submit a dockerized version of your code that we can use to test your system. The technical details of this process are described in a separate document. Your solution will be subjected to three tests: First, your solution will be validated, i.e. we will check if it produces the same output file as your last submission, using the same input files used during provisional testing. Note that this means that your solution must not be improved further after the provisional submission phase ends. (We are aware that it is not always possible to reproduce the exact same results. E.g. if you do online training then the difference in the training environments may result in different number of iterations, meaning different models. Also you may have no control over random number generation in certain 3rd party libraries. In any case, the results must be statistically similar, and in case of differences you must have a convincing explanation why the same result can not be reproduced.) Second, your solution will be tested against a set of new video files. The number and size of these new set of videos will be similar to the one you downloaded as testing data. Also the scene content will be similar. Third, the resulting output from the steps above will be validated and scored. The final rankings will be based on this score alone. Competitors who fail to provide their solution as expected will receive a zero score in this final scoring phase, and will not be eligible to win prizes. Additional Resources
General Notes
Requirements to win a prizeFinal prizes In order to receive a final prize, you must do all the following: Achieve a score in the top five of the average score of all cities, according to final system test results. See the "Final scoring" section above. Once the final scores are posted and winners are announced, the prize winner candidates have 7 days to submit a report outlining their final algorithm explaining the logic behind and steps to its approach. You will receive a template that helps creating your final report. If you place in a prize winning rank but fail to do any of the above, then you will not receive a prize, and it will be awarded to the contestant with the next best performance who did all of the above. | |||||||||||||
Definition | |||||||||||||
| |||||||||||||
Examples | |||||||||||||
0) | |||||||||||||
|
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2020, TopCoder, Inc. All rights reserved.