A Dual Weighting Label Assignment Scheme for Object Detection
This repo hosts the code for implementing the DW, as presented in our CVPR 2022 paper.
Introduction
Label assignment (LA), which aims to assign each training sample a positive (pos) and a negative (neg) loss weight, plays an important role in object detection. Existing LA methods mostly focus on the design of pos weighting function, while the neg weight is directly derived from the pos weight. Such a mechanism limits the learning capacity of detectors. In this paper, we explore a new weighting paradigm, termed dual weighting (DW), to specify pos and neg weights separately. We first identify the key influential factors of pos/neg weights by analyzing the evaluation metrics in object detection, and then design the pos and neg weighting functions based on them. Specifically, the pos weight of a sample is determined by the consistency degree between its classification and localization scores, while the neg weight is decomposed into two terms: the probability that it is a neg sample and its importance conditioned on being a neg sample. Such a weighting strategy offers greater flexibility to distinguish between important and less important samples, resulting in a more effective object detector. Equipped with the proposed DW method, a single FCOS-ResNet-50 detector can reach 41.5 mAP on COCO under 1x schedule, outperforming other existing LA methods. It consistently improves the baselines on COCO by a large margin under various backbones without bells and whistles.
Installation
This DW implementation is based on MMDetection. Therefore the installation is the same as original MMDetection.
Please check get_started.md for installation. Make sure the version of MMDetection is larger than 2.18.0.
Results and Models
For your convenience, we provide the following trained models. These models are trained with a mini-batch size of 16 images on 8 Nvidia RTX 3090 GPUs (2 images per GPU).
The MS-train maximum scale range is 1333x[480:960] (range mode) and the inference scale keeps 1333×800.
DCN means using DCNv2 in both backbone and head.
Inference
Assuming you have put the COCO dataset into data/coco/ and have downloaded the models into the weights/, you can now evaluate the models on the COCO val2017 split:
@inproceedings{shuai2022DW,
title={A Dual Weighting Label Assignment Scheme for Object Detection},
author={Li, Shuai and He, Chenhang and Li, Ruihuang and Zhang, Lei},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2022}
}
# boot-vue
├─.github # Stores GitHub related configuration files.
│ ├─ISSUE_TEMPLATE # GitHub Issue templates
│ └─workflows # GitHub Actions related configuration files
├─.husky # Stores Git Hooks related configuration files
│ └─_ # Stores Git Hooks execution scripts
├─.idea # Stores IntelliJ IDEA related configuration files
│ ├─codeStyles # Stores code formatting rules
│ └─inspectionProfiles # Stores code inspection rules
├─.vscode # Stores VS Code related configuration files
├─public # Stores static resources required by the web application
├─README.assets # Stores images and other resources used by README.md
├─src # Stores the source code of the web application
│ ├─assets # Stores static resources required by the web application
│ ├─components # Stores the components of the web application
│ │ └─Icon # Stores the components representing icons
│ ├─config # Stores the configuration files of the web application
│ │ ├─nprogress # Stores the configuration file of the progress bar library NProgress
│ │ └─unocss # Stores the configuration file of the UnoCSS
│ ├─constant # Stores the constant values used in the web application
│ ├─layouts # Stores the layout components of the web application
│ │ ├─Footer # Stores the layout component representing the footer of the page
│ │ └─Navbar # Stores the layout component representing the navigation bar of the page
│ │ └─components # Stores the child components of the Navbar layout component
│ │ ├─LocalesChange # Stores the child component representing language switch
│ │ └─ThemeChange # Stores the child component representing theme switch
│ ├─locales # Stores the content files of the web application's multiple languages
│ ├─router # Stores the routing configuration files of the web application
│ │ └─routes # Stores the modules of the web application's routes
│ │ └─modules # Stores the sub-modules of the routing modules of the web application
│ ├─store # Stores the state management files of the web application
│ ├─styles # Stores the style files of the web application
│ └─views # Stores the page components of the web application
│ ├─errorPages # Stores the components representing error pages
│ └─home # Stores the components representing the homepage
│ └─components # Stores the child components of the homepage components
├─test # Stores the test code
│ └─__snapshots__ # Stores the Jest snapshot test results
└─types # Stores the TypeScript type declaration files
Adding transmitter controllable components to Syma X5/X8 and MJX Bugs 3 quadcopters with an Arduino/Arduino compatible board, via the camera port.
How it works:
Despite being in different shells, most models of the Syma X5 & X8 series quadcopters feature the same type of camera, controllable using the stock transmitter/radio. The MJX Bugs 3 also works in the same way. When the picture or video buttons are pressed on the transmitter a signal is sent to the camera via the yellow signal wire on the Syma/FPV port on the MJX Bugs 3.
The signal wire starts high (3.7v for X5 models/MJX Bugs 3, 5v for the X8’s) dropping to 0v for 0.25 seconds for picture, and 0.75 seconds for video.
Using an small, lightweight Arduino/Arduino compatible board, this sketch reads the signal wire from the Syma/Bugs 3 and allows you to run your own code for components that you might want to add to the quad. (e.g. a servo, extra LEDs, sensors, IR emitter etc.). These components can be controlled from the stock transmitter using the picture/video buttons.
The Arduino board can be soldered directly into the quads (for a more pearmeant setup) or utilise the different camera ports to make it removable.
Compatible models:
The sketch has been tested on a Syma X5C using an Adafruit Trinket (3.3 v) to control a servo, and a camera switcher and buzzer on the MJX Bugs 3… however this technique should also be applicable to the following models (please get in contact is this does or does not work for you):
Syma X5 Series
X5C/X5C-1
X5S/X5SW
X5HW
! The X5UC/X5UW’s are a noticeably different to older X5 models and use a new camera with 4 wires. It’s not clear what kind of signal is sent to the camera to activate it.
Syma X8 Series
X8C/X8HC
X8W/X8HW
X8G/X8HG <– Different camera, but signal should be the same
MJX Bugs 3
Discovered that this also works for the MJX Bugs 3 and it’s FPV port inside the shell!
NOT : Self bot usage is prohibited by Discord. If your account is terminated by Discord, the responsibility lies with you.
First, open Discord and press the F12 key to open the developer tools console. Click on the Network tab.
Next, type some random text in a server on Discord. Then, click on your own username.
In the Network tab, click on a tab called Science and scroll down the page.
Find the Authorization: text and you will see your user token in the adjacent area. Copy this token.
Next, download the provided file and open the .env file inside it. In the .env file, you will find an entry UserToken=. Paste your token to the right side of this entry.
Cassitory allows you to handle redundancy tables in Cassandra (In case that Apache Spark is not an option or to complex for your needs)
In a normal scenario you would have to define a cassandra entity per table that holds the cassandra annotations, and for each of them a Repository
that will be used by your service coordinating all the write operations and making sure that you persist
to both tables by using both repositories, therefore you will have to create one instance per cassandra entity to persist.
The idea behind Cassitory is to hide all that complexity from you.
Although you will still need to have your cassandra entities but no Repositories, no creation of multiple Cassandra entity instances.
Instead you will have DTO that contains the data and knows how to map to each Cassandra entity and a Single repository to handle all the persistence layer to the multiple tables.
Based on the mapping it will create an instance of each Cassandra Entity and save it.
ASYNC is awesome! so you can save and delete using async operations but also provides a sync way in case that you have go down that route.
NO REFLEXION:
Cassitory does not use reflexion to do all the operations that provides and because of it there are some compromises if you want to use it.
Your Cassandra entities must have a Getters and Setters.
Your DTO must have Getters.
Cassitory use annotation processing to generate code than otherwise you would have to write it and it is quite good that if there is any error you would get it at compile time.
Important Release Note:
up to 0.2.1: supports only Mappers Repositories
higher than 1.0.0: support for Mappers and Prepered statements
Motivation
it is well known that Cassandra recommends de-normalisation of your model. Meaning that in order to support different search criteria for searching the data, Cassandra recommends to create a redundancy table
having as partition key the fields that you want search for. Applying this pattern in your application could be very difficult to maintain. it would be nice to have a generic repository that allowing you to
have support multiple tables and also execute queries and decide which table is the correct one.
Introduction
Cassitory is quite simple to use just following the steps and it will give you a Repository for your DTO ready to use in your application.
Cassitory gives you two type of repositories.
Using Cassandra entities
The first one is by using Cassandra Entities Classes where you have to create your POJO and annotate them using Cassandra Object Mapper library.
and apart of those POJO you will have to create your DTO entity and annotate it with Cassitory annotations and it will be used to map the values to your Cassandra entities.
Here you have the annotations that you will have to use:
uk.co.caeldev.cassitory.entities.CassitoryEntity
uk.co.caeldev.cassitory.entities.Mapping
Using Prepared Statements and queries
with this repo you don’t have to create your Cassandra entities, just your DTO annotated with Cassitory annotations.
Here you have the annotations that you will have to use:
Welcome to your new page_hits_counter project and to the internet computer development community. By default, creating a new project adds this README and some template files to your project directory. You can edit these template files to customize your project and to include your own code to speed up the development cycle.
To get started, you might want to explore the project directory structure and the default configuration file. Working with this project in your development environment will not affect any production deployment or identity tokens.
To learn more before you start working with page_hits_counter, see the following documentation available online:
If you want to start working on your project right away, you might want to try the following commands:
cd page_hits_counter/
dfx help
dfx canister --help
Running the project locally
If you want to test your project locally, you can use the following commands:
# Starts the replica, running in the background
dfx start --background
# Deploys your canisters to the replica and generates your candid interface
dfx deploy
Once the job completes, your application will be available at http://localhost:4943?canisterId={asset_canister_id}.
If you have made changes to your backend canister, you can generate a new candid interface with
npm run generate
at any time. This is recommended before starting the frontend development server, and will be run automatically any time you run dfx deploy.
If you are making frontend changes, you can start a development server with
npm start
Which will start a server at http://localhost:8080, proxying API requests to the replica at port 4943.
Note on frontend environment variables
If you are hosting frontend code somewhere without using DFX, you may need to make one of the following adjustments to ensure your project does not fetch the root key in production:
setDFX_NETWORK to ic if you are using Webpack
use your own preferred method to replace process.env.DFX_NETWORK in the autogenerated declarations
Setting canisters -> {asset_canister_id} -> declarations -> env_override to a string in dfx.json will replace process.env.DFX_NETWORK with the string in the autogenerated declarations
This project is a work in progress and all feedback is appreciated.
The next features that are planned are:
Fancy Mode (display information about the whole callstack)
Performance Optimizations
Typing information
CONTRIBUTORS:
Thanks to everyone who has submitted an issue or thoughts on this project.
Special thanks to those who have submitted a PR to make this project better for everyone:
Mature platform with open APIs that provides a reliable, robust, and affordable core banking solution for financial institutions offering services to the world’s 2 billion underbanked and unbanked.
farmOS is a web-based application for farm management, planning, and record keeping. It is developed by a community of farmers, developers, researchers, and organizations with the aim of providing a standard platform for agricultural data collection and management.
Free and open database for farming and gardening knowledge. Their mission is to develop a community and tools for freely sharing plant knowledge locally and globally.
The Open Food Network is an online marketplace for local food. It enables a network of independent online food stores that connects farmers with individuals and local businesses.
Tania is a free and open source farm management software. You can manage your farm areas, farm reservoirs, farm tasks, inventories, and the crop growing progress. It is designed for any type of farms.
Bahmni is an Open Source hospital Management System focusing on poor/underserved and public hospitals in the developing world. It’s aimed to being a generic system which can be used for multiple diseases and hospitals in different countries.
ERPNext is a top-rated Open Source ERP (Enterprise Resource Planning). Among other features, it also offers a Healthcare module to manage patient data, appointments, lab tests and more. Originally a separate module named smarteCare, it’s now integrated in the core itself.
GNU Health is a Free/Libre project for health practitioners, health institutions and governments. It provides the functionality of Electronic Medical Record (EMR), Hospital Management (HMIS) and Health Information System (HIS).
Safecast is a global volunteer-centered Citizen Science project working to empower people with open data about their environments. They currently offer two datasets of radiation and air quality in cpm (count per minute) and μSv/h (micro-Sievert per hour).
Kolibri makes high quality education technology available in low-resource communities such as rural schools, refugee camps, orphanages, non-formal school systems, and prison systems. It does so by providing an offline application
Oppia is an online learning tool that enables anyone to create and share interactive activies.
In addition the core team also maintains a set of free and effective lessons that are targeted at learners who lack access to educational resources.
The Foundation for Environmental Monitoring is a nonprofit company developing open source products including hardware designed to help address issues related to water and soil
OpenEMS is a modular platform for energy management applications. It was developed around the requirements of controlling, monitoring and integrating energy storage systems together with renewable energy sources and complementary devices and services.
Safecast is a global volunteer-centered Citizen Science project working to empower people with open data about their environments. They currently offer two datasets of radiation and air quality in cpm (count per minute) and μSv/h (micro-Sievert per hour).
Oppia is an online learning tool that enables anyone to create and share interactive activies.
In addition the core team also maintains a set of free and effective lessons that are targeted at learners who lack access to educational resources.
OptiKey is an on-screen keyboard that is designed to help patients with Motor Neuron Disease (MND) interact with Windows computers. It can be used with eye-tracking devices, mouse or webcam.
At the current time it has also been translated into 24 different languages and estimates around 2000 regular users
A platform that allows information collection, visualization and interactive mapping, allowing anyone to submit information through text messaging using a mobile phone, email or web form.
This should help to give power to marginalized people.
The Open Food Network is an online marketplace for local food. It enables a network of independent online food stores that connects farmers with individuals and local businesses.
The Foundation for Environmental Monitoring is a nonprofit company developing open source products including hardware designed to help address issues related to water and soil
AutoFocus uses deep learning to identify the type of animal in “camera traps” photos. This frees up a lot of time for wildlife conservation efforts, for which this is often a major bottleneck.
The Foundation for Environmental Monitoring is a nonprofit company developing open source products including hardware designed to help address issues related to water and soil
Platform for making public freedom of information requests to public bodies. Alaveteli helps you lower the barriers that prevent citizens asking questions of those in power. Alaveteli has been implemented for 24 different countries
Reporting sexual assoult or professional sexual coercion can feel isolating – or worse, retraumatizing. To some it might also come with some risk.
Callisto wants to change the equation and empower survivors, provide options and allow disclosure in a way that feels save. Under its many functionalities, one of them is to securely connect victims of the same perpetrator to identify repeat offenders.
Serenata compiles public information of Brazilian politicians and analyses it using an AI. It will then also point out suspicious transactions and provide statistics.
Adaption for other countries is not planned, but supported by the maintainers.
Charity Base is an API that aggregates data from the 168,000 charities registered in England and Wales – potentially expanding to other countries in the future.
A collection and combination of multiple different tools for all possible communication means for Nonprofits. These include Auto-Response, Broadcast, Conference Line, Forwarder, Ringdowns, Surveys and more.